【问题标题】:Xquery to map the value of a specific name attributeXquery 映射特定名称属性的值
【发布时间】:2017-01-23 15:51:42
【问题描述】:

我正在尝试在 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。但我只得到两个地方的开始时间。我想要某种方式来正确分配查看请求中名称值的值。

  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
                    ()

提前致谢。

【问题讨论】:

    标签: mapping xquery osb name-value


    【解决方案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]) 指定的,您的尝试中没有使用。

    【讨论】:

    • 不客气。请注意,当缺少变量时,属性将显示为空值。如果你想避免这种情况,你可以在创建ns2:time 时指定一个属性列表,只有当你有数据时才能指定每个属性。
    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多