我想重复 XProc 子管道给定的次数。(在我的用例中,子管道由一个执行步骤组成,它在先前创建的 .tex 文件上运行 LaTeX)
我的代码的简化版本如下所示,到目前为止没有结果:
<p:declare-step version="1.0"
xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step">
<p:option name="latex-exec" select="'uri/latex'"/>
<p:option name="latex-repeat" select="3"/>
<p:option name="tmp-path" select="'uri/tmp/'"/>
<p:option name="tmp-file" select="'tmp'"/>
<!-- pre-processing -->
<p:for-each>
<p:iteration-source select="(1 to $latex-repeat)"/>
<p:exec result-is-xml="false">
<p:with-option name="command" select="$latex-exec"/>
<p:with-option name="args" select="string-join(('-interaction=nonstopmode','-halt-on-error','-output-format=pdf',concat('-output-directory=',$tmp-path),concat($tmp-path,$tmp-file,'.tex')),' ')"/>
<p:input port="source">
<p:empty/>
</p:input>
</p:exec>
</p:for-each>
我不知道 p:iteration-source 元素中的 XPath-2.0 表达式是否存在问题。但是,以下工作并给出正确的结果“消息:3”:
<cx:message>
<p:with-option name="message" select="count((1 to $latex-repeat))"/>
<p:input port="source">
<p:empty/>
</p:input>
</cx:message>
我的 exec-step 在 for-each 循环之外进行了测试并且可以工作。我在 Oxygen 16.0 下使用 Calabash。