来自 eXist-db 中 XProcxq 模块的错误

Error from XProcxq module in eXist-db

我们是 运行 eXist-db 3.0 版,想在其中试用 运行 XProc。

我们发现 XProcxq 模块现在是 eXist 的一部分:http://exist-db.org/exist/apps/doc/extensions.xml#module_xprocxq

但是,在尝试使用它时,我们遇到了以下错误,想知道是否有人对我们可能出错的地方提出了建议?

按照链接到的模块页面顶部的说明,我们将模块添加到 conf.xml 文件并重新启动了 eXist。 (这可能是我们出错的地方,但这是我们的猜测)

这是我们在 conf.xml 中添加的模块的样子:

<module uri="http://xproc.net/xproc" class="org.exist.xquery.modules.xprocxq.XProcxq/>

这是我尝试使用的简单启动 XQuery:

xquery version "1.0" encoding "UTF-8";

import module namespace const = "http://xproc.net/xproc/const";
import module namespace xproc = "http://xproc.net/xproc";
import module namespace u = "http://xproc.net/xproc/util";

declare variable $local:XPROCXQ_EXAMPLES := "/db/examples"; (:CHANGE ME:)  

let $stdin :=document{<test>Hello World</test>}

let $pipeline :=document{
                    <p:pipeline name="pipeline"
                                xmlns:p="http://www.w3.org/ns/xproc"
                                xmlns:c="http://www.w3.org/ns/xproc-step">
                        <p:identity/>
                    </p:pipeline>
                }

return
     xproc:run($pipeline,$stdin)

错误如下: 加载模块 xproc 时发现错误:加载模块 'http://xproc.net/xproc' from 'http://xproc.net/xproc'

时出现 IO 异常

我将你的问题提交给了 exist-open 邮件列表(我鼓励你加入以解决未来的 eXist-db 问题),并 it appears XProc support in eXist is currently between a rock and a hard place. The xprocxq library you mentioned is woefully underdeveloped (abandoned by its original creator), and the much better developed Calabash module is incompatible with the current version of Saxon used in eXist, due to a dependency on that version of Saxon. I'd welcome you to join exist-open 进一步讨论。也许还有一些其他解决方法适合您。

需要重建。

根据http://exist-db.org/exist/apps/wiki/blogs/eXist/eXist30RC1

EXPath packages that incorporate Java libraries may no longer work with eXist 3.0 and may need to be recompiled for our API changes; packages should now explicitly specify the eXist versions that they are compatible with.

我正在更新 XProc EXPath 模块。

eXist 的 XMLCalabash 模块现已针对更新版本的 eXist 和 Calabash 进行了重建,应该可以与 eXist 3.0.RC1 一起使用。

为 eXist 3.0.RC1 构建您自己的 Jar 包 运行:

$ git clone https://github.com/eXist-db/eXist-XMLCalabash.git
$ cd eXist-XMLCalabash
$ rm -rf src/test
$ mvn package

Jar 然后在 target/ 文件夹中。你应该把它复制到$EXIST_HOME/lib/user修改$EXIST_HOME/conf.xml加载模块然后重启eXist。

已更新

eXist 的 XML Calabash 模块现在也有一个 PR,因此它将支持即将推出的 eXist 3.0.RC2 - https://github.com/eXist-db/eXist-XMLCalabash/pull/2

但是,在 eXist 3.0.RC2 发布之前,您无法远程构建它。