Re: [xsl] Tokenized String Sorting Puzzle/Problem

Subject: Re: [xsl] Tokenized String Sorting Puzzle/Problem
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Wed, 26 Mar 2008 14:35:03 +0100
Scott Lynch wrote:

What I can't seem to accomplish is sorting the resulting pairs into numerical order based on the first and then the second values in each pair. Like this (this line breaks are just for visual clarity in this email and are not necessary in the transform):

"1 0", "1 1", "1 2", "1 3", "1 4", "2 0", "2 1", "2 3", "2 4", "5 0", "6 0", "10 0", "10 1", "10 2"

Assuming your pairs are in a sequence of items $result where each item is "1 0" or "1 1" etc (i.e., two numbers separated by a space) why not doing someting like this:


<xsl:for-each select="$result">
   <xsl:sort select="tokenize(., ' ')[1]" data-type="numeric" />
   <xsl:sort select="tokenize(., ' ')[2]" data-type="numeric" />
   .... do your thing ...
</xsl:for-each>

but I haven't done too much XSLT lately so I may have missed the obvious ;)

Cheers,
-- Abel Braaksma

Current Thread