xsl-list
[Top] [All Lists]

RE: Comparing and re-assigning variables.

2003-02-24 06:14:38
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