在过去的一年中,我们一直在运行我编写的批处理脚本,以使用 Saxon 从 Windows 命令行调用一系列 XQuery 更新。在我们使用 oXygen 16 时它运行良好,但是在我们部门的所有机器都升级到 oXygen 17.1 之后,脚本现在抛出了一个我似乎无法修复的错误。任何想法将不胜感激。
这曾经在安装 oXygen 16 时起作用:
java -cp "C:\Program Files\Oxygen XML Editor 16\lib\saxon9ee.jar" net.sf.saxon.Query -update:on -t -q:"C:\Users\%USERNAME%\Documents\SVN Working Copies\trunk\rbscXSL\Locations2015\AbID2dsc-items.xq"
我已经确认 .jar 文件位于相同的相对位置(oXygen 版本号是路径的唯一更改)并且名称与以前相同。然而,在将类路径更新为“C:\Program Files\Oxygen XML Editor 17\lib\saxon9ee.jar”后,脚本会引发以下错误:
来自 Saxonica 的 Saxon-EE 9.6.0.7J
Java 版本 1.8.0_92
java.lang.UnsupportedOperationException:此 Saxon 配置不支持 XQuery 更新
在 net.sf.saxon.s9api.XQueryCompiler.setUpdatingEnabled(XQueryCompiler.java:212)
在 net.sf.saxon.Query.doQuery(Query.java:281)
在 net.sf.saxon.Query.main(Query.java:111)
查询期间出现致命错误:java.lang.UnsupportedOperationException:此 Saxon 配置不支持 XQuery 更新
文件名、目录名或卷标语法不正确。
我的机器上安装了 Java 8。我还确保从 oXygen 编辑器中调用 XQuery 更新仍然有效。
在阅读了http://www.saxonica.com/documentation9.6/index.html#!using-xquery/commandline和http://www.saxonica.com/documentation9.6/index.html#!conformance/ update,我添加了 -tree:linked 标志和 -qversion:1.0 标志(它们导致相同的错误消息):
java -cp "C:\Program Files\Oxygen XML Editor 17\lib\saxon9ee.jar" net.sf.saxon.Query -qversion:1.0 -tree:linked -update:on -t -q:"C:\Users\%USERNAME%\Documents\SVN Working Copies\trunk\rbscXSL\Locations2015\AbID2dsc-items.xq"
根据文档,如果设置了 -update:on 标志,则 XQuery Update 应该运行,并且使用 doc() 或 collection() 函数读取 XML,情况也是如此——这些是我的 XQuery 文件中的变量:
declare variable $EAD as document-node()* := doc("sample_input.xml");
declare variable $ITEMS as document-node()* := doc("sample_input.AbID.xml");
我不知道还能尝试什么。如果有人能看到这里出了什么问题,我将不胜感激任何指示!