[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Natural Sort


Subject: RE: [xsl] Natural Sort
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 25 Jan 2006 14:13:59 -0000

> 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
> ______________________________________________________________
> __________


Current Thread