Subject: [xsl] Expensive XSLT2 - suggestions for improving? From: Michael Müller-Hillebrand <mmh@xxxxxxxxxxxxx> Date: Thu, 16 Oct 2008 17:54:49 +0200 |
The task is to remove duplicate text content before moving an XML file into translation. After the translation, the former duplicate content should be recreated.
<Doc> <value oid="40068">Lasttrennschalter</value> <value oid="40069">Umbau von N12 auf N4</value> <value oid="4006a">Lasttrennschalter</value> </Doc>
The third <value> should be empty because its content is identical to the first, but we need a pointer to that first element to be able to recreate the content after translation. Also, all original attributes must stay unchanged. Therefore in each duplicate I insert an extra attribute @refoid with the @oid of the source element. So I get this:
<Doc> <value oid="40068">Lasttrennschalter</value> <value oid="40069">Umbau von N12 auf N4</value> <value oid="4006a" refoid="40068"/> </Doc>
My XSL is very simple and works as intended, but it does not scale very good, I guess because I look at preceding::value so many times:
<!-- Condenser: modify all duplicates --> <xsl:template match="value[.=preceding::value]"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="refoid" select="preceding::value[.=current()][last()]/@oid"/> <!-- skip content --> </xsl:copy> </xsl:template>
<!-- pass-through all nodes and attributes --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template>
I guess a clever constructed key could help a lot... any pointers are very welcome!
-- _______________________________________________________________ Michael M|ller-Hillebrand: Dokumentations-Technologie Adobe Certified Expert, FrameMaker Lvsungen und Training, FrameScript, XML/XSL, Unicode <http://cap-studio.de/> -- Tel. +49 (9131) 28747
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] zero width no-break space, David Carlisle | Thread | Re: [xsl] Expensive XSLT2 - suggest, David Carlisle |
Re: [xsl] zero width no-break space, David Carlisle | Date | Re: [xsl] zero width no-break space, G. Ken Holman |
Month |