Re: [xsl] for-each loop question

Subject: Re: [xsl] for-each loop question
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Sat, 1 Apr 2006 21:53:30 +0530
There is a good explanation about Piez method at
http://www.dpawson.co.uk/xsl/sect2/muench.html (topic number 7).
//node() is one node-set which I mentioned. As mentioned in the FAQ,
you can use the expression / | //node() | //@* | //namespace::* to
increase the number of nodes.

Regards,
Mukul

On 3/31/06, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote:
> 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