xsl-list
[Top] [All Lists]

RE: Scope of variables

2003-05-08 13:56:23
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



<Prev in Thread] Current Thread [Next in Thread>