|
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 |