xsl-list
[Top] [All Lists]

RE: Natural Sort

2006-01-25 07:13:59
The first way would also work in XSLT1, the second way uses xpath2
regexp to sort media1 as media01.

It only works if all the numeric parts are one or two digits.

I can't think of an easy way of generalizing it, however.

Michael Kay
http://www.saxonica.com/



David

 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="2.0">
<xsl:output indent="yes" omit-xml-declaration="yes"/>

<xsl:template match="x">
<x>
  <a>
    <xsl:for-each select="server">
      <xsl:sort
        select="translate(substring-before(@dn, '.'),'0123456789','')"
        data-type="text"
        order="ascending"/>
      <xsl:sort
        select="translate(substring-before(@dn, 
'.'),'abcdefghijklmnopqrstuvwxyz','')"
        data-type="number"
        order="ascending"/>
      <xsl:copy-of select="."/>
    </xsl:for-each>
  </a>
  <b>
    <xsl:for-each select="server">
      <xsl:sort 
select="replace(@dn,'([^0-9])([0-9])([^0-9])','$10$2$3')"/>
      <xsl:copy-of select="."/>
    </xsl:for-each>
  </b>
</x>
</xsl:template>

 
</xsl:stylesheet>

______________________________________________________________
__________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
______________________________________________________________
__________

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