This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: how to change variable values ?
- To: xsl-list at mulberrytech dot com
- Subject: Re: how to change variable values ?
- From: Oliver Becker <obecker at informatik dot hu-berlin dot de>
- Date: Wed, 19 Jul 2000 14:49:22 +0200 (MET DST)
- Reply-To: xsl-list at mulberrytech dot com
Hi Gero,
> i got the following problem: i want to output a xml-document with a
> xsl-stylesheet. In this output it should, for example, make a line when
> the week changes. I tried to do this by using variables...
>
> -------------
> <xsl:variable name="lastweek">
> <!-- Need an Initial value to compare later with currentweek-->
> <xsl:value-of select="Week"/>
> <!-- Week is a tag from the xml-document -->
> </xsl:variable>
>
> <xsl:for-each select="Data/Block">
>
> <xsl:variable name="currentweek">
> <xsl:value-of select="Week"/>
> </xsl:variable>
>
> <xsl:if test="$currentweek > $lastweek">
> <!-- Do something when week changes and set
> the variable lastweek to this week -->
> <xsl:variable name="lastweek"> <!-- foo ;-) -->
> <xsl:value-of select="$currentweek">
> </xsl:variable>
> </xsl:if>
>
> .
> .
> .
> </xsl:for-each>
> --------------------------
>
> Obviously, it complains, that the variable lastweek cannot be defined
> twice. Is there a way to "just change" the variable lastweek (and not
> to define it again) ?
The only way to use variables with changing values is by recursion.
I.e. you define a named template and call it with passing your node-set
"Data/Block" and an initial lastweek value through parameters.
The template processes the first node and calls itself recursively
with all nodes but the first and a maybe updated lastweek parameter.
If you like, you may take a look at my "XSLT loop compiler" which allows
defining iterative loops and translating them into pure XSLT.
http://www.informatik.hu-berlin.de/~obecker/XSLT/#loop-compiler
However, I think your problem can be solved much simpler:
What about
<xsl:if test="Week > preceding-sibling::Week">
<!-- Do something when week changes -->
</xsl:if>
Best regards,
Oliver
/-------------------------------------------------------------------\
| ob|do Dipl.Inf. Oliver Becker |
| --+-- E-Mail: obecker@informatik.hu-berlin.de |
| op|qo WWW: http://www.informatik.hu-berlin.de/~obecker |
\-------------------------------------------------------------------/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list