TIBCO BusinessWorks XPath联合运营商

时间:2013-02-28 16:24:40

标签: xpath tibco businessworks

我不完全理解我在使用XPath union运算符时看到的行为。

拥有以下XML

<root>
    <foo>hello</foo>
    <bar>world</bar>
</root>

我们为不同的XPath表达式得到了这些结果

  • (/root/foo | /root/bar)[1] - &gt;喂

  • (/root/foo | /root/bar)[last()] - &gt;世界

  • (substring(/root/foo, 2, 4) | /root/bar)[1] - &gt; ELLO

  • (substring(/root/foo, 2, 4) | /root/bar)[last()] - &gt;世界

到目前为止,它们是直观的结果,但......

  • (/root/foo | substring(/root/bar, 2, 4))[1] - &gt; orld (预计你好)

  • (/root/foo | substring(/root/bar, 2, 4))[last()] - &gt; 你好(预期orld)

是否有理由提出结果?这些是否符合XPath 2.0规范?

2 个答案:

答案 0 :(得分:3)

TIBCO BusinessWorks仅适用于XPath 1.0。支持一些XPath 2.0功能。 (来源:http://support.tibco.com上的FAQ1-7BXZE5)

回答你的两个问题:

  • “是否有理由提出结果?”

是。 XPath 1.0联合结果是不可预测的。一个好的规则:即使对于简单的情况,也不应该依赖于BusinessWorks中的Union订单。

  • “这些是否符合XPath 2.0规范?”

结果不符合XPath 2.0规范,但您的查询是使用XPath 1.0引擎进行评估的。

答案 1 :(得分:1)

不,最后两个结果不符合规范。如果union运算符的操作数是字符串而不是节点,则是类型错误,这是前两个示例中的情况。