0

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

具有以下 XML

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

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

  • (/root/foo | /root/bar)[1] -> 你好

  • (/root/foo | /root/bar)[last()] -> 世界

  • (substring(/root/foo, 2, 4) | /root/bar)[1]- >你好

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

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

  • (/root/foo | substring(/root/bar, 2, 4))[1]-> orld(期待你好)

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

呈现结果是否有原因?这些是否符合 XPath 2.0 规范?

4

2 回答 2

3

TIBCO BusinessWorks 仅与 XPath 1.0 兼容。支持某些 XPath 2.0 函数。(来源: http ://support.tibco.com 上的 FAQ1-7BXZE5 )

回答你的两个问题:

  • “给出结果有原因吗?”

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

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

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

于 2013-03-07T12:49:42.290 回答
1

不,最后两个结果不符合规范。如果联合运算符的操作数是字符串而不是节点,那么这是一个类型错误,在最后两个示例中就是这种情况。

于 2013-02-28T16:46:22.240 回答