This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Looping using XSL
- From: "Dion Houston" <dionh at windows dot microsoft dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 2 Oct 2002 00:08:26 -0700
- Subject: RE: [xsl] Looping using XSL
- Reply-to: xsl-list at lists dot mulberrytech dot com
Actually this for each will go through every element in the source
document :) .//* would be every child of the context.
This issue actually should be pretty easy to solve. I haven't tested
this, but this should work:
<xsl:template match="mood">
<xsl:param name="iteration" select="number(rating)"/>
<xsl:if test="$iteration > 0">
<DoStuff/>
<xsl:apply-templates select=".">
<xsl:with-param name="iteration" select="$iteration - 1"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
HTH!
Dion
-----Original Message-----
From: Josh Campbell [mailto:josh@zype.co.nz]
Sent: Tuesday, October 01, 2002 11:22 PM
To: xsl-list@lists.mulberrytech.com
Subject: Re: [xsl] Looping using XSL
Vasu Chakkera wrote:
> Doesnt <xsl:for-each select="//*[position() <= rating]">
> iterate through all the child elements of the context node ., in this
> case "mood"..
> so essentially since it has only one child element( "rating" ), It
> should iterate only once irrespective of the condition *[position()
> <= rating]">
> so you xsl should produce only one line.
> <div class="moodbar"><img src="layout/global/pics/mood-red.gif" alt=""
> /></div>
> Vasu
That's what I've just found...though I appreciated the idea :-)
Sorry if the words 'looping' and 'iterate' have confused the issue but
I'm not sure what else to call it.
I guess what's needed is some way of testing against the number in the
rating node and write out the html line until the rating is equalled.
Josh
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list