xsl-list
[Top] [All Lists]

Re: [xsl] Variable and parameter with same name and scope allowed in 2.0

2006-05-02 06:53:14

  In some case,
it's clearer than the 1.0 version, where it is an error to
have two variables of the same name in the same template
rule (even in different "scopes", for example outside and
inside an xsl:if).

In XSLT1.0 you can have two variables with the same name in a single
template if they are in distinct scopes, it's just an error if those
scopes overlap. 
so

<xsl:variable name="x"/>
<xsl:if test="true()">
<xsl:variable name="x"/>
</xsl:if>

is an error but

<xsl:if test="true()">
<xsl:variable name="x"/>
</xsl:if>
<xsl:variable name="x"/>

is not.

When this rule was added to XSLT 1 (in quite a late draft of the spec)
it invalidated several of my stylesheets (where I'd used "n" or "x" for
all variables) but probably on balance it has caught more user errors
than it has created. (A good thing). I think it's gone in 2.0 as there
are more variable binding possibilities (eg XPath for expressions) and
so any variable shadowing rule would probably affect xpath (and
possibly xquery) as well as xslt.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--