Re: [xsl] Problem sorting alphabetically: all uppercase entries come first.

Subject: Re: [xsl] Problem sorting alphabetically: all uppercase entries come first.
From: Jeff Kenton <jkenton@xxxxxxxxxxxxx>
Date: Tue, 16 Dec 2003 09:54:02 -0500
Jeff Kenton wrote:
David Carlisle wrote:

You can see it works quite well except that words starting with uppercase letters come first. I am guessing it is sorting by ASCII values.

We had a long thread on sorting uppercase a while back. It turns out that the whole world (including at least some xslt implementors, but not including Stan and me) took a very unreasonable reading of the sorting specification in the XSLT spec.

the end result is that you should get "sensible" results in all
processors but you will get different results.

I think in this case you want a case insensitive sort and its basically
english text so..

I'm pretty sure that the XSLT spec requires this kind of sorting (dictionary order). What processor are you using?

Here's what the spec says about sorting:

10 Sorting

data-type specifies the data type of the strings; the following values are allowed:
o text specifies that the sort keys should be sorted lexicographically in the culturally correct manner for the language specified by lang

The default value is text.
case-order has the value upper-first or lower-first; this applies when data-type="text", and specifies that upper-case letters should sort before lower-case letters or vice-versa respectively. For example, if lang="en", then A a B b are sorted with case-order="upper-first" and a A b B are sorted with case-order="lower-first". The default value is language dependent.

To me, this says that sorting English by ASCII values, as reported by the original poster, is incorrect.

XSL-List info and archive:

Current Thread