Subject: RE: Need help with special sorting
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Mon, 28 Jun 2004 09:26:37 +0100
|
What a neat solution! Is this your own invention Ken or is this common
knowledge?
> At 2004-06-27 20:16 +0200, Bert wrote:
> >I need some help with 'special sorting'.
> >I have this xml-file (simplified).
> >
> ><alfabet>
> > <letter>a</letter>
> > <letter>b</letter>
> > <letter>c</letter>
> > <letter>d</letter>
> ></alfabet>
> >
> >The outcome after sorting should however be this:
> >a b d c
> >
> >The letter c has always to be the last item after sorting.
> >How can I achieve this?
>
> By translating the letters you have into the letter-order you
> want sorted
> for the purposes of calculating the collation string for each
> member of the
> sort.
>
> I hope the example below helps.
>
> ................ Ken
>
> T:\ftemp>type bert.xml
> <alfabet>
> <letter>a</letter>
> <letter>b</letter>
> <letter>c</letter>
> <letter>d</letter>
> </alfabet>
>
> T:\ftemp>type bert.xsl
> <?xml version="1.0" encoding="iso-8859-1"?>
> <!DOCTYPE xsl:stylesheet [
> <!ENTITY given 'abcdefghijklmnopqrstuvwxyz'>
> <!ENTITY needed 'abzcdefghijklmnopqrstuvwxy'>
> ]>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
>
> <xsl:output method="text"/>
>
> <xsl:template match="/">
> <xsl:for-each select="/*/letter">
> <xsl:sort select="translate(.,'&given;','&needed;')"/>
> <xsl:value-of select="."/>
> <xsl:text>
> </xsl:text>
> </xsl:for-each>
> </xsl:template>
>
> </xsl:stylesheet>
> T:\ftemp>saxon bert.xml bert.xsl
> a
> b
> d
> c
>
> T:\ftemp>
|