非常に複雑なXSLT1.0変換を行っています(現在、8つのXSLTパスを使用しています)。この8つのパスを1つのファイルにマージせずに結合したいと思います(これは複雑すぎます)。私の解決策は、パスを使用xsl:include
しexsl:node-set
てパスをマージし、一時的な結果を変数に格納することです。
しかし、私には1つの問題があります。私の変換パスは、ほとんどのノードをコピーし、特定の側面のみを変更します。したがって、すべてのパスで同じノードを処理する必要がありますが、異なる xsl:template
ノードを使用します。しかし、どうすればそれを行うことができますか?最初のパスの後で、他のXSLTスタイルシートのテンプレートを適用したいことをどのように伝えますか?
私が現在行っていることの非常に単純化された例(2つのXSLTパス):
ソース:
<h>something here</h>
XSLTパス1の後:
<h someattribute="1">something here</h>
XSLTパス2の後:
<h someattribute="1" somemoreattribute="2">something here, and even more</h>
私の現在のアプローチは、XSLTプロセッサを2回呼び出し、結果を一時的にディスクに保存することです。
xsltproc stylesheet1.xsl input.xml >temp.xml
xsltproc stylesheet2.xsl temp.xml >finalresult.xml