<xsl:call-template> の例
次の例では、<xsl:call-template>
要素を使って、モジュール方式で XSLT を変換します。 この例では、次の 3 つのメイン ファイルを使用します。
topic.xml という XML ソース ファイル。 このファイルは、刊行された書籍のトピックを表しています。
topic.xsl というメイン XSLT ファイル。 このファイルは、表示される情報を制御します。
ui.xsl という呼び出される XSLT ファイル。 このファイルは、情報の表示方法を決定します。
XML ファイル (topic.xml)
メイン XSLT ファイル (topic.xsl)
コンポーネント XSLT ファイル (ui.xsl)
出力
書式付き出力を次に示します。
My Topic
First Paragraph
The first para has both name and title.
Second Paragraph
the second para has a title but no name.
Third para has neither name nor title.
これはプロセッサ出力です。
<H2 CONTENTEDITABLE="true">My Topic</H2>
<P>
<DIV STYLE="font-size:16;
font-family:Arial;
font-weight:bold;
font-style:italic"
CONTENTEDITABLE="true">First Paragraph<DIV>
<SPAN CONTENTEDITABLE="true">
The first para has both name and title.
</SPAN>
</P>
<P>
<DIV STYLE="font-size:16;
font-family:Arial;
font-weight:bold;
font-style:italic"
CONTENTEDITABLE="true">Second Paragraph<DIV>
<SPAN CONTENTEDITABLE="true">
The second para has a title but no name.
</SPAN>
</P>
<P>
<SPAN CONTENTEDITABLE="true">
The third para has neither name nor title.
</SPAN>
</P>
解説
topic.xsl というメイン XSLT ファイルが表示される情報を制御します。 このファイルは、<meta>
要素のコンテンツを非表示にし、項目の表示順を制御します。 また、ui.xsl というコンポーネント XSLT ファイルで定義されているテンプレート規則を呼び出します。
ui.xsl ファイルには、最初の XSLT ファイルから呼び出すことができる名前付きテンプレート規則のみが含まれています。 個々の名前付きテンプレート規則が $value
と $editable
という 2 つの入力パラメーターを取り、HTML 出力を生成することで、通常の関数と同じように動作します。 $value
パラメーターでは、表示されるテキストを渡します。$editable
では、出力テキストを編集できるかどうかを決定します (Internet Explorer を使用している場合)。 ただし、通常の関数と異なり、名前付きテンプレート規則の入力パラメーターの順序は、呼び出し側のテンプレート規則で指定されている順序と同じでなくてもかまいません。
テンプレート規則は、ソース XML ドキュメントで定義されているノードとは関係がない点に注意してください。 したがって、ui.xsl ファイルが、他のすべての XSLT ファイルから呼び出すことができる汎用の UI ライブラリを作成する方法の例になります。