|
Subject: Re: [xsl] Natural Sort From: David Carlisle <davidc@xxxxxxxxx> Date: Wed, 25 Jan 2006 11:03:23 GMT |
me> You could in XSLT2, in XSLT1 you could do:
To be more explict
starting from here
<x>
<server dn="members10.mysite.com" id="Server491" os="FreeBSD 4.11"/>
<server dn="media2.mysite.com" id="Server488" os="Fedora Core 1"/>
<server dn="media10.mysite.com" id="Server433" os="Fedora Core 1"/>
<server dn="members1.mysite.com" id="server322" os="Debian Linux"/>
<server dn="members2.mysite.com" id="Server435" os="Fedora Core 2"/>
<server dn="media1.mysite.com" id="server392" os="FreeBSD 5.1"/>
</x>
The following stylesheet shows two ways of getting to
<server dn="media1.mysite.com" id="server392" os="FreeBSD 5.1"/>
<server dn="media2.mysite.com" id="Server488" os="Fedora Core 1"/>
<server dn="media10.mysite.com" id="Server433" os="Fedora Core 1"/>
<server dn="members1.mysite.com" id="server322" os="Debian Linux"/>
<server dn="members2.mysite.com" id="Server435" os="Fedora Core 2"/>
<server dn="members10.mysite.com" id="Server491" os="FreeBSD 4.11"/>
The first way would also work in XSLT1, the second way uses xpath2
regexp to sort media1 as media01.
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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Natural Sort, David Carlisle | Thread | RE: [xsl] Natural Sort, Michael Kay |
| Re: [xsl] Natural Sort, David Carlisle | Date | [xsl] [ANN] RenderX released XEP 4., Michael Sulyaev |
| Month |