|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: AW: recursion with xsl:apply-templates
><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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








