조사에 대한 작업
XSLT 스타일시트와 XQuery 및 XPath의 표현식에서는 조사 URI를 사용하여 조사를 참조할 수 있습니다. 조사는 문화권에 특정한 규칙 세트로, 텍스트의 두 부분 사이에서 중요한 차이와 중요하지 않은 차이를 정의하고 텍스트 정렬 방식을 정의합니다.
시작하기 전에
이 문서에서는 java.util.Locale 및 java.text.Collator 클래스에 대한 몇 가지 기본 사항에 익숙하다고 가정합니다.
이 태스크 정보
프로세서는 어떤 방법으로도 조사 URI를 해석하지 않습니다. 프로세서는 해당 URI와 연관된 Java™ Collator 클래스의 인스턴스에 대한 이름 종류로만 조사 URI를 처리합니다. XML API에서는 준비 시간에 기본 조사 URI로 지정할 항목을 지정하고 실행 시간에 조사 URI에 Java Collator 클래스의 인스턴스를 연관시키는 메커니즘을 제공합니다.
XML API를 통해 지정된 모든 조사 URI는 절대 URI 참조여야 합니다. XSLT 스타일시트나 XQuery 또는 XPath 표현식인 경우 조사 URI가 필요한 컨텍스트에서 사용되는 상대적 URI 참조는 해당 표현식의 정적 컨텍스트에서 기본 URI로 분석됩니다. 이를 통해 스타일시트 또는 표현식에서 상대적 URI 참조도 XML API를 통해 지정한 절대 URI 참조와 일치시킬 수 있습니다.
- 조사 URI가 java.text.RuleBasedCollator의 인스턴스가 아닌 Java Collator 클래스의 인스턴스로 바인드된 경우 해당 조사 URI에서 특정 조작은 허용되지 않습니다. 특히 fn:starts-with, fn:ends-with, fn:contains, fn:substring-before, fn:substring-after 함수는 해당 조사 URI에서 지원되지 않습니다.
- 현재 Java 런타임 환경에 포함된 Collator의 모든 인스턴스는 java.text.RuleBasedCollator의 인스턴스이기도 하므로, 대부분의 목적에서 이론적 제한사항에 해당합니다. 그러나 애플리케이션이 Java Collator 클래스의 인스턴스를 정의하는지, 아니면 java.text.RuleBasedCollator의 인스턴스가 아닌 Collator 클래스의 서브클래스를 정의하는지 알아야 합니다.
프로시저
- 기본 조사 URI를 선언하십시오.
XStaticContext 인터페이스에서 setDefaultCollation 메소드를 사용하여 문자열 비교 조작의 기본값으로 사용할 조사 URI를 지정할 수 있습니다. XStaticContext 인터페이스의 기본 조사 URI는 명시적으로 조사 URI를 지정하지 않는 문자열 비교 조작에서 조사 URI로 사용됩니다.
XQuery 표현식은 XStaticContext 인터페이스에 지정된 기본 조사 URI를 기본 조사 선언으로 대체할 수 있습니다. 마찬가지로, XSLT 스타일시트는 기본 조사 URI를 [xsl:]default-collation 속성으로 대체할 수 있습니다. XPath는 기본 조사 URI를 대체하는 방법을 제공하지 않습니다. 그러나 문자열 비교 조작을 수행하는 XPath 또는 XQuery 표현식이나 XSLT 스타일시트는 기본 조사 URI를 대체하도록 명시적 조사 URI를 지정할 수 있습니다.
XSLT 스타일시트나 XQuery 또는 XPath 표현식을 준비할 때 제공하는 XStaticContext 인터페이스의 인스턴스에서 기본 조사를 명시적으로 지정하지 않은 경우 스타일시트 또는 표현식의 기본 조사 URI는 Unicode 코드 포인트 조사 URI: http://www.w3.org/2005/xpath-functions/collation/codepoint/입니다.
문자가 동일하게 간주되어야 하는 동일한 Unicode 문자여야 하는 상황에서 Unicode 코드 포인트 조사를 사용해야 합니다. 이 조사에 의해 정의된 사전순 정렬은 문자의 Unicode 코드 포인트로 판별됩니다(즉, Unicode 코드 차트의 위치). 이 경우 Unicode 코드 포인트 조사를 사용하는 경우 문화권에 따라 다른 방식으로 문자열 비교를 수행하는 조사보다 더 나은 성능을 생성하지만, 정렬 조작에 대해 매우 만족스러운 결과를 제공하지는 못합니다.
다음은 XStaticContext 인터페이스의 인스턴스에서 기본 조사 URI를 지정하는 방법을 보여주는 단순한 예제입니다.// Setting of default collation URI is not changed - default remains // the Unicode code point collation URI XFactory factory = XFactory.newInstance(); XPathExecutable maxPath1 = factory.prepareXPath("max($var)"); // A new default collation URI is specified in the static context // That URI is used in any string comparison for which no other // explicit collation URI is specified XStaticContext sc = factory.newStaticContext(); sc.setDefaultCollation("http://example.org/my-collation"); XPathExecutable maxPath2 = factory.prepareXPath("max($var)", sc);
- 조사 URI를 바인드하십시오.
XML API에서는 실행을 위한 Java Collator 클래스의 인스턴스를 통해 조사 URI를 바인드하는 두 가지 메소드를 제공합니다. XDynamicContext 메소드의 bindCollation 메소드에는 두 개의 인수가 있습니다. 첫 번째 인수는 조사 URI이며, 두 번째 인수는 java.text.Collator 클래스의 인스턴스 또는 java.util.Locale 클래스의 인스턴스입니다. Locale 클래스의 인스턴스를 지정한 경우 프로세서는 해당 로케일에 적합한 Collator 클래스의 인스턴스를 사용합니다.
XSLT, XPath, XQuery는 "정적으로 알려진 조사(Statically Known Collations)"의 개념을 정의합니다. 조사 URI에 대한 참조가 XSLT 스타일시트나 XPath 또는 XQuery 표현식에 나타나고 조사 URI가 정적으로 알려진 조사가 아니면 일부 상황에서는 정적 오류가 보고됩니다. 그러나 프로세서는 정적으로 알려진 조사 세트에 포함된 것과 같이 모든 조사 URI를 처리합니다. 이는 Java Collator 클래스의 인스턴스가 실행 시간까지 실제로 조사 URI와 연관되지 않았기 때문입니다. 그래서 프로세서는 정적으로 알려지지 않은 조사 URI를 판별할 수 없습니다. 대신, 프로세서는 Collator 클래스의 인스턴스에 바인드되지 않은 조사 URI가 스타일시트 또는 표현식에 사용된 경우 동적 오류를 보고합니다.
Java Collator 클래스의 인스턴스에 Unicode 코드 포인트 조사 URI를 바인드할 수 없습니다. 이는 항상 Unicode 코드 포인트 조사에 함축적으로 바인드되어 있습니다.
다음 예제에서는 XDynamicContext 인터페이스의 인스턴스에서 Java Collator 클래스의 특정 인스턴스를 통해 조사 URI를 바인드하는 방법을 보여줍니다.XFactory factory = XFactory.newInstance(); XStaticContext sc = factory.newStaticContext(); // Set up a default collation URI sc.setDefaultCollation("http://example.org/my-collation"); // Prepare an XPath expression that computes fn:max() using the // collator associated with the default collation URI and again using // the Unicode code point collation String expr = "max($var)," + "max($var,'http://www.w3.org/2005/xpath-functions/collation/codepoint')"; XPathExecutable maxPath = factory.prepareXPath(expr, sc); XDynamicContext dc = factory.newDynamicContext(); // Set the value of the variable $var dc.bind(new QName("var"), new String[] {"encyclopaedia", // U+00E6 is lower case latin ae ligature "encyclop\u00E6dia", "encyclopedia"}); // Set up a Collator for English that does not distinguish between // capitals, lower-case letters and certain character variants Collator english = (Collator) Collator.getInstance(Locale.ENGLISH).clone(); english.setStrength(Collator.SECONDARY); // Evaluate the expression with that English collator associated with // the default collation URI dc.bindCollation("http://example.org/my-collation", english); XSequenceCursor maxValues = maxPath.execute(dc); // Print maximum values - expected results are // encyclopedia for English collation and // encyclop\u00E6dia for Unicode code point collation if (maxValues != null) { do { System.out.println(maxValues.getStringValue()); } while (maxValues.toNext()); }


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_collations
파일 이름:txml_collations.html