Subject: Re: [xsl] basename string sort and group From: davep <davep@xxxxxxxxxxxxx> Date: Sat, 03 Sep 2011 13:51:56 +0100 |
davep wrote:Given input such as
<fonts>
<entry
href="/apps/jdk/lib/fonts/LucidaTypewriterRegular.ttf">Lucida</entry>
<entry href="/apps/jdk/lib/fonts/LucidaTypewriterBold.ttf">Lucida</entry>
<entry
href="/apps/jdk/lib/oblique-fonts/LucidaSansDemiOblique.ttf">Lucida</entry>
</fonts>
I want to sort and group by directory, for an output such as
<fonts> <dir href="/apps/jdk/lib/fonts"> <entry href="LucidaTypewriterRegular.ttf">Lucida</entry> <entry href="LucidaTypewriterBold.ttf">Lucida</entry> </dir> <dir href="/apps/jdk/lib/oblique-fonts"> <entry href="LucidaSansDemiOblique.ttf">Lucida</entry> </dir>
etc.
I.e. Isolate the directories, then group all entries within that directory.
<xsl:template match="fonts">
<xsl:copy>
<xsl:for-each-group select="entry"
group-by="string-join(tokenize(@href, '/')[position() lt last()], '/')>
<dir href="{current-grouping-key()}">
<xsl:apply-templates select="current-group()"/>
</dir>
</xsl:for-each-group>
</xsl:copy>
</xsl:template
<xsl:template match="entry"> <entry href="{tokenize(@href, '/')[last()]}"> <xsl:value-of select="."/> </entry> </xsl:template>
Untested.
Thanks Martin. Appreciated.
-- Dave Pawson XSLT XSL-FO FAQ. http://www.dpawson.co.uk
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] basename string sort and , Martin Honnen | Thread | [xsl] XSLT for mergig XML fragments, Zeev Atlas |
Re: [xsl] stylesheet organisation, Tony Graham | Date | Re: [xsl] stylesheet organisation, Jesper Tverskov |
Month |