Mapping Xquery映射特定名称属性的值

Mapping Xquery映射特定名称属性的值,mapping,xquery,osb,name-value,Mapping,Xquery,Osb,Name Value,我试图在jdeveloper中创建一个xquery。我被它的一小部分卡住了。如果我能得到一些建议,那就太好了。 下面是我被卡住的部分 请求是: `<variables> <variable name="StartTime" value="01:00:00"/> <variable name= "EndTime" value="05:00:00"/> 我要映射的响应是一个具有两个值的单个元素,如下所示: <ns2:time ns2:startTim

我试图在jdeveloper中创建一个xquery。我被它的一小部分卡住了。如果我能得到一些建议,那就太好了。 下面是我被卡住的部分

请求是:

`<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。但我在这两个地方都只有开始时间。我需要某种方法,通过查看请求中的name值,可以正确地分配值

  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
                    ()
提前感谢。

您可以使用以下功能:

<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]指定的,您的尝试中没有括号。

不客气。请注意,当缺少变量时,属性将显示为空值。如果希望避免这种情况,可以在创建ns2:time时指定一个属性列表,在该列表中,只有当您拥有每个属性的数据时,才可以指定它们。