RE: [xsl] Need help with special sorting

Subject: RE: [xsl] 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>

Current Thread