RE: [xsl] Correctly sorting ID's

Subject: RE: [xsl] Correctly sorting ID's
From: "Niki Dinsey - CSW" <niki.dinsey@xxxxxxxxx>
Date: Tue, 21 Jan 2003 18:26:45 -0000
Thank you to everyone for their replies this afternoon, esp. Jeni and
Steven who have given me a working solution to this annoying problem. 

Niki Dinsey

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Michael Kay
Sent: 21 January 2003 17:27
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx;
xsl-list-digest@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Correctly sorting ID's

> 
> In a transform, is it possible to correctly sort these poorly 
> formed id's listed below

If you're prepared to write some recursive XSLT code to transform the
keys, you could achieve this by the technique of prefixing each numeric
component with a digit indicating its length. Thus 1 becomes 11, 10
becomes 210, 15 becomes 215, 109 becomes 3109. This will give you a key
that collates alphabetically.

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 

> 
> Currently my standard sort:
> 
> <xsl:apply-templates>
> 	<xsl:sort select="node()/@id"/>
> </xsl:apply-templates>
> 
> Returns this:
> 
> <someNode id="CM09.1"/>
> <someNode id="CM09.1.5"/>
> <someNode id="CM09.10"/>
> <someNode id="CM09.10.10.3"/>
> <someNode id="CM09.10.15"/>
> <someNode id="CM09.18.2"/>
> <someNode id="CM09.2"/>
> <someNode id="CM09.2.2"/>
> <someNode id="CM09.22"/>
> <someNode id="CM09.22.1"/>
> 
> it's the old classic... 1 then 10 before 2 etc.
> 
> I really need them sorted like the following:
> 
> <someNode id="CM09.1"/>
> <someNode id="CM09.1.5"/>
> <someNode id="CM09.2"/>
> <someNode id="CM09.2.2"/>
> <someNode id="CM09.10"/>
> <someNode id="CM09.10.10.3"/>
> <someNode id="CM09.10.15"/>
> <someNode id="CM09.18.2"/>
> <someNode id="CM09.22"/>
> <someNode id="CM09.22.1"/>
> 
> I'm looking now to see if I can work this out and I was 
> wondering if anybody would be able to help me with the 
> correct sort selection.
> 
> The only other issue to be aware of is that the dots can go 
> on indefinitely and I don't know until runtime the highest 
> number of dot's in the any one id will be.
> 
> If anybody could point me to a resource that deals with this 
> I would be most grateful.
> 
> Regards,
> 
> Niki Dinsey
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread