June 2008
Intermediate to advanced
986 pages
27h 8m
English
The other way of using custom collations is in comparing
text. Obviously comparing strings is part of sorting, but the new
compare() function in XQuery 1.0 and XPath 2.0 lets you compare two strings. To use an example from
the XSLT 2.0 spec, the German word for street can
be spelled Straße or
Strasse. A simple character comparison defines
sees these as two different strings; we’ll use a collation function
that recognizes the two words as being equal.
Here’s the complete code:
/** * GermanCollation.java */ package com.oreilly.xslt; import java.text.ParseException; import java.text.RuleBasedCollator; public class GermanCollation extends RuleBasedCollator { public GermanCollation() throws ParseException { super(traditionalGermanRules); } private static String sharpS = new String("\u00DF"); private static String uppercaseUmlautA = new String("\u00C4"); private static String lowercaseUmlautA = new String("\u00E4"); private static String uppercaseUmlautO = new String("\u00D6"); private static String lowercaseUmlautO = new String("\u00F6"); private static String uppercaseUmlautU = new String("\u00DC"); private static String lowercaseUmlautU = new String("\u00FC"); private static String traditionalGermanRules = ("< a,A " + "<" + lowercaseUmlautA + "=ae " + "<" + uppercaseUmlautA + "=AE " + "< b,B < c,C < d,D < e,E < f,F " + "< g,G < h,H < i,I < j,J < k,K " + "< l,L < m,M < n,N < o,O " + "<" + lowercaseUmlautO + "=oe " + "<" + uppercaseUmlautO ...
Read now
Unlock full access