[xsl] Problem with xsl:sort and German

Subject: [xsl] Problem with xsl:sort and German
From: <jjett2@xxxxxxxxxxxx>
Date: Mon, 10 Aug 2009 11:36:28 -0500 (CDT)
Hi all:

I'm experiencing some problems with German and sorting. In researching I found
that there have been similar problems in the past which seem unresolved (see
[xsl] Problem with xsl:sort and German Umlauts with libxslt). Was this issue
ever resolved?

I'm using xsl 1.0 and the Saxon-B 9.1.0.6 transformer (rather than the
libxslt). I believe I have told the xslt to sort using German (i.e.
lang='de'). My sort statement looks like this:

<xsl:sort select="translate(normalize-space((
analytic/author/text()[normalize-space()],
monogr/author/text()[normalize-space()],
analytic/title/text()[normalize-space()],
monogr/editor/text()[normalize-space()],
monogr/title/text()[normalize-space()],
monogr/meeting/text()[normalize-space()] )[1]),
'adbcdefghijklmnovpqrs_tu|vwxyz.-_,()[]/:;&quot;?''',
'ADBCDEFGHIJKLMNOVPQRS_TU\VWXYZ')" lang="de" order="ascending"/>

As you can see a translate function is being used to remove unwanted
characters such as punctuation.

Letters with umlauts are not correctly sorted. In this case the umlauts are
ignored and the letters are treated as plain letters.
(e.g. incorrectly sorted)
Bdte, Ludwig...
Batt, Kurt...

What would be desirable is to sort the letters with umlauts to positions that
directly follow their siblings without umlauts.
(e.g. - desired sorting)
Batt, Kurt...
.
.
Bayer, Kurt...
Bdte, Ludwig...

Similarly the _ (ess-zett) character is not being properly sorted, appearing
before entries with the letter s.
(e.g. -incorrectly sorted)
Ba_ler, Moritz...
Bastian, [Horst]...
Bastian, Horst and Bernhard Blaschke...

This character should appear after s.
(e.g. -correctly sorted)
Bastian, [Horst]...
Bastian, Horst and Bernhard Blaschke...
Ba_ler, Moritz...

Any advice regarding where I have gone wrong with my xslt would be greatly
appreciated. Many thanks in advance.

Regards,

Jacob Jett

Current Thread