我只想通过 XProc 执行我的转换,而不是使用批处理/shell 脚本。
我的转换过程是输入和输出文档的简单串联 - 所以转换 1 的输出是转换 2 的输入。转换 2 的输出是转换 3 的输入,依此类推。
此代码描述了一个示例转换:
<p:xslt name="Transformation1">
<p:input port="source">
<p:document href="input.xml"/>
</p:input>
<p:input port="stylesheet">
<p:document href="trans1.xsl"/>
</p:input>
<p:input port="parameters">
<p:empty/>
</p:input>
</p:xslt>
<p:store href="output1.xml"/>
<p:xslt name="Transformation2">
<p:input port="source">
<p:pipe step="Transformation1" port="result"/>
</p:input>
<p:input port="stylesheet">
<p:document href="trans2.xsl"/>
</p:input>
<p:input port="parameters">
<p:empty/>
</p:input>
</p:xslt>
<p:store href="output2.xml"/>
它起作用了,另外我得到了所有临时结果文档来仔细检查每个 XSLT 脚本的功能。处理复杂的多重转换会减慢速度——因为 XProc 脚本总是从头开始。但我只想在转换 4 处修复一些东西。通常(使用批处理/shell)我只是删除转换 4 的输出,修复 XSLT 脚本并代表 if-test 跳过所有先前的转换(例如,如果 output3.xml 存在转到转换4)。如何在 XProc 脚本中执行此操作?
XPath 模式是:not(doc-available(‘output1.xml’))
- 与 xsl 结合使用:如果它在 XSLT 中工作。我尝试使用 ap:choose - 但我没有 p:otherwise 的输出管道,并且该过程总是失败。所以我猜使用 p:choose 不会提出所需的解决方案?
有任何想法吗?
亲切的问候奥利弗