Subject: Re: Reference to variable cannot be resolved.
From: Mike Brown <mike@xxxxxxxx>
Date: Thu, 13 Feb 2003 17:40:30 -0700 (MST)
|
Michael Kay wrote:
> > The
> > few programming classes I've taken (using procedural
> > languages) have taught that a lot of global variables are a
> > Bad Thing, but maybe that axiom doesn't necessarily apply to XSLT.
> >
>
> Global variables are a bad thing in procedural programming because they
> can be updated from anywhere, which leads to a lot of errors.
>
> They do no harm in XSLT because they are only evaluated once.
True, but in this case, x seems to be evaluated twice:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="x" select="'hello'"/>
<xsl:template match="/">
<result>
<r><xsl:value-of select="$x"/></r> <!-- $x is 'hello' here -->
<xsl:variable name="x" select="'hi'"/>
<r><xsl:value-of select="$x"/></r> <!-- $x is 'hi' here -->
<xsl:call-template name="test"/>
</result>
</xsl:template>
<xsl:template name="test">
<r><xsl:value-of select="$x"/></r> <!-- $x is 'hello' here -->
</xsl:template>
</xsl:stylesheet>
Explaining to people why that's legal, after telling them they can only
assign x once, is a nice challenge :)
Mike
--
Mike J. Brown | http://skew.org/~mike/resume/
Denver, CO, USA | http://skew.org/xml/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
- RE: Reference to variable cannot be resolved., (continued)
- Dunning, John - Thu, 13 Feb 2003 13:23:47 -0500 (EST)
- Martinez, Brian - Thu, 13 Feb 2003 13:36:27 -0500 (EST)
- Martinez, Brian - Thu, 13 Feb 2003 14:45:27 -0500 (EST)
- Michael Kay - Thu, 13 Feb 2003 18:51:20 -0500 (EST)
- Mike Brown - Thu, 13 Feb 2003 19:38:14 -0500 (EST) <=
- S Woodside - Fri, 14 Feb 2003 01:53:49 -0500 (EST)
- David Carlisle - Fri, 14 Feb 2003 04:49:05 -0500 (EST)
- Mike Brown - Fri, 14 Feb 2003 06:09:40 -0500 (EST)
- bryan - Fri, 14 Feb 2003 06:37:40 -0500 (EST)
|
|