The example given in the spec seems a bit misleading, because
it really illustrates the restrictions of scope and not the
practice of shadowing. The following is illegal in either spec:
<xsl:template match="/">
<xsl:variable name="x" select="1"/>
<xsl:variable name="x" select="$x+1"/>
<xsl:value-of select="$x"/>
</xsl:template>
I regret to say that (unless I've missed something) the above is
completely legal in XSLT 2.0.
I fought hard to disallow this, because I know how many beginners
misunderstand variables, and lost. There are too many people steeped in
functional programming who can't see why it's a problem.
I'm sure the debate is one that will be revived during the public
comments cycle - as I said, it's a bicycle shed issue.
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list