私は現在、意図した出力を得るために2つのスタイルシートを使用しています。最初のスタイルシート(pass1.xsl)は実際の作業を行い、2番目のスタイルシート(pass2.xsl)は軽い書式の更新を提供しながら重複を削除します。XSLT:スタイルシートの統合
私の質問は、単一のスタイルシート内で両方のアクションを実行できるかどうかです。
私はコンテンツを見ているときに、両方のスタイルシートにテンプレートの一致が含まれているため、xsl:関数を使って感想を得ることはできません。 IE:
pass1.xsl:
<xsl:template match="xs:complexType">
<xsl:param name="prefix" />
<xs:complexType name="{my:updateName($prefix, @name)}">
<!-- insert xs:sequence ONLY if the child is NOT xs:complexContent -->
<xsl:choose>
<xsl:when test="*[name()='xs:complexContent']">
<xsl:apply-templates select="node()" />
</xsl:when>
<xsl:otherwise>
<xs:sequence>
<xsl:apply-templates select="node()" />
</xs:sequence>
</xsl:otherwise>
</xsl:choose>
</xs:complexType>
<xsl:apply-templates select=".//xs:element" />
</xsl:template>
pass2.xsl:
<xsl:template match="xs:complexType">
<xsl:copy>
<xsl:apply-templates select="*|@*"/>
</xsl:copy>
</xsl:template>
繰り返しに - 目標は、最終的な結果を生成する唯一のスタイルシートを実行することです。 2つを走らせるのは難しいことではありませんが、しなければならないのはうれしいでしょう。元の&にコピー/貼り付けをしていますか、それとも私が見ているはずのものを輸入していますか?誰かが間違ってサポートファイルを削除する可能性を最小限に抑えるため、1つのスタイルシートファイルしか持たないことをお勧めします。