This document is an editor's copy. It supports markup to identify changes from a previous version. Two kinds of changes are highlighted: new, added text, and deleted text.

This is the first version of this document.

[ contents ]

Implementation of Requirements for Internationalization and Localization

W3C Working Draft ?? ?? 2005

This version:
http://www.w3.org/TR/2005/WD-its-impl-????
Latest version:
http://www.w3.org/TR/its-impl
Editor:
TODO, TODO

Abstract

This document defines data categories and their implementation as a set of elements and attributes that can be used with new and existing schemas to support the internationalization and localization of schemas and documents. The implementation is provided for the three schema languages XML DTDs, XML Schema and RELAX NG respectively. In addition, implementations as fixed modularizations of various existing vocabularies (e.g. XHTML, DocBook, OpenOffice schema) are provided.

Status of this Document

This document is an editors' copy that has no official standing.

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This is a First Public Working Draft of "Implementation of Requirements for Internationalization and Localization (its-impl)".

This document defines data categories and their implementation as a set of elements and attributes that can be used with new and existing schemas to support the internationalization and localization of schemas and documents. The implementation is provided for the three schema languages XML DTDs, XML Schema and RELAX NG respectively. In addition, implementations as fixed modularizations of various existing vocabularies (e.g. XHTML, DocBook, OpenOffice schema) are provided.

This document was developed by the Internationalization ITS Working Group, part of the W3C Internationalization Activity. The Working Group expects to advance this Working Draft to Recommendation Status (see W3C document maturity levels).

Send your comments to www-i18n-comments@w3.org. Use "Comment on its-impl WD" in the subject line of your email. The archives for this list are publicly available.

Per section 4 of the W3C Patent Policy, Working Group participants have 150 days from the title page date of this document to exclude essential claims from the W3C RF licensing requirements with respect to this document series. Exclusions are with respect to the exclusion reference document, defined by the W3C Patent Policy to be the latest version of a document in this series that is published no later than 90 days after the title page date of this document.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document was produced under the 5 February 2004 W3C Patent Policy. Since the Working Group expects this document to become a W3C Recommendation, under that policy it has associated W3C Royalty-Free Licensing oblications. The Working Group maintains a public list of patent disclosures relevant to this document; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.

Table of Contents

Appendices

B References (Non-Normative)

Go to the table of contents.1 Introduction

TODO

Go to the table of contents.1.1 Scope of this Specification

TODO

Go to the table of contents.1.2 Out of Scope

TODO

Go to the table of contents.1.3 Application Scenarios

TODO

Go to the table of contents.2 Notation and Terminology

TODO

Go to the table of contents.2.1 Notation and Terminology

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

Go to the table of contents.2.2 Data Category

TODO

Go to the table of contents.2.3 Schema Language

TODO

Go to the table of contents.2.4 Data Category Implementation

TODO

Go to the table of contents.3 Description of Data Categories

todo

Go to the table of contents.3.1 Annotation Markup

TODO

Go to the table of contents.3.1.1 Description

This section is informative.

[This is all taken from the Ruby specification, see http://www.w3.org/TR/ruby/#intro.]

Ruby is the term used for a run of text that is associated with another run of text, referred to as the base text. Ruby text is used to provide a short annotation of the associated base text. It is most often used to provide a reading (pronunciation guide). Ruby annotations are used frequently in Japan in many kinds of publications, including books and magazines. Ruby is also used in China, especially in schoolbooks.

[TODO: A more detailed description might be integreated here.]

3.1.1.1Simple ruby markup

TODO, see also http://www.w3.org/TR/ruby/#simple-ruby1.

3.1.1.2Simple ruby markup with parantheses

TODO, see also http://www.w3.org/TR/ruby/#simple-parenthesis.

3.1.1.3Complex ruby markup

TODO, see also http://www.w3.org/TR/ruby/#complex.

3.1.1.4Summary

TODO, see also http://www.w3.org/TR/ruby/#summary.

Go to the table of contents.3.1.2 Implementation

This section is normative.

3.1.2.1Implementation as Schema Annotation

Annotation markup is not implemented as Schema Annotation. [In case of other requirements, there might be a schema annotation, e.g. the "indicator of translatability" requirement. For such requirements, the schema annotation must be given for all three schema languages, to ensure reliable processing of the annotations.]

3.1.2.2Implementation as a DTD

TODO.

[A problem here: What markup should be used for the definitions? the <example> tags seems not to be appropriate. I used it just because I did not know an alternative.]

Example 1: Definition of the DTD module.

This is an implementation as an DTD module. The module is identical to the XHTML Ruby Module.

<!ELEMENT text (#PCDATA | ruby)*>
<!ELEMENT ruby ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))>
<!ELEMENT rbc (rb+)>
<!ELEMENT rtc (rt+)>
<!ELEMENT rb (#PCDATA)>
<!ELEMENT rt (#PCDATA)>
<!ELEMENT rp (#PCDATA)>
3.1.2.3Implementation as an XML Schema

This is an implementation as an XML Schema. The module is based on the XHTML Ruby Module.

[Note: all schemas have no targetNamespace attribute], i.e. they are designed as chameleon schemas (see slide 96ff. in xml schema tutorial.)]

Example 2: Implementation as an XML Schema without named types
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">
 <xs:element name="text">
  <xs:complexType mixed="true">
   <xs:sequence>
    <xs:element ref="ruby" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="ruby">
  <xs:complexType>
   <xs:choice>
    <xs:sequence>
     <xs:element ref="rb"/>
     <xs:choice>
      <xs:element ref="rt"/>
      <xs:sequence>
       <xs:element ref="rp"/>
       <xs:element ref="rt"/>
       <xs:element ref="rp"/>
      </xs:sequence>
     </xs:choice>
    </xs:sequence>
    <xs:sequence>
     <xs:element ref="rbc"/>
     <xs:element ref="rtc"/>
     <xs:element ref="rtc" minOccurs="0"/>
    </xs:sequence>
   </xs:choice>
  </xs:complexType>
 </xs:element>
 <xs:element name="rbc">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="rb" maxOccurs="unbounded"/> 
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="rtc">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="rt" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="rb" type="xs:string"/>
 <xs:element name="rt" type="xs:string"/>
 <xs:element name="rp" type="xs:string"/>
</xs:schema>
Example 3: Implementation as an XML Schema with named types and global elements
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified ">
 <xs:complexType name="TextType" mixed="true">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
   <xs:element ref="ruby"/>
  </xs:choice>
 </xs:complexType>
 <xs:element name="text" ref="TextType"/>
 <xs:complexType name="RubyType">
  <xs:choice>
   <xs:sequence>
    <xs:element ref="rb"/>
    <xs:choice>
     <xs:element ref="rt"/>
     <xs:sequence>
      <xs:element ref="rp"/>
      <xs:element ref="rt"/>
      <xs:element ref="rp"/>
     </xs:sequence>
    </xs:choice>
   </xs:sequence>
   <xs:sequence>
    <xs:element ref="rbc"/>
    <xs:element ref="rtc"/>
    <xs:element ref="rtc" minOccurs="0"/>
   </xs:sequence>
  </xs:choice>
 </xs:complexType>
 <xs:element name="ruby" ref="RubyType"/>
 <xs:complexType name="RbcType">
  <xs:sequence>
   <xs:element ref="rb" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>
 <xs:element name="rbc" ref="RbcType"/>
 <xs:complexType name="RtcType">
  <xs:sequence>
   <xs:element ref="rt" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>
 <xs:element name="rtc" ref="RtcType"/>
 <xs:complexType name="RbType" mixed="true">
  <xs:simpleContent>
   <xs:extension base="xs:string"/>
  </xs:simpleContent>
 </xs:complexType>
 <xs:element name="rb" ref="RbType"/>
 <xs:complexType name="RtType" mixed="true">
  <xs:simpleContent>
   <xs:extension base="xs:string"/>
  </xs:simpleContent>
 </xs:complexType>
 <xs:element name="rt" ref="RtType"/>
 <xs:complexType name="RpType" mixed="true">
  <xs:simpleContent>
   <xs:extension base="xs:string"/>
  </xs:simpleContent>
 </xs:complexType>
 <xs:element name="rp" ref="RpType"/>
</xs:schema>
3.1.2.4Implementation as a RELAX NG Schema

This is an implementation as an RELAX NG Schema. The module is based on the XHTML Ruby Module.

Example 4: Implementation in RELAX NG
text = element text { (text | ruby)* }
ruby =
  element ruby {
    (rb,
     (rt | (rp, rt, rp)))
    | (rbc, rtc, rtc?)
  }
rbc = element rbc { rb+ }
rtc = element rtc { rt+ }
rb = element rb { text }
rt = element rt { text }
rp = element rb { text }

Go to the table of contents.3.1.3 Modulariation

3.1.3.1Modularization within XHTML

[Here we can refer to ruby module defined in the original ruby specification, cf. XHTML Ruby Module.]

3.1.3.2Modularization within DocBook

TODO

3.1.3.3Modularization within OpenOffice

TODO