This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: <xsl:for-each>
Dung, Ming-tzung wrote:
> Hi,
> I wonder whether the XSLT has the instruction like the "break" statement
> in C/Java language inside the loop. If no such instruction, any design idiom
> can solve this problem? Thanks in advance!!
You have to get rid of the habit of viewing xsl:for-each
as being a loop. It is not a loop. Think of it as a statement
which applies a function to each element of a list (or an
array), in parallel.
Because it's not a loop, you can't break out of it. Instead
you have to construct the correct list of nodes you want to
apply the for-each body to right at the beginning.
Instead of
for( d in data) {
if( d.total > max ) {
break;
}
do-stuff;
}
you have to select the right node set (which is not trivial
in this case):
<xsl:for-each select="data[total > $max][1]/preceding-sibling::data">
<stuff/>
</xsl:for-each>
In most cases, selecting the correct set of nodes
is much easier.
HTH
J.Pietschmann
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list