在 eXist 4.4/XQuery 3.1 中,我使用transform:transform()
. 在转换中,我将一个参数传递给 XSL 转换,以供 Saxon 用于访问数据库中的信息。
<param name="paramSaxondatapath" value="xmldb:exist:///db/apps/deheresi/data/"/>
一切正常:Saxon 从 eXist-DB 中的文档中检索所需的节点,并且 XSL 转换成功。
现在,我正在尝试从eXist-DB 环境(本地驱动器,使用 Oxygen)外部执行相同的操作。因此,在 XSLT 文档中,我对参数进行了硬编码:
<xsl:param name="paramSaxondatapath">xmldb:exist:///db/apps/deheresi/data/</xsl:param>
然而,当我在本地关闭这个 XSLT 文件(在 Oxygen、本地 XSLT 文件、Saxon-HE 9.6.0.7 中)时,Saxon 向我抛出了一个异常unknown protocol: xmldb
FODC0002: Exception thrown by URIResolver:
Malformed URL
xmldb:exist:///db/apps/deheresi/data/bibliography.xml
(base file:/Users/foo/Desktop/De_Heresi/deheresi_TEI/fo_dep_single.xsl):
unknown protocol: xmldb
考虑到这是以相同的方式传递给撒克逊人(即包裹在 中doc(concat(paramSaxondatapath,'somefile.xml')
),我很惊讶这两次的反应方式都不同。
我应该使用不同的 URI 吗?
非常感谢。
编辑:奇怪的是,如果我使用命令行进行转换(即不是由氧气触发),撒克逊人会接受它并执行转换。好像和氧气有关系……