From: Karl J. Stubsjoen [mailto:karl(_at_)azprogolf(_dot_)com]
Sent: Thursday, May 08, 2003 1:00 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Scope of variables
I have 2 questions:
1) If I define a variable at the top of a template rule and
then later try
to update the value of this variable later down in the
template, I always
get the error "Can't define variable twice...". So how do
you reassign a
value to a variable.
VFAQ #1. You can't reassign a value to a variable once it is bound. You
can, however, define a top-level variable in a stylesheet that is then
imported into another stylesheet, and then override its value (the rules of
precedence for imported modules apply).
2) About scope: Within a for-each loop I have a choose. In
the choose I
have a single test and an otherwise. The result of the
choose is setting
the value of a variable. Just below this choose logic I am
referencing the
value but am getting the error "A reference to variable or parameter
'currentVAL' cannot be resolved". Where did I lose scopE on
this variable
(currentVAL)?
VFAQ #2. Variables only exist within the scope of their containing element.
If you do:
<xsl:if test="$foo = 'true'">
<xsl:variable name="bar" select="'false'"/>
</xsl:if>
then $bar never exists outside the xsl:if element, and can't be referenced
anywhere else in the stylesheet. You want:
<xsl:variable name="bar">
<xsl:choose>
<xsl:when test="$foo = 'true'">false</xsl:when>
<xsl:otherwise>true</xsl:otherwise>
</xsl:choose>
</xsl:variable>
hth,
b.
| brian martinez
brian(_dot_)martinez(_at_)cendant(_dot_)com |
| lead gui programmer 303.708.7248 |
| cheap tickets, part of trip network fax 303.790.9350 |
| 6436 s. racine cir. englewood, co 80111 |
| cendant travel distribution services http://www.cheaptickets.com/ |
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list