[xsl] Problem with using xsl:variable within a template in XSL1.0

Subject: [xsl] Problem with using xsl:variable within a template in XSL1.0
From: "Gareth Howells" <subscriptions@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 13 Dec 2007 11:33:48 -0000 (UTC)
S'mee again (be honest, you'd miss me otherwise ;))

I had a stylesheet using <xsl:for-each> which worked perfectly. Within the
loop, there were several <xsl:variable> statements. Now that I've
converted the stylesheet to using templates these statements are causing a
stack trace.

The beginning of the original loop:

<xsl:for-each select="teamPlayers/teamPlayer">

<xsl:variable name="playerG"
select="//results[@week=$week]/playerResult[@player=current()]/g *
$gPoints" />
<xsl:variable name="playerA"
select="//results[@week=$week]/playerResult[@player=current()]/a *
$aPoints" />
<xsl:variable name="playerGDA"
select="//results[@week=$week]/playerResult[@player=current()]/gda *
$gdaPoints" />
<xsl:variable name="playerGDCS"
select="//results[@week=$week]/playerResult[@player=current()]/gdcs *
$gdcsPoints" />
<xsl:variable name="playerGDGA"
select="//results[@week=$week]/playerResult[@player=current()]/gdga *
$gdgaPoints" />


This has now been replaced with

<xsl:apply-templates select="teamPlayers/teamPlayer" mode="playerTable">


<xsl:template match="teamPlayer" mode="playerTable">

 { those variable declarations again }


I'm not sure if it's relevant, but the original for-each loop, and now the
apply-templates statement, is nested within a for-each loop, which itself
is nested within a for-each loop.

<xsl:for-each select="//results">
    <xsl:for-each select="//teams/team">
        <xsl:apply-templates select="teamPlayers/teamPlayer"
mode="playerTable" />

The apply-templates statement is currently commented out, as is the entire
template other than the xsl:template and /xsl:template tags, and those
variable declarations, so I'm fairly sure they're whats causing the
problem. Is it not possible to define variables within a template?


Current Thread