Subject: RE: Sorting network addresses
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 2 Mar 2005 14:47:07 -0000
|
Saxon allows you to define a collation based on your own Java comparator
class.
However, a better solution I think would be to write a function that
normalizes the value into something that collates naturally: in 2.0 you can
then invoke this function to calculate the sort key.
xsl:sort select="my:mangler(ip-address)"
xsl:function name="my:mangler"
xsl:param...
xsl:for-each select="tokenize(...)"
xsl:value-of select="format-number(...)"
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Craig W [mailto:codecraig@xxxxxxxxx]
> Sent: 02 March 2005 12:51
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Sorting network addresses
>
> Hi,
> Is there a way to extend the sort function provided by XSLT? I am
> using XALAN. Basically, the elements that I need to sort need a more
> specific sort than just text or number.
>
> well the default sorts are on number or text. But say I want to sort
> on network addresses, such as 1.2.3.4 ....text and number dont work
> here, I need my own sorting (like i would do with a Comparator in
> java)..
>
> so if i had
>
> 1.2.3.4
> 170.1.3.3
> 2.4.3.2
>
> I would want the sort to be like
> 1.2.3.4
> 2.4.3.2
> 170.1.3.3
>
> ...however (number sort wont work) and text sort does
> 1.2.3.4
> 170.1.3.3
> 2.4.3.2
>
> see what i mean?
>
> A sample XML may be like
> ...
> <networks>
> <network>
> <address>1.2.3.4</address>
> </network>
> <network>
> <address>170.1.3.3</address>
> </network>
> <network>
> <address>2.4.3.2</address>
> </network>
> </networks>
>
> ....after sort i would like...
>
> <networks>
> <network>
> <address>1.2.3.4</address>
> </network>
> <network>
> <address>2.4.3.2</address>
> </network>
> <network>
> <address>170.1.3.3</address>
> </network>
> </networks>
>
>
> Someone suggested a key, but I am not sure how that works or how to
> make it sort on a network address. Any ideas?
>
> Thanks,
> Craig
| Current Thread |
Michael Kay - 2 Mar 2005 14:47:35 -0000 <=
- Craig W - 2 Mar 2005 14:55:20 -0000
|
|