如何在 Saxon 中使用 XPath 3.1?

How to use XPath 3.1 in Saxon?

我目前使用的是 XPath 3.1 语法,但出于某种原因 Saxon 输出错误:

To use XPath 3.1 syntax, you must configure the XPath parser to handle it

我该怎么做?

非常感谢!!!

如果您使用的是 s9api API,请使用 XPathCompiler.setLanguageVersion("3.1")

如果您使用的是 JAXP,那可能不是个好主意,因为 JAXP XPath API 无法处理 XPath 3.1 数据类型的丰富性;但如果必须,请将 XPath 对象转换为 net.sf.saxon.xpath.XPathEvaluator;然后调用 getStaticContext().setXPathLanguageLevel().

在 Saxon 9.7 中,默认支持的 XPath 语言级别是 3.0,因为这是已达到推荐状态的最新 W3C 规范。

更新

在 Saxon 9.8 中,XPath 3.1 是默认值。

对于 XSLT 和 Saxon-HE 9.7.0.3J,它通过使用 -xsltversion:3.0 命令行选项或文档元素的 version="3.0" 属性来工作。