Subject: RE: 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: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
- xsl:variable
- Jeff Fletcher - Tue, 12 Jun 2001 16:01:27 -0400 (EDT)
- Xiaocun Xu - Tue, 12 Jun 2001 16:36:54 -0400 (EDT)
- Michael Kay - Wed, 13 Jun 2001 05:32:27 -0400 (EDT) <=
- <Possible follow-ups>
- RSuiter - Tue, 12 Jun 2001 16:39:37 -0400 (EDT)
|
|