我正在尝试将调用 Saxon(8.9 版)的批处理文件转换为 XProc 管道(Calabash)。这是我的批处理调用:
java -jar saxon8.jar -o out.xml in.xml style.xsl +config=config-file.cfg
参数 config 在样式表中以这种方式定义:
<xsl:param name="config" as="document-node()"/>
XProc 部分如下所示:
<p:load name="configLoad">
<p:with-option name="href" select="'config-file.cfg'"/>
</p:load>
<p:xslt name="config">
<p:input port="source">
<p:document href="in.xml"/>
</p:input>
<p:input port="parameters">
<p:inline>
<c:param name="config">
<p:pipe port="result" step="configLoad"/>
</c:param>
</p:inline>
</p:input>
<p:input port="stylesheet">
<p:document href="style.xsl"/>
</p:input>
</p:xslt>
错误信息是这样的:
变量 $config 的值的必需项类型是 document-node();提供的值具有项目类型 xs:string
我知道该<p:exec>
步骤,但我不想使用它,因为稍后将由其他 XSLT 转换生成配置文件。它也应被其他 XProc 步骤重用。
是否可以使用正确的参数类型调用 XSLT 样式表?谢谢你的帮助!