xsl-list
[Top] [All Lists]

Re: [xsl] Special Sort order

2008-05-08 06:45:45
I was looking at this problem this morning and like your solution with
translate() to bias the sort.

To account for cases where Z and 0-9 need to be sorted with Z ahead of
numbers, I suggest modifying the 2nd <xsl:sort> as follows:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="NLIST">
        <xsl:for-each select="NITEM">
                <xsl:sort select="translate(PNR,'0123456789','ZZZZZZZZZZ')"/>
<!--Sorts with numbers pushed to same position as Z-->
                <xsl:sort select="translate(PNR,'9876543210Z','ZYXWVUTSRQP')"/>
<!--Next sort with numbers ahead of Z-->
                <xsl:value-of select="."/>
        </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Using a modified XML:
<NLIST>
   <NITEM>
     <PNR>AN4</PNR>
   </NITEM>
    <NITEM>
     <PNR>A0B</PNR>
   </NITEM>
    <NITEM>
     <PNR>AZB</PNR>
   </NITEM>
   <NITEM>
     <PNR>7228590-901</PNR>
   </NITEM>
   <NITEM>
     <PNR>291300A</PNR>
   </NITEM>
   <NITEM>
     <PNR>CCR244SS-3-2</PNR>
   </NITEM>
   <NITEM>
     <PNR>7028590-901</PNR>
   </NITEM>
    <NITEM>
     <PNR>MS20995C20</PNR>
   </NITEM>
 </NLIST>

Output is:

     AN4
     AZB
     A0B
     CCR244SS-3-2
     MS20995C20
     291300A
     7028590-901
     7228590-901

Darcy
On Thu, May 8, 2008 at 8:39 AM, David Carlisle 
<davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:


 <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>


 <xsl:template match="NLIST">
 <xsl:for-each select="NITEM">
 <xsl:sort select="translate(PNR,'0123456789','ZZZZZZZZZZ')"/>
 <xsl:sort select="."/>
 <xsl:value-of select="."/>

 </xsl:for-each>
 </xsl:template>
 </xsl:stylesheet>


 $ saxon sn.xml sn.xsl
 <?xml version="1.0" encoding="utf-8"?>
      AN4

      A0B

      CCR244SS-3-2

      MS20995C20

      291300A

      7028590-901

 ________________________________________________________________________
 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.
 ________________________________________________________________________



 --~------------------------------------------------------------------
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
 To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
 or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
 --~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>