【问题标题】:TIBCO BusinessWorks XPath union operatorTIBCO BusinessWorks XPath 联合运算符
【发布时间】:2013-02-14 22:32:27
【问题描述】:

我不完全理解使用 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()] -> 你好(预期的)

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

【问题讨论】:

    标签: xpath tibco businessworks


    【解决方案1】:

    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 引擎评估的。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我想你的意思是最后四个(它们都有一个子字符串函数)。如果我理解得很好,问题是最后四个表达式不应该被允许。
    猜你喜欢
    • 2012-01-29
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    相关资源
    最近更新 更多