【发布时间】:2015-07-24 17:23:12
【问题描述】:
我正在尝试使用 XQuery/XPath 3.0 中的 format-number 函数。
根据Saxon documentation,从 v9.3-9.4 开始支持。
我正在使用 Saxon-EE 9.5:
<dependency>
<groupId>com.saxonica</groupId>
<artifactId>Saxon-EE</artifactId>
<version>9.5.1-3</version>
</dependency>
一个非常简单的测试抛出一个异常,错误如下:
@Test
public void testFormatNumber() throws SaxonApiException {
Processor proc = new Processor(false);
XQueryCompiler comp = proc.newXQueryCompiler();
XQueryExecutable exp = comp.compile("format-number(number('123.4'),'#.00000000')");
}
这会引发以下错误:
Error on line 1 column 0
XPST0017 XQuery static error near #...(number('123.4'),'#.00000000')#:
System function format-number#2 is not available with this host language/version
这可以使用 Saxon-HE-9.6.0-4,但我需要 EE 版本来进行架构验证,而 Saxon-EE 9.5.1-3 是我们拥有许可的版本。
Saxon-EE 有什么解决方案吗?是否有其他成熟的库支持 XQuery 3.0 和模式验证?
【问题讨论】:
-
如果您想使用 XQuery 3.0,那么首先要尝试使用如下查询:
comp.compile("xquery version \"3.0\"; format-number(number('123.4'),'#.00000000')");。我认为在这种情况下,Saxon 9.5 EE 会将您的查询视为 XQuery 3.0 查询。 -
谢谢;这本身并不能解决问题,但结合@flafoux 的建议它可以工作!
标签: java xpath saxon xquery-3.0