Re: [xsl] for-each loop question

Subject: Re: [xsl] for-each loop question
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Fri, 31 Mar 2006 19:04:15 +0530
The Piez method would work only if the number of iterations you want
to perform are less than or equal to count(//node()).

The general purpose methods will be the XSLT 2.0 technique and
recursive technique as Andrew has suggested.

Regards,
Mukul

On 3/31/06, andrew welch <andrew.j.welch@xxxxxxxxx> wrote:
> 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