Инструкция Xquery для получения значения для определенного имени
Я пытаюсь написать xquery, чтобы получить значение для определенного имени. Ниже приводится полезная нагрузка запроса: т.е., если Name ="ID", то получить "значение" для этого тега (т.е.1000000000.) Если имя = "пользователь" получить "Значение" для этого тега (т. е. "США").
<not:Items xmlns:v5="http://www.example.com"
xmlns:com="http://commom.com
xmlns:not="http://services.not.com"
xmlns:com1="http://common1.com">
<not:Array>
<com1:Item>
<v5:List>
<com:extensionsItem>
<com:Name>ID</com:Name>
<com:Value>1000000000</com:Value>
</com:extensionsItem>
<com:extensionsItem>
<com:Name>User</com:Name>
<com:Value>US</com:Value>
</com:extensionsItem>
</v5:List>
</com1:Item>
</not:Array>
</not:Items>
Я попробовал варианты ниже:
<ns2:ID>{fn:data($Items/not:Array/com1:Item/v5:List/com:extensionsItem[1]/com:Value)}<ID>
Это утверждение работает. Но я не могу гарантировать, что ID всегда будет первым элементом в массиве List.Так я хочу оператор, который будет работать, даже если ID входит в любое другое место в массиве, и я могу получить значение. заранее спасибо
1 ответ
Решение
Я думаю, что вы просто хотите применить предикат $Items/not:Array/com1:Item/v5:List/com:extensionsItem[com:Name = 'ID']/com:Value