Re: [xsl] for-each loop question

Subject: Re: [xsl] for-each loop question
From: "andrew welch" <andrew.j.welch@xxxxxxxxx>
Date: Fri, 31 Mar 2006 12:20:53 +0100
On 3/31/06, Khorasani, Houman <Houman.Khorasani@xxxxxxxxxxxx> wrote:
> Hello everyone,
>
> I got a "for-each" problem here and am wondering if you could solve it:
>
> This is the input XML file:
>
> <A>
>    <B>
>       <Product Quantity="5" Code="A75570" Description="REMINDER CALL -
> WA"/>
>    </B>
> </A>
>
>
> I am interested in the Quantity attribute of 5.
>
> I would like to run the "for-each" loop about 5 times:
>
> <xsl:variable name="loop" select=" A/B/Product[@Quantity]"/>
> <xsl:for-each select="$loop">
>    <xsl:call-template name="xxx">
>
>    </xsl:call-template>
> </xsl:for-each>
>
>
> Would that be possible like this?

No, as the context is a single <Product> node...

Doing what you are after is simple is XSLT 2.0, you could just use
select="1 to $quantity".

In 1.0 it's a lot harder, you will need to write a recursive named
template that calls itself decrementing the count with each call, or
use the Piez 'hack' of select="$someElementList[position() &lt;= 5]"

As you haven't said if you can use 2.0 or not, I won't expand on the
1.0 solutions until then :)

cheers
andrew

Current Thread