Thanks a lot!
Right after putting together the test case I tried some xsl:key
myself... I should have done it before.
Your method of integrating the check into a common template with the
'first' node as a variable serves another purpose: I need multiple
attribute values from that node to construct my unique identifier.
For my 20 MByte XML file, the processing is now down from 42 minutes
(!) to 6 seconds. This is more than 99% percent saved just because of
a xsl:key!
Thanks again,
- Michael
Am 16.10.2008 um 18:03 schrieb David Carlisle:
something like this:
<xsl:key name="v" match="value" use="."/>
<xsl:template match="value">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:variable name="first" select="key('v',')[1]"/>
<xsl;choose>
<xsl:when test=". is $first">
<xsl:attribute name="refoid" select="$first/@oid"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
if you need to do same in xslt1 then
. is $first
becomes
generate-id(.) = generate-id($first)
and
<xsl:attribute name="refoid" select="$first/@oid"/>
becomes
<xsl:attribute name="refoid"><xsl:value-of select="$first/@oid"/
></xsl:attribute>
David
--
_______________________________________________________________
Michael Müller-Hillebrand: Dokumentations-Technologie
Adobe Certified Expert, FrameMaker
Lösungen und Training, FrameScript, XML/XSL, Unicode
<http://cap-studio.de/> -- Tel. +49 (9131) 28747
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--