<xsl:with-param> |
テンプレートに渡すパラメータを定義します。テンプレートが呼び出されると、パラメータとして値が渡されます。
カテゴリ
サブ命令 (<xsl:with-param> は <xsl:apply-templates> 要素または <xsl:call-template> 要素内に指定する必要があります)
説明
<xsl:with-param> は、テンプレートに渡すパラメータを定義します。テンプレートが呼び出されると、パラメータとして値が渡されます。パラメータの値は、次の 3 つのいずれかの方法で定義できます。 <xsl:with-param> 要素が空であり、select 属性を含まない場合、値はテンプレートに渡されません。 <xsl:with-param> 要素が空であり、select 属性を含む場合、パラメータの値は select 属性の値になります。 <xsl:with-param> 要素に XSLT テンプレートが含まれる場合は、パラメータの値がテンプレートの処理結果になります。 値がテンプレートに渡されない場合 (<xsl:with-param name="x"/>) は、パラメータの初期設定値 (ある場合) が代わりに使用されます。パラメータの初期設定値は、<xsl:template> 内の <xsl:param> 要素で定義されます。詳細については、<xsl:param> 要素の説明を参照してください。
必須の属性
name このパラメータの名前を指定します。
省略可能な属性
select このパラメータの値を定義する XPath 式。
コンテンツ
<xsl:with-param> 要素には何も指定しないか、または XSLT テンプレートを含めることができます。XSLT テンプレートを含める場合、select 属性 (ある場合) は無視されます。
指定先
<xsl:apply-templates> と <xsl:call-template>。
定義先
XSLT 11.6 節「テンプレートにパラメータを渡す」
例
複数のパラメータを使用したスタイルシートを次に示します。一部のパラメータはグローバルパラメータであり、スタイルシートの外部で定義されています。
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:param name="favoriteNumber" select="23"/>
      <xsl:param name="favoriteColor"/>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:value-of select="list/title"/>
        <xsl:value-of select="$newline"/>
        <xsl:variable name="listitems" select="list/listitem"/>
        <xsl:call-template name="processListitems">
          <xsl:with-param name="items" select="$listitems"/>
          <xsl:with-param name="color" select="'yellow'"/>
          <xsl:with-param name="number" select="$favoriteNumber"/>
        </xsl:call-template>
      </xsl:template>

      <xsl:template name="processListitems">
        <xsl:param name="items"/>
        <xsl:param name="color" select="'blue'"/>

        <xsl:for-each select="$items">
          <xsl:value-of select="position()"/>
          <xsl:text>.  </xsl:text>
          <xsl:value-of select="."/>
          <xsl:value-of select="$newline"/>
        </xsl:for-each>

        <xsl:value-of select="$newline"/>

        <xsl:text>Your favorite color is </xsl:text>
        <xsl:value-of select="$favoriteColor"/>
        <xsl:text>.</xsl:text>
        <xsl:value-of select="$newline"/>
        <xsl:text>The color passed to this template is </xsl:text>
        <xsl:value-of select="$color"/>
        <xsl:text>.</xsl:text>
        <xsl:value-of select="$newline"/>
      </xsl:template>

    </xsl:stylesheet>
このスタイルシートを使用して、次のドキュメントを変換します。
    <?xml version="1.0"?>
    <list xml:lang="en">
      <title>Albums I've bought recently:</title>
      <listitem>The Sacred Art of Dub</listitem>
      <listitem>Only the Poor Man Feel It</listitem>
      <listitem>Excitable Boy</listitem>
      <listitem xml:lang="sw">Aki Special</listitem>
      <listitem xml:lang="en-gb">Combat Rock</listitem>
      <listitem xml:lang="zu">Talking Timbuktu</listitem>
      <listitem xml:lang="jz">The Birth of the Cool</listitem>
    </list>
このスタイルシートは、favoriteNumber と favoriteColor の 2 つのグローバルパラメータを含み、favoriteNumber の初期設定値を定義します。また、このスタイルシートにより、match="/" テンプレートから name="processListitems" テンプレートにパラメータが渡されます。このパラメータにはノードセットが含まれます。変換の結果は次のとおりです。
    Albums I've bought recently:
    1.  The Sacred Art of Dub
    2.  Only the Poor Man Feel It
    3.  Excitable Boy
    4.  Aki Special
    5.  Combat Rock
    6.  Talking Timbuktu
    7.  The Birth of the Cool

    Your favorite color is orange.
    The color passed to this template is yellow.
Xalan でこれらの結果を生成するには、次のコマンドを使用します。
    java org.apache.xalan.xslt.Process -in test4.xml -xsl with-param.xsl
      -param favoriteColor orange
コマンドは 1 行で指定します。グローバルパラメータの詳細、およびさまざまな XSLT プロセッサでのグローバルパラメータの定義方法については、第 4 章 4.4.3 項を参照してください。