This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: xsl:variable
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] xsl:variable
- From: "Michael Kay" <mhkay at iclway dot co dot uk>
- Date: Wed, 13 Jun 2001 10:38:21 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
> 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: http://www.mulberrytech.com/xsl/xsl-list