Subject: Re: [xsl] how to recycle code to process the same element more than once From: David Carlisle <davidc@xxxxxxxxx> Date: Fri, 13 Feb 2009 11:41:27 GMT |
This is a grouping qn so always the syntax is a bit simpler in xslt 2, but assuming that you are using xslt1, something like <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> <!--<xsl:output type="xml"/>--> <xsl:output indent="yes" encoding="US-ASCII"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <martif type="TBX" xml:lang="en"> <text> <body> <xsl:apply-templates select="dictionary/records/record"> </xsl:apply-templates> </body> </text> </martif> </xsl:template> <!-- google for muenchian grouping--> <xsl:key name="t" match="term" use="concat(../@num,'-',@lang)"/> <xsl:template match="record"> <termEntry id="{@num}"> <xsl:for-each select="term[generate-id(.)= generate-id(key('t',concat(../@num,'-',@lang))[1])]"> <langSet xml:lang="{@lang}"> <xsl:apply-templates select="key('t',concat(../@num,'-',@lang))"/> </langSet> </xsl:for-each> </termEntry> </xsl:template> <xsl:template match="term"> <term id=""><xsl:apply-templates/></term> </xsl:template> </xsl:stylesheet> $ saxon lang.xml lang.xsl <?xml version="1.0" encoding="US-ASCII"?> <martif type="TBX" xml:lang="en"> <text> <body> <termEntry id="1"> <langSet xml:lang="ca"> <term id="">absenta</term> </langSet> <langSet xml:lang="es"> <term id="">absenta</term> <term id="">ajenjo</term> </langSet> <langSet xml:lang="en"> <term id="">absinth</term> <term id="">absinthe</term> </langSet> </termEntry> <termEntry id="2"> <langSet xml:lang="ca"> <term id="">acetificació</term> </langSet> <langSet xml:lang="es"> <term id="">acetificación</term> </langSet> <langSet xml:lang="en"> <term id="">acetification</term> </langSet> </termEntry> </body> </text> </martif> ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] how to recycle code to proces, Manuel Souto Pico | Thread | Re: [xsl] how to recycle code to pr, Manuel Souto Pico |
[xsl] how to recycle code to proces, Manuel Souto Pico | Date | Re: [xsl] how to recycle code to pr, Manuel Souto Pico |
Month |