我不完全理解我在使用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规范?
答案 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 1.0引擎进行评估的。
答案 1 :(得分:1)
不,最后两个结果不符合规范。如果union运算符的操作数是字符串而不是节点,则是类型错误,这是前两个示例中的情况。