【问题标题】:Is XPath 3.1 100% upwardly compatible with XPath 2.0?XPath 3.1 是否 100% 向上兼容 XPath 2.0?
【发布时间】:2020-10-07 18:57:30
【问题描述】:

我们使用 Saxon(从 Java 调用它)来执行查询。当我们升级到 XPath 3.1 时,它会像以前一样处理为 XPath 2.0 编写的所有查询吗?或者某些查询的返回内容是否有变化?

我问是因为如果它 100% 向上兼容,我们只需将现有的 XPath 2.0 代码更改为使用 XPath 3.1。但如果不同,那么我们需要添加 XPath 3.1 作为新的数据源类型。

我们确实将 XPath 1.0 作为不同的数据源,因为 XPath 1.0 和 2.0 对某些查询返回的内容有所不同。

【问题讨论】:

    标签: xpath saxon xpath-2.0


    【解决方案1】:

    你可以通过遵循这个链条来保证这个前提:

    XPath-3.0 向后兼容 XPath-2.0

    本附录总结了 XPath 3.0 和 [XML 路径语言 (XPath) 版本 1.0] 之间的不兼容性。在上述每种情况下,XPath 3.0 处理器都与 XPath 2.0 处理器兼容。

    XPath-3.1 向后兼容 XPath-3.0。

    本建议书规定了XPath 3.1 版,它是XPath 3.0 版的完全兼容扩展。

    【讨论】:

      【解决方案2】:

      XPath 3.1 允许数组、映射和函数的新表达式,因此如果您有一个测试套件检查 XPath 2 表达式中的某些语法错误,您可能会发现它们在 XPath 3.1 中是允许的并且不会给出错误。

      我记得转换为合法语法的主要错误是foo/[bar],它在最后一步中在XPath 3.1中构造了一个数组。

      【讨论】:

      • 我不担心以前的错误查询现在可以正常工作,只是 2.0 有效的查询在 3.1 中的行为相同。看起来他们这样做了,这是个好消息。
      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 2021-11-06
      • 2020-11-15
      • 2014-10-16
      • 1970-01-01
      • 2016-03-30
      • 2017-12-08
      • 1970-01-01
      相关资源
      最近更新 更多