次の例では、<xsl:apply-imports>
を使ってコードの再利用の効率を上げる方法を説明します。 例では、次の 4 つのメイン ファイルを使用します。
ops.xml という XML ソース ファイル。 このデータ ファイルでは、
add
(+
)、sub
(-
)、およびmul
(*
) の 3 つの操作が定義されます。ops.xsl というメインの XSLT スタイル シート。 このファイルには、2 つの
<xsl:import>
要素を含む、操作のテンプレート規則が含まれます。 インポートされるスタイル シートは、指定されたデータ ソースで算術演算と文字列操作を実行します。arith.xsl というインポートされるスタイル シート。 この XSLT ファイルは、個々の
<op>
要素で算術演算を実行します。str.xsl という、別のインポートされるスタイル シート。 この XSLT ファイルは、独自の文字列操作を実行します。 ここでは、
add
(+
) を文字列の連結に使用します。たとえば、1+2
は12
になります。 同様に、mul
(*
) を逆方向の連結に使用します。1*2 は 21 になります。sub
(-
) は未定義の文字列操作であることに注意してください。
XML ファイル (ops.xml)
メインの XSLT ファイル (ops.xsl)
インポートされる XSLT ファイル (arith.xsl)
インポートされる XSLT ファイル (str.xsl)
出力
次のような出力になります。
Some binary operations
1+2 = 12 (from str.xsl)
1-2 = -1 (from arith.xsl)
1*2 = 21 (from str.xsl)
解説
最後にインポートされたスタイル シートのインポート優先順が最も高くなります。 この例では、str.xsl が最後にインポートされるので、arith.xsl よりインポート優先順位が高くなります。 インポートされたスタイル シートは両方とも、add
操作と mul
操作用のテンプレートを持っています。 str.xsl のテンプレートのみが呼び出されます。 ただし、str.xsl では sub 操作が定義されていないため、arith.xsl で定義されている sub
操作が使用されます。 次のように、メイン XSLT ファイル内で <xsl:import> 要素の順番を入れ替えるとします。
<xsl:import href="str.xsl"/>
<xsl:import href="arith.xsl"/>
その場合、出力は次のようになります。
Some binary operations
1+2 = 3 (from arith.xsl)
1-2 = -1 (from arith.xsl)
1*2 = 2 (from arith.xsl)
また、メインの XSLT ファイル (ops.xsl) 内の <op>
用のオーバーライドする側のテンプレート規則に <xsl:apply-imports/>
命令がない場合、出力は次のようになります。
Some binary operations
1+2 =
1-2 =
1*2 =
つまり、インポートする側のスタイル シート内のテンプレート規則は、インポートされるスタイル シート内の関連するテンプレート規則をオーバーライドします。 <xsl:apply-imports/>
命令を使用すると、これらのオーバーライドされたテンプレート規則を別の方法で再びアクティブにできます。