This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Jumping out a loop
- To: xsl-list at lists dot mulberrytech dot com
- Subject: RE: [xsl]Jumping out a loop
- From: Meltem Kogelbauer <meltem dot kogelbauer at netdecisions dot co dot uk>
- Date: Wed, 18 Apr 2001 11:27:49 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
I have dealt with similar cases as the following.
You cannot jump out of for-each rule. Once you are in you are in.
If you want to apply style-A, say, for the first two children and style-B
for the rest you can use two for-each loop selecting first two and the rest.
If you want to apply style-C for two children positioned as, say, the third
and the sixth children among the others, then best way would be applying a
template to the children
<xsl:template match="children">
<!--Children is grasslands in this case I believe-->
<whatever-style><xsl:value-of select="." /></whatever-style>
</xsl:template>
When you call the template, call with the specific names
<xsl:apply-templates select="//Grasslands[LinksForTheGenus]" />
<xsl:apply-templates select="//Grasslands[References]" />
This way you can add/delete children easily.
Hope this will help.
Meltem
-----Original Message-----
From: Tanzila Mohammad [mailto:tmohammad@entier-solutions.com]
Sent: 18 April 2001 11:03 AM
To: xsl-list@lists.mulberrytech.com
Subject: [xsl]Jumping out a loop
I have the following loop:
<xsl:for-each select="Grasslands/*[position()>3 and text()]">
<h3><font color="#00007f"><i><xsl:value-of
select="name()"/></i></font></h3>
<p><font color="#008000"><xsl:value-of select="."/></font></p>
</xsl:for-each>
I want to jump out the loop at two children and perform a different function
for them:
For the Links of Genus child:
<h3><a NAME="Label0045"></a><font color="#00007F"><i>Links for the
genus:</i></font></h3>
<ul>
<xsl:for-each select="Grasslands/LinksForTheGenus/Link">
<li><font color="#008000"> <xsl:value-of
select="Address"/>;
<xsl:value-of select="Name"/> </font></li>
</xsl:for-each>
</ul>
For The References child:
<h3><a NAME="Label0045"></a><font
color="#00007F"><i>References:</i></font></h3>
<xsl:for-each select="Grasslands/References/Ref">
<font color="#008000"> <xsl:value-of select="Name"/>

<xsl:value-of select="Year"/>;
</font>
</xsl:for-each>
References and Links for Genus are slightly different than all children of
Grasslands, I figure I need some sort of 'if' statement maybe:
<xsl:if test="Grasslands[LinksForTheGenus]"> do process
<xsl:if test="Grasslands[References]"> do process
Any suggestions.
Tanz
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list