[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: AW: [xsl] recursion with xsl:apply-templates
Subject: RE: AW: [xsl] recursion with xsl:apply-templates From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx> Date: Thu, 28 Aug 2003 09:54:05 +0100 |
><xsl:copy-of select="xalan:nodeset($indexToIDs)/entry[@genid = Just one further thing... I would suggest converting to a nodeset outside of the iteration, so that it only gets performed once rather than once per interation. So if you have a global variable holding information that you will query, add another variable beneath it that holds it as a nodeset, just like: <xsl:variable name="indexToIDs-rtf"> <xsl:for-each select="/transformation/IRF//*[@index]"> <xsl:variable name="pos" select="position()"/> <entry genid="{generate-id()}"> <xsl:copy-of select="/transformation/id_list/id[$pos]"/> </entry> </xsl:for-each> </xsl:variable> <xsl:variable name="indexToIDs" select="exsl:node-set($indexToIDs)"/> ..and then reference the nodeset each time (notice the name changes). I don't know the figures but I would guess converting to a node-set is more than just setting a boolean in the processor, so it's best done once only (maybe someone knows). cheers andrew > Sorry David, obviously I did get you wrong then. > > Anyway, I have a working and (thanks to Andrew) a performing solution > for my problem now, which is only slightly different from Andrews, i.e. > I need the ids as element, not as attribute. > > Thanks again for your support and contributions! > Volker. > > My solution: > > <xsl:variable name="indexToIDs"> > <xsl:for-each select="/transformation/IRF//*[@index]"> > <xsl:variable name="pos" select="position()"/> > <entry genid="{generate-id()}"> > <xsl:copy-of select="/transformation/id_list/id[$pos]"/> > </entry> > </xsl:for-each> > </xsl:variable> > <xsl:template match="/transformation"> > <xsl:apply-templates/> > </xsl:template> > <xsl:template match="@*|node()"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > <xsl:template match="*[@index]"> > <xsl:variable name="genid" select="generate-id()"/> > <xsl:value-of select="$genid"/> > <xsl:copy> > <xsl:copy-of select="xalan:nodeset($indexToIDs)/entry[@genid = > $genid]/id"/> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > <xsl:template match="@index"/> > <xsl:template match="id_list"/> > > > David Carlisle wrote: > > >>it is like David assumed: > > > > > > But your posted solution didn't do what mine did. > > Mine took the value of the index attribute as the id element to copy > > your solution ignored the value and counted the number of elements that > > had that attribute. > > > > David > > > > ________________________________________________________________________ > > This e-mail has been scanned for all viruses by Star Internet. The > > service is powered by MessageLabs. For more information on a proactive > > anti-virus service working around the clock, around the globe, visit: > > http://www.star.net.uk > > ________________________________________________________________________ > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: AW: [xsl] recursion with xsl:ap, Volker Witzel | Thread | Re: AW: [xsl] recursion with xsl:ap, Volker Witzel |
RE: [xsl] HTML and Javascript probl, Andrew Welch | Date | Re: [xsl] RE: [untitled] Generating, prenom nom |
Month |