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>
--~--