Xquery для сопоставления значения определенного атрибута имени
Я пытаюсь создать xquery в jdeveloper . Я застрял в небольшой части этого. Было бы здорово, если бы я получил несколько предложений. Ниже часть, в которой я застрял
Запрос:
`<variables>
<variable name="StartTime" value="01:00:00"/>
<variable name= "EndTime" value="05:00:00"/>
Ответ, который я хочу отобразить, представляет собой один элемент с двумя значениями, как показано ниже:
<ns2:time ns2:startTime="01:00:00" ns2:endTime="05:00:00"/>
Ниже приведен xquery, который я пробовал. Но я получаю только время начала в обоих местах. Я хочу, чтобы каким-то образом я мог правильно назначить значения, глядя на значение имени в запросе.
if (fn:data($Prefereces/ns1:variables/ns1:variable/@name="StartTime")or fn:data($Prefereces/ns1:variables/ns1:variable/@name="EndTime")) then
( <ns2:time ns2:startTime="{fn:data($Prefereces/ns1:variables/ns1:variable/@value)}" ns2:endTime="{fn:data($Prefereces/ns1:variables/ns1:variable/@value)}">
</ns2:time>)
else
()
Заранее спасибо.
1 ответ
Решение
Вы можете использовать это:
<ns2:time ns2:startTime="{fn:data($Prefereces/variables/variable[@name = 'StartTime']/@value)}" ns2:endTime="{fn:data($Prefereces/variables/variable[@name = 'EndTime']/@value)}"/>
Обратите внимание, что ns2
Префикс должен быть определен заранее.
Предикаты XQuery указываются в квадратных скобках ([condition]
), которые отсутствовали в ваших попытках.