RE: [xsl] xsl:variable

Subject: RE: [xsl] xsl:variable
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Wed, 13 Jun 2001 10:38:21 +0100
> Can someone tell me why the following doesn't work?
> <xsl:template name="myTemplate">
>  <xsl:variable name="sizePresent" select="'no'"/>
>  <xsl:for-each select="attribute">
>   <xsl:if test="@type='Size'">
>    <xsl:variable name="sizePresent" select="'yes'"/>
>    Size is present.
>   </xsl:if>
>  </xsl:for-each>
>  <xsl:if test="$sizePresent='no'">
>   Size was never found.
>  </xsl:if>
> </xsl:template>
> When I run it I get:
> Size is present.
> Size is present.
> Size is present.
> Size was never found.

You should get an error message. It's not permitted to declare a variable
when another local variable of the same name is already in scope. I suspect
you're using xt, which doesn't enforce this rule.

You're trying to update a variable. That's a no-no in XSLT's declarative,
functional, non-precedural, non-sequential view of the world. Read Chap 8 of
my XSLT Programmer's Reference (Chap 9 in the second edition) to understand
why, and what to do about it.

Mike Kay
Software AG

 XSL-List info and archive:

Current Thread