This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: possible to mimic while-like behavior?
- To: xsl-list at mulberrytech dot com
- Subject: RE: possible to mimic while-like behavior?
- From: sara dot mitchell at ps dot ge dot com
- Date: Thu, 16 Mar 2000 16:02:45 -0500
- Reply-To: xsl-list at mulberrytech dot com
It's probably not the only way to do this, but there are
two possibilities:
1. You simply want to do one thing when bar and another when not bar.
What you need is two separate templates. For example:
<xsl:for-each select="foo[not(bar)]">
blah
</xsl:for-each>
<xsl:for-each select="foo[bar]">
different blah
</xsl:for-each>
This works as long as the bar|not bar condition can
be expressed in XPath.
2. The other answer is named templates or modes, such as:
<xsl:for-each select="foo">
<xsl:choose>
<xsl:when test="bar">blah</xsl:when>
<xsl:otherwise>
<xsl:call-template name="blort"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
Where the "blort" named template does what you want.
If what you want is "do blah until you find the first foo where not bar"
there is probably a way to do that also, but I'll leave that to the
more knowledgable and more gifted to fill in.
Sara
> -----Original Message-----
> From: Carole E. Mah [mailto:carole@goon.stg.brown.edu]
> Sent: Thursday, March 16, 2000 11:59 AM
> To: xsl-list@mulberrytech.com
> Subject: possible to mimic while-like behavior?
>
>
>
> I know there are only two conditionals possible in xsl stylesheets,
> <xsl:if> and <xsl:choose> (inside which one has <xsl:when>
> ... </xsl:when>
> and <xsl:otherwise>...</xsl:otherwise> with nesting allow).
>
> However, there is no "while" or "until".
>
> 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>.
>
> e.g., speaking in a Perl-esque way, I want
> while ($foo != "bar") {
> blah
> }
>
> Is there any way to simulate, hack, or otherwise achieve this?
>
> thanks again,
> -carole
> - - - - - - - - - - - - - - - - - - - - - - - - -
> Carole E. Mah Carole_Mah@Brown.edu
> Senior Programmer/Analyst
> Brown University Scholarly Technology Group
> phn 401-863-2669
> fax 401-863-9313
> http://www.stg.brown.edu/
> personal: http://www.stg.brown.edu/~carolem/
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list