RE: Scope of variables
(Sorry, accidentally sent my reply too soon, so it was incomplete ) [Karl J. Stubsjoen] > 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. > Karl, **Google is your friend** - the first hit for "xslt faq variable scope" returned a good link : http://www.xml.com/pub/a/2002/06/26/q-a.html You cannot change the value of an xslt variable once it has been assigned. You have to get the results you want some other way, and there are other ways. One way is to pass parameters to templates. Each time the template gets invoked, it gets passed a new value in the parameter. > 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)? The scope of the variable is the enclosing block, which in this case are "when" or "otherwise" blocks. This question comes up all the time on the list. Just check the FAQs and pay attention to some of the other threads. Outside its scope the variable is not available. In this case, where you do not actually need a node set but only a string, you can just put the choose inside the variable definition - <xsl:variable name='x'> <xsl:choose> <xsl:when> ... </xsl:choose> </xsl:variable> Cheers, Tom P XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format