xsl-list
[Top] [All Lists]

Re: [xsl] Re: XSL Variable declaration

2011-02-14 06:09:28
Dear David/Mike.
Thanks for this..

Yeas, It does kind of confuse the reader..

Vasu

On 14 February 2011 11:07, Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:
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>
--~--





-- 
Vasu Chakkera
NodeLogic Limited
Oxford
www.nodelogic.org
==============

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>