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]), которые отсутствовали в ваших попытках.

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