RE: [xsl] Comparing and re-assigning variables.

Subject: RE: [xsl] Comparing and re-assigning variables.
From: Jarno.Elovirta@xxxxxxxxx
Date: Mon, 24 Feb 2003 15:14:38 +0200
Hi,

> Ok, here's a part of a xsl file i wrote to create a 
> transactions report:
> 
> <!-- Iterate over all txns. -->
> <table border="0">
> <xsl:for-each select="report-root/txns">
>     <xsl:sort select="cpmBI"/>
>     <xsl:sort select="date"/>
>     <xsl:variable name="currCpmBI" select="cpmMemBI"/>
>     
>     <!-- CODE TO BE INSERTED HERE - READ ON -->    
> 
> </xsl:for-each>
> </table>
> 
> What i want is to compare the value of currCpmBI with the 
> previous value in the iteration (which i have not defined in 
> the above code). If they differ I want to add a some extra html.
> My question now boils down to:
> - How can i remember the previous value of cpmMemBI and how 
> would I store it so i can compare it with the current value 
> in the iteration? 

Using xsl:for-each you don't; if you process the txns using a recursive template construct, you can always pass the previous currCpmBI, but not using xsl:for-each - it's *not* a for-loop like in, say, Java. Instead just do

  <xsl:if test="cpmMemBI = previous-sibling::txns[1]/cpmMemBI">

> - If the current value has changed, how can i re-initialise 
> the previous value with the current value?

The current value cannot change, you can't change the source tree, nor can you change the value bound to a variable.

Cheers,

Jarno - VNV Nation: Genesis

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread