At 2003-02-24 15:14 +0200, Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com wrote:
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"/>
Note, Jarno, the sorting that the original poster is doing.
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">
This will visit the source node tree in document order, and
not in sorted
order.
Unless I'm missing something (easily possible early on a
Monday morning),
I'm not convinced a recursive template addressing nodes in
document order
is going to quite address the poster's needs to know the
"previous" node in
sorted order.
Ah, yes on both cases, I totally missed the sorting bit - never underestimate
the power of Mondays. So it calls for a two-pass solution, or some sort of
"sort and generate space separated id list and process that recursively"
solution. Sorry Bill for the misguidance, think I'll go reset my brain at the
dojo.
Cheers,
Jarno - Melotron: Folge mir ins Licht
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list