Скрипт для нескольких индексов с использованием xquery
Здравствуйте, я пытался получить все значения тегов XML, но у меня возникли проблемы, например, я могу получить все значения тегов, если я вручную добавлю индекс как [1],[2],.... но я хочу, чтобы все значения тегов со всеми индексами,
<Menu>
<Titles>
<Title LCID="1033" Text="ISV" />
</Titles>
<MenuItem Url="http://www.microsoft.com">
<Titles>
<Title LCID="1033" Text="New Window" />
</Titles>
</MenuItem>
<MenuSpacer />
<!-- A horizontal drop down menu spacer -->
<SubMenu>
<Titles>
<Title LCID="1033" Text="ISV Tests" />
</Titles>
<MenuItem Url="http://www.microsoft.com" WinMode="2">
<Titles>
<Title LCID="1033" Text="Modeless Dialog" />
</Titles>
</MenuItem>
<MenuSpacer />
<MenuItem Url="http://www.microsoft.com" WinMode="1">
<Titles>
<Title LCID="1033" Text="Modal Dialog" />
</Titles>
</MenuItem>
<MenuSpacer />
<MenuItem JavaScript="alert('test');">
<Titles>
<Title LCID="1033" Text="Custom JavaScript" />
</Titles>
</MenuItem>
</SubMenu>
</Menu>
<Menu>
<Titles>
<Title LCID="1033" Text="c360 Tools" />
</Titles>
Мой Xquery работает, если я даю индексы вручную
epvalue('(меню / Титулы / Заголовок /@ Текст)[1]','VARCHAR (макс)')
дает мне "ISV", но я хочу все значения тегов, любая помощь
Полный запрос:
WITH ConvOrg As
(
SELECT CAST(ConfigXML As xml) As x FROM IsvConfig
)
SELECT
e.p.value('(@Text)','varchar(max)') As Menu,
e.p.value('(../../../../../@Text)[1]','varchar(max)') As SubMenu
FROM ConvOrg
CROSS APPLY
ConvOrg.x.nodes('Menu/SubMenu/MenuItem/Titles/Title') As e(p)