Скрипт для нескольких индексов с использованием 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)

0 ответов

Другие вопросы по тегам