On 14/02/2011 10:48, Vasu Chakkera wrote:
There is an interesting stylesheet I came across this morning where
some developer had declared two Xsl:variables one after the other with
the same name.
<xsl:variable name = "foo">
</xsl:variable>
<xsl:variable name = "foo">
</xsl:variable>
Not sure why he did that, but to my surprise, it seems to be valid
in XSLT2 .. and as my expectations, it failed in XSLT1 saying two
variables cant have same name within the same scope..
Is this right??
Yes, this is permitted in XSLT 2.0 but not 1.0 (I assume you are talking
about local variables).
It can be quite a handy style of programming, so long as you recognize
that each xsl:variable is a new variable:
<xsl:variable name="s" select="@something"/>
<xsl:variable name="s" select="substring-before($s, ':')"/>
<xsl:variable name="s" select="substring-after($s, '/')"/>
<xsl:variable name="s" select="concat('(', $s, ')')"/>
<xsl:value-of select="$s"/>
Saves (a) writing deeply nested XPath expressions, and (b) thinking up
new variable names for intermediate results, or (c) changing variable
names when an extra computation step is introduced.
But it might confuse some readers, so use with care.
Michael Kay
Saxonica
--~------------------------------------------------------------------
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>
--~--