5

XSLTの2つのテンプレート間で変数を渡す方法。

変数の値は評価中の現在のノードに依存しているため、グローバル変数を使用できません。

ある種のXSLTがあるとしましょう:

<xsl:template match="product">
<xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/>
..
..
..
<xsl:apply-templates select="countries/country"/>
</xsl:template>

<xsl:template match="countries/country">
<tr id="country-id">
  <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td>
..
..

2番目のテンプレートでは$pr-posにアクセスできないため、これによりエラーが発生します。

変数pr-posの値を他のテンプレートに渡すにはどうすればよいですか?これどうやってするの?

4

1 に答える 1

10
<xsl:template match="product">
    <xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/>
    ..
    ..
    ..
    <xsl:apply-templates select="countries/country">
       <xsl:with-param name="pr-pos" select="$pr-pos" />
    </xsl:apply-templates>
</xsl:template>

<xsl:template match="countries/country">
  <xsl:param name="pr-pos" />
    <tr id="country-id">
      <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td>
      ..
      ..
于 2012-06-30T20:14:07.923 に答える