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: http://www.mulberrytech.com/xsl/xsl-list