バッチ/シェル スクリプトを使用する代わりに、XProc を介して変換を実行したいだけです。
私の変換プロセスは、入力ドキュメントと出力ドキュメントの単純な連結であるため、変換 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 で何かを修正したいだけです。通常は (バッチ/シェルを使用して) 変換 4 の出力を削除し、XSLT スクリプトを修正し、if-test の代わりに以前のすべての変換をスキップします (例: output3.xml が存在する場合)。後藤変換 4)。XProc スクリプトでこれを行う方法は?
XPath パターンは次のとおりnot(doc-available(‘output1.xml’))
です。ap:choose を使用しようとしましたが、p:otherwise の出力パイプラインがなく、プロセスは常に失敗します。p:choose を使用しても、必要な解決策が得られないと思いますか?
何か案は?
敬具 オリバー