<xsl:template> |
出力テンプレートを定義します。<xsl:template match="x" を開始するテンプレートでは、該当する要素の変換が定義されます。<xsl:template name="x" を開始するテンプレートでは、テンプレートが呼び出されたときに必ず処理される一連の出力要素が定義されます。すべての <xsl:template> 要素には、match 属性または name 属性を定義する必要があります。一般的ではありませんが、match と name の両方が定義された <xsl:template> 要素を作成することもできます。
カテゴリ
トップレベル要素
必須の属性
なし。
省略可能な属性
match このテンプレートを呼び出す要素を定義するパターン。たとえば、 < xsl:template match= " xyz " > は、 < xyz > 要素を処理するテンプレートを定義します。 name このテンプレートの名前を指定する属性。名前が指定されたテンプレートは、 < xsl:call-template > 要素により呼び出されます。 mode このテンプレートのモードを定義する属性。モードは、特定の目的のために特定のテンプレートを作成できる便利な構文です。たとえば、 mode= " toc " を指定して < xsl:template > を記述し、ドキュメントの目次用のノードを処理したり、 mode= " print " 、 mode= " online " 、 mode= " index " などを指定して他の < xsl:template > を記述し、同じ情報を別の目的で処理できます。 priority このテンプレートに数値の優先度を割り当てる属性。値は、 Infinity 以外の数値になります。XSLT プロセッサで使用するテンプレートを決定できない場合 (つまり、複数のテンプレートのデフォルトの優先度が同じである場合)、 priority 属性を使用することにより、優先度を定義できます。
コンテンツ
XSLT テンプレート。
指定先
<xsl:stylesheet>。<xsl:template> はトップレベル要素であり、<xsl:stylesheet> の子としてのみ指定できます。
定義先
XSLT 5.3 節「テンプレート規則の定義」
例
入力ドキュメントのすべてのノードを出力ドキュメントにコピーするテンプレートを使用します。ただし、元のドキュメント内のすべての属性は、出力ドキュメントで要素に変換されます。生成された各要素の名前は元の属性の名前となり、各要素のテキストは属性の値となります。スタイルシートは次のとおりです。
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output method="xml"/>
      <xsl:template match="*">
        <xsl:element name="{name()}">
          <xsl:for-each select="@*">
            <xsl:element name="{name()}">
              <xsl:value-of select="."/>
            </xsl:element>
          </xsl:for-each>
          <xsl:apply-templates select="*|text()"/>
        </xsl:element>
      </xsl:template>
    </xsl:stylesheet>
スタイルシートには、元のドキュメント内の各ノードを変換する 1 つの <xsl:template> が含まれています。このスタイルシートを使用して次の XML ドキュメントを変換します。
    <?xml version="1.0"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month sequence="01">
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month sequence="02">
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month sequence="03">
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month sequence="04">
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
変換の結果は次のとおりです。
    <?xml version="1.0" encoding="UTF-8"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month><sequence>01</sequence>
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month><sequence>02</sequence>
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month><sequence>03</sequence>
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month><sequence>04</sequence>
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>