Re: Variable Scoping

Subject: Re: Variable Scoping
From: Phil Lanch <phil@xxxxxxxxxxxxxxx>
Date: Wed, 03 Nov 1999 16:41:56 +0000
"Clark C. Evans" wrote:
> 
> $ cat test.xml
> <parent>
>   <child/>
> </parent>
> 
> $ cat test.xsl
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>                 version="1.0"
>                 xmlns:data="any-uri" >
>   <xsl:template match="/" >
>     <xsl:variable name="x">Outer</xsl:variable>
>     <xsl:for-each select="*">
>        <xsl:variable name="x">Inner</xsl:variable>
>        <xsl:value-of select="$x" />
>     </xsl:for-each>
>   </xsl:template>
> </xsl:stylesheet>
> 
> $ saxon test.xml test.xsl Error
> processing source document At xsl:variable on line 8 of
> file:/home/clark/test.xsl: Local variable x is already declared
> 
> $ xt test.xml test.xsl
> Inner
> 
> ...
> 
> Which one is correct?

The PR [11.5 Variables and Parameters within Templates] says

It is an error if a binding established by an xsl:variable or xsl:param
element within a template shadows another binding established by an
xsl:variable or xsl:param element also within the template.

- So Saxon is correct.

Phil Lanch


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread