This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: xsl:variable


> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]