* Jirka Kosek; <[EMAIL PROTECTED]> on 24 Sep, 2002 wrote: >default (usually English) I must specify language. E.g. if I want to >sort something using Czech collating, I must specify it: > ><xsl:sort select="..." lang="cs"/>
Ok so far means I got it correct, however the output is not sorted according to the Language attribute. I must be doing something wrong ? Here are the things I have done : 1) Create Compare_tr class package com.icl.saxon.sort; import java.text.Collator; import java.util.Locale; // Copyright © International Computers Limited 1998 // See conditions of use /** * A Comparer used with lang="tr". * * author Jirka Kosek ([EMAIL PROTECTED]) * <p> * First seen in docbook-apps mailinglist * * * Modified for use with Turkish used with lang="tr" * * @author Togan Muftuoglu ([EMAIL PROTECTED]> * */ public class Compare_tr extends TextComparer { int caseOrder = UPPERCASE_FIRST; /** * Compare two string objects, in three phases: * (a) ignoring accents and case * (b) if still equal, ignoring case * (c) if still equal, taking case into account * @return <0 if a<b, 0 if a=b, >0 if a>b */ public int compare(Object a, Object b) { Collator trCollator = Collator.getInstance(new Locale("tr", "TR")); return trCollator.compare(a, b); } public Comparer setCaseOrder(int caseOrder) { this.caseOrder = caseOrder; return this; } } 2) Modified autoidx.xsl as follows when there was <xsl:sort.. > I added the lang="tr" <?xml version="1.0"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY lowercase "'abcçdefgğhıijklmnoöprsştuüvyz'"> <!ENTITY uppercase "'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ'"> <!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'> <!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas)]))'> <!ENTITY tertiary 'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas)]))'> <!ENTITY sep '" "'> ]> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> <!-- ==================================================================== --> <!-- Derived from Jeni Tennison's work in the HTML case --> <xsl:key name="letter" match="indexterm" use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> <xsl:key name="primary" match="indexterm" use="&primary;"/> <xsl:key name="secondary" match="indexterm" use="concat(&primary;, &sep;, &secondary;)"/> <xsl:key name="tertiary" match="indexterm" use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> <xsl:key name="see-also" match="indexterm[seealso]" use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso)"/> <xsl:key name="see" match="indexterm[see]" use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see)"/> <xsl:template name="generate-index"> <xsl:variable name="terms" select="//indexterm[count(.|key('letter', translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[1]) = 1]"/> <xsl:variable name="alphabetical" select="$terms[contains(concat(&lowercase;, &uppercase;), substring(&primary;, 1, 1))]"/> <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;, &uppercase;), substring(&primary;, 1, 1)))]"/> <fo:block> <xsl:if test="$others"> <fo:block font-size="16pt" font-weight="bold" keep-with-next.within-column="always" space-before="1em"> <xsl:call-template name="gentext"> <xsl:with-param name="key" select="'index symbols'"/> </xsl:call-template> </fo:block> <fo:block> <xsl:apply-templates select="$others[count(.|key('primary', &primary;)[1]) = 1]" mode="index-symbol-div"> <xsl:sort select="&primary;" lang="tr" /> </xsl:apply-templates> </fo:block> .......... .......... </xsl:stylesheet> 3) I have imported the autoidx_tr.xsl into my customization <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> <xsl:import href="http://docbook.sourceforge.net/release/xsl/snapshot/fo/docbook.xsl"/> <xsl:import href="/home/toganm/sgml/xsl/autoidx_tr.xsl"/> ..... </xsl:stylesheet> 4) LANG=tr ~/sbin/parser.sh indexturkce3.fo indexterm.002.xml \ ~/sgml/xsl/fop-common.xsl >error.txt 2>&1 where parser.sh includes all the JAR paths including Compare_tr location along with Catalog reseolvers ( I use Saxon 6.5.2 with SunJava version "1.3.1_02" Under Linux I normally have tr_TR-UTF-8 locale I have tried width the LANG=tr and LANG=tr_TR-UTF-8 5) When I do grep Compare error.txt tehreis no sign of Compare_tr being loaded [Loaded java.io.ObjectStreamClass$CompareClassByName from /usr/lib/SunJava2-1.3.1/jre/lib/rt.jar] [Loaded java.io.ObjectStreamClass$CompareMemberByName from /usr/lib/SunJava2-1.3.1/jre/lib/rt.jar] [Loaded com.icl.saxon.sort.NodeOrderComparer] [Loaded com.icl.saxon.sort.LocalOrderComparer] [Loaded com.icl.saxon.sort.Comparer] [Loaded com.icl.saxon.sort.TextComparer] [Loaded com.icl.saxon.sort.StringComparer] [Loaded com.icl.saxon.sort.Compare_en] [Loaded com.icl.saxon.sort.DoubleComparer] [Loaded com.icl.saxon.sort.DescendingComparer] 6) Result is wrong order of the alphabet ? So what is that I am missing -- Togan Muftuoglu