<!-- This version of CharacterMapping.dtd is modified by Markus Scherer on 2001-08-09 to include the proposed additions from L2/01-180: 1. add XML mapping table support for "subchar1" as used in IBM converters 2. add XML mapping table support for simple stateful (SI/SO) encodings 3. add XML mapping table support for ISO 2022 country variants The additions are marked with comments MS1..MS3. --> <!ELEMENT characterMapping (history?, ((validity|stateful_siso), assignments)|iso2022)> <!-- MS2: add stateful_siso as alternative to validity --> <!-- MS3: add iso2022 as alternative to validity/stateful_siso and assignments --> <!ATTLIST characterMapping id CDATA #REQUIRED version CDATA #REQUIRED description CDATA #IMPLIED contact CDATA #IMPLIED registrationAuthority CDATA #IMPLIED registrationName CDATA #IMPLIED copyright CDATA #IMPLIED bidiOrder (logical|RTL|LTR) "logical" combiningOrder (before|after) "after" normalization (undetermined|neither|NFC|NFD|NFC_NFD) "undetermined" > <!-- MS2: define stateful_siso element, contains two validity specifications: the single-byte specification followed by the double-byte specification --> <!ELEMENT stateful_siso (validity, validity)> <!ELEMENT history (modified+)> <!ELEMENT modified (#PCDATA)> <!ATTLIST modified version CDATA #REQUIRED date CDATA #REQUIRED > <!ELEMENT validity (state+)> <!ELEMENT state EMPTY> <!ATTLIST state type CDATA #REQUIRED next CDATA #REQUIRED s CDATA #REQUIRED e CDATA #IMPLIED max CDATA #IMPLIED > <!ELEMENT assignments (a*, fub*, fbu*, sub1*, range*)><!-- MS1: add sub1* elements --> <!ATTLIST assignments sub NMTOKENS "1A" sub1 NMTOKEN #IMPLIED ><!-- MS1: add optional sub1* attribute --> <!ELEMENT a EMPTY> <!ATTLIST a b NMTOKENS #REQUIRED u NMTOKENS #REQUIRED c CDATA #IMPLIED v CDATA #IMPLIED > <!ELEMENT fub EMPTY> <!ATTLIST fub b NMTOKENS #REQUIRED u NMTOKENS #REQUIRED c CDATA #IMPLIED ru CDATA #IMPLIED rc CDATA #IMPLIED v CDATA #IMPLIED > <!ELEMENT fbu EMPTY> <!ATTLIST fbu b NMTOKENS #REQUIRED u NMTOKENS #REQUIRED v CDATA #IMPLIED > <!ELEMENT sub1 EMPTY><!-- MS1: add definition of sub1 element with attributes --> <!ATTLIST sub1 u NMTOKENS #REQUIRED c CDATA #IMPLIED v CDATA #IMPLIED > <!ELEMENT range EMPTY> <!ATTLIST range bFirst NMTOKENS #REQUIRED bLast NMTOKENS #REQUIRED uFirst NMTOKENS #REQUIRED uLast NMTOKENS #REQUIRED bMin NMTOKENS #REQUIRED bMax NMTOKENS #REQUIRED v CDATA #IMPLIED > <!-- MS3: define iso2022 element and sub-elements, lists ISO 2022 announcers and sub-mapping tables --> <!ELEMENT iso2022 (default2022?, (escape|so|ss2|ss3)+)> <!-- encoding used in the initial state; if this element is missing, then US-ASCII is the initial encoding --> <!ELEMENT default2022 EMPTY> <!ATTLIST default2022 name NMTOKEN #REQUIRED > <!-- sequence attributes contain the hexadecimal byte values of the invocation sequences in a ISO 2022 variant name attribute contain canonical names of embedded encodings and refer to mapping tables outside of the document that defines an ISO 2022 variant --> <!ELEMENT escape EMPTY> <!ATTLIST escape sequence NMTOKENS #REQUIRED name NMTOKEN #REQUIRED > <!ELEMENT so (designator+)> <!ELEMENT ss2 (designator+)> <!ELEMENT ss3 (designator+)> <!ELEMENT designator EMPTY> <!ATTLIST designator sequence NMTOKENS #REQUIRED name NMTOKEN #REQUIRED > <!-- MS3: end of iso2022 and sub-elements -->