0

在过去的一年中,我们一直在运行我编写的批处理脚本,以使用 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/commandlinehttp://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");

我不知道还能尝试什么。如果有人能看到这里出了什么问题,我将不胜感激任何指示!

4

1 回答 1

0

您有自己的 Saxon-EE 许可证,还是依赖 oXygen 附带的许可证?oXygen 许可证不涵盖在 oXygen 本身之外使用 Saxon-EE(因此它不涵盖从命令行运行 Saxon 的方式)。也许您在 oXygen 处理 Saxon 激活的方式中发现了一个漏洞,该漏洞在早期版本中有效,但后来在 oXygen 或 Saxon 中已得到修复。

于 2016-09-12T23:17:36.687 回答