This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: possible to mimic while-like behavior?


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]