RE: [xsl] xsl:variable

Subject: RE: [xsl] xsl:variable
From: cknell@xxxxxxxxxx
Date: Thu, 22 Jul 2004 11:37:35 -0400
This is a very frequently-asked question. In short, you can't re-assign the value of a variable once it has been declared. Not no way, not no how, so don't waste any more time looking for a way to do it.

As to scope, a variable goes out of scope when the processor exits template in which it was declared. So your answer is to declare the variable at the top level, inside the <xsl:stylesheet> element.

These matters are usually resolved by passing values into a recursive template, picking up its value via <xsl:param>, defining a new variable inside the template using the value of the parameter, and passing it along to the next iteration of the template via <xsl:with-param>.
--
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Evan Wellens <evanw@xxxxxxxxxxxxxxxxxxxx>
Sent:     Thu, 22 Jul 2004 11:11:21 -0400
To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  [xsl] xsl:variable

Hi

Hopefully I'm just missing something silly here. I need to declare a variable that will be used globally and possibly modify if a condition occurs. Yet I cannot discern the syntax to do so , any attempt seems to re-declare the variable.



The intent here is to increment the value pages if the condition is true. If I declare a new variable within the If to hold the value it will go out of scope which doesn't help me.

Ie.
Thanks in advance for any ideas.

<xsl:variable name="pages" select="( $totalitems - $leftover ) div $pagesize "/>
<xsl:if test="leftover > 0 ">
<xsl:variable name="$pages" select="$pages =$pages +1"/>
</xsl:if>


Current Thread