xsl-list
[Top] [All Lists]

RE: Sorting alpha numeric values

2003-05-09 00:54:26
Use two sort keys, one for the alpha part and one for the numeric part:

<xsl:sort select="translate(@val, '0123456789', '')"/>
<xsl:sort select="translate(@val, 'ABCDE....Z', '')"
data-type="number"/>

Michael Kay

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Hugh Dixon
Sent: 09 May 2003 06:07
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Sorting alpha numeric values


I have a data set:
<Root>
<Elem val = "A1"/>
<Elem val = "A2"/>
<Elem val = "A21"/>
<Elem val = "A3"/>
</Root>

And a template:

<xsl:template match="/">
  <xsl:for-each select="./Root/Elem">
    <xsl:sort select="@val"/>
    <xsl:value-of select="./@val"/>
  </xsl:for-each>
</xsl:template>

I was hoping to sort the Elems into
A1
A2
A3
A21

But I cannot get a hybrid alpha/numeric sort happening.  Is 
there some setting I'm missing, or could someone suggest how 
I can do this.  The ability to create a custom routine on 
which to compare the values would be handy, although I 
suspect the performance could be an issue.

Thanks in Advance!!

Hugh Dixon


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



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



<Prev in Thread] Current Thread [Next in Thread>