1

次のようなXSLTコードがあります

    <xsl:choose>
      <xsl:when test="v:Values = 'true'">
        <xsl:text>A</xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:text>B</xsl:text>
      </xsl:otherwise>
...
    </xsl:choose>

このコードのチャンクを同じファイルで何度も使用したいと思います。テンプレートに入れて、必要なときに呼び出すことはできますか?

4

1 に答える 1

3

はい - xsl:call-template と呼ばれます。

どのテンプレートにも名前を付けることができます。名前はネームスペースで修飾できます。例えば...

<xsl:template match="some match condition" name="call-me">
  bla bla bla (template content)
</xsl:template>

テンプレートに名前がある場合は、そのように一致条件を省略することもできます...

<xsl:template name="call-me">
 <xsl:param name="phone-number" />
  bla bla bla (template content)
</xsl:template>

名前付きテンプレートには、好きなだけパラメーターがあります。上記のフラグメントは、phone-number という名前の 1 つのパラメーターを宣言する例です。テンプレートのシーケンス コンストラクター内で、変数と同じ方法でこのパラメーターを参照します。

$phone-number

名前付きテンプレートを呼び出すには、シーケンス コンストラクター内から xsl:call-template を使用します。例えば ​​...

<xsl:call-template name="call-me">
 <xsl:with-param name="phone-number" select="'55512345678'" />
</xsl:template>

xsl:with-param実際のパラメータ値を渡すために使用されることに注意してください。

XSLT 2.0 では、XPATH 式内から呼び出し可能な関数も定義できることに注意してください。状況によっては、名前付きテンプレートよりも関数の方が適している場合があります。

参照:

  1. XSLT 2.0 仕様: 名前付きテンプレート
  2. XSLT 1.0 仕様: 名前付きテンプレート
于 2012-08-14T00:30:44.053 に答える