This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: possible to mimic while-like behavior?
- To: "XSL List" <xsl-list at mulberrytech dot com>
- Subject: Re: possible to mimic while-like behavior?
- From: "Nikolai Grigoriev" <grig at iitp dot ru>
- Date: Fri, 17 Mar 2000 03:40:11 +0300
- References: <Pine.LNX.4.10.10003161451480.28420-100000@goon.stg.brown.edu>
- Reply-To: xsl-list at mulberrytech dot com
Carole E. Mah wrote:
> Imagine,
> <xsl:for-each select="foo">
> <xsl:choose>
> <xsl:when test="bar">blah</xsl:when>
> <xsl:otherwise>blort</xsl:otherwise>
> </xsl:choose>
> </xsl:for-each>
>
> Now imagine that when the conditions are such that <xsl:otherwise> is
> matched, one wants to break out of the <xsl:for-each>.
>
How about this:
<!-- Identify the stopper - the first node that does not have a bar -->
<xsl:variable name="stop-id" select="generate-id(foo[not(bar)][1])"/>
<!-- Segregate nodes preceding the stopper -->
<xsl:for-each select="foo">
<xsl:if test="following-sibling::foo[generate-id() = $stop-id]">
blah
</xsl:if>
</xsl:for-each>
This is simple but suspicious from the efficiency point of view.
I suspect that the recursive solution is more economic.
Regards,
Nikolai
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list