<xsl:template> 要素
特定の型とコンテキストのノードに対して必要な出力を生成するために再利用可能なテンプレートを定義します。
<xsl:template
name= Qname
match = Pattern
priority = number
mode = QName
</xsl:template>
属性
- name
展開される修飾名。 名前にプレフィックスが含まれている場合は、名前が出現する属性で有効になっている名前空間宣言を使って、プレフィックスが URI (Uniform Resource Identifier) 参照に展開されます。 名前のローカル部分および場合によっては null URI 参照から構成される展開名は、テンプレートの名前として使用されます。 既定の名前空間は、プレフィックスの付かない名前に対して使用されていません。<xsl:template>
要素がname
属性を持っている場合は、必須要件ではありませんが、match
属性も持つことができます。
- match
規則の適用対象となるソース ノードまたはノードを識別する パターン。<xsl:template>
要素がname
属性を持っていなければ、必ずmatch
属性を指定する必要があります。<xsl:template>
要素のコンテンツは、テンプレート規則が適用されるときにインスタンス化されるテンプレートです。
priority
テンプレートの優先順位番号。 一致するテンプレート規則のうち、優先順位が最も高いテンプレート規則より優先順位の低いものが適用対象から除外されます。 この値は、0 ~ 9 の実数 (正または負) であり、省略可能なマイナス記号 (-) が先頭に付いた生成番号と一致している必要があります。 既定の優先順位は、次のように計算されます。| で区切られた複数の選択肢がパターンに含まれている場合、そのパターンは、選択肢ごとに 1 つのテンプレート規則が存在するテンプレート規則の集合と同等に扱われます。
パターンの形式が child 軸指定子または attribute 軸指定子が前に付いた Qname である場合、あるいは child 軸指定子または attribute 軸指定子が前に付いたリテラル処理命令である場合、優先順位は 0 になります。
パターンが child 軸指定子または attribute 軸指定子が前に付いた名前である場合、優先順位は -0.25 になります。
それ以外の場合で、パターンが child 軸指定子または attribute 軸指定子が前に付いたノード テストのみから構成される場合、優先順位は -0.5 になります。
それ以外の場合、優先順位は 0.5 になります。
したがって、最も一般的な種類のパターン (特定の型と特定の展開名を持つノードをテストするパターン) は、優先順位が 0 になります。 その次に特殊性の低い種類のパターン (特定の型と特定の名前空間 URI が含まれた展開名を持つノードをテストするパターン) は、優先順位が -0.25 になります。 それより特殊性の低いパターン (特定の型を持つノードをテストするだけのパターン) は、優先順位が -0.5 になります。 最も一般的な種類のパターンより特殊性が高いパターンは、優先順位が 0.5 になります。
- mode
モード値。 この値を指定することで、要素を複数回処理し、毎回違う結果を生成することができます。<xsl:template>
は、match
属性を持っていない限り、mode
属性を持つことはできません。mode
属性を持っている<xsl:apply-templates>
要素は、同じ値のmode
属性を持っている<xsl:template>
要素のテンプレート規則にのみ適用されます。mode
属性を持っていない<xsl:apply-templates>
要素は、mode
属性を持っていない<xsl:template>
要素のテンプレート規則にのみ適用されます。
要素情報
解説
テンプレートは、XML のフラグメントを生成するだけであり、完全な XML ドキュメントを生成する必要はありません (transformNodeToObject
を使用しない限り、ルート テンプレートの場合も同様です)。 テンプレートには、囲まれていないテキストまたはテンプレートで定義されている複数のドキュメント要素を含めることができます。 そのため、アプリケーションでさらに加工できる未加工のテキストと XML フラグメント (たとえば HTML ページに挿入される HTML フラグメントなど) を容易に生成できます。
name
属性の値は、展開されている QName です。 名前にプレフィックスが含まれている場合は、名前が出現する属性で有効になっている名前空間宣言を使って、プレフィックスが URI 参照に展開されます。 名前のローカル部分および場合によっては null URI 参照から構成される展開名は、テンプレートの名前として使用されます。 既定の名前空間は、プレフィックスの付かない名前に対して使用されていません。
<xsl:template>
要素が name
属性を持っている場合は、必須要件ではありませんが、match
属性も持つことができます。 <xsl:call-template>
要素は名前でテンプレートを呼び出すため、呼び出されるテンプレートを識別する name
属性を持っている必要があります。 <xsl:apply-templates>
と異なり、<xsl:call-template>
は現在のノードまたは現在のノード リストを変更しません。
スタイル シートに同じ名前のテンプレートが複数含まれていると、エラーが発生します。
例
このテンプレート規則には、<stock>
要素を指定し、STYLE="font-weight:bold"
属性を備えた出力 <DIV>
要素を生成するパターンが含まれています。
XML ファイル (portfolio.xml)
XSLT ファイル (templ.xsl)
出力
これは書式付き出力です。
Symbol: ZCXM, Price: 28.875
Symbol: ZFFX, Price: 92.250
Symbol: ZYSZ, Price: 20.313