E. XHTML Schema Module Implementations

Contents

This appendix is normative.

This appendix contains implementations of the modules defined in this specification via XML Schema [XMLSCHEMA].

E.1. Required Modules

E.1.1. Datatypes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns="http://www.w3.org/1999/xhtml/datatypes/"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
 targetNamespace="http://www.w3.org/1999/xhtml/datatypes/"
 elementFormDefault="qualified"
>
    <xs:annotation>
        <xs:documentation>
          XHTML Datatypes
          This is the XML Schema datatypes module for XHTML
          Defines containers for the XHTML datatypes, many of
          these imported from other specifications and standards.
          $Id: xhtml-datatypes-2.xsd,v 1.1.2.1 2009/01/16 17:50:25 ahby Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
    </xs:annotation>
    <!-- nn for pixels or nn% for percentage length -->
    <xs:simpleType name="Length">
        <xs:union memberTypes="xs:nonNegativeInteger">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:pattern value="\d+[%]|\d*\.\d+[%]"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
    <!-- space-separated list of link types -->
    <xs:simpleType name="LinkTypes">
        <xs:list itemType="xs:NMTOKEN"/>
    </xs:simpleType>
    <!-- single or comma-separated list of media descriptors -->
    <xs:simpleType name="MediaDesc">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- pixel, percentage, or relative -->
    <xs:simpleType name="MultiLength">
        <xs:union memberTypes="xh11d:Length">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:pattern value="\d*\*"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
    <!-- one or more digits (NUMBER) -->
    <xs:simpleType name="Number">
        <xs:restriction base="xs:nonNegativeInteger"/>
    </xs:simpleType>
    <!-- integer representing length in pixels -->
    <xs:simpleType name="Pixels">
        <xs:restriction base="xs:nonNegativeInteger"/>
    </xs:simpleType>
    <!-- script expression -->
    <xs:simpleType name="Script">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- sixteen color names or RGB color expression-->
    <xs:simpleType name="Color">
        <xs:union memberTypes="xs:NMTOKEN">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:pattern value="#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
    <!-- textual content -->
    <xs:simpleType name="Text">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- Imported Datatypes  -->
    <!-- a single character, as per section 2.2 of [XML] -->
    <xs:simpleType name="Character">
        <xs:restriction base="xs:string">
            <xs:length value="1" fixed="true"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- a character encoding, as per [RFC2045] -->
    <xs:simpleType name="Charset">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- a space separated list of character encodings, as per [RFC2045] -->
    <xs:simpleType name="Charsets">
        <xs:list itemType="Charset"/>
    </xs:simpleType>
    <!-- media type, as per [RFC2045] -->
    <xs:simpleType name="ContentType">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- comma-separated list of media types, as per [RFC2045] -->
    <xs:simpleType name="ContentTypes">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- date and time information. ISO date format -->
    <xs:simpleType name="Datetime">
        <xs:restriction base="xs:dateTime"/>
    </xs:simpleType>
    <!-- formal public identifier, as per [ISO8879] -->
    <xs:simpleType name="FPI">
        <xs:restriction base="xs:normalizedString"/>
    </xs:simpleType>
    <!-- a window name as used in the target attribute -->
    <xs:simpleType name="FrameTarget">
      <xs:union>
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="_blank"/>
            <xs:enumeration value="_self"/>
            <xs:enumeration value="_parent"/>
            <xs:enumeration value="_top"/>
          </xs:restriction>
        </xs:simpleType>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:pattern value="[a-zA-Z].*"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:union>
    </xs:simpleType>
    <!-- a language code, as per [RFC3066] -->
    <xs:simpleType name="LanguageCode">
        <xs:restriction base="xs:language"/>
    </xs:simpleType>
    <!-- a comma separated list of language ranges -->
    <xs:simpleType name="LanguageCodes">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- a Uniform Resource Identifier, see [URI] -->
    <xs:simpleType name="URI">
        <xs:restriction base="xs:anyURI"/>
    </xs:simpleType>
    <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
    <xs:simpleType name="URIs">
        <xs:list itemType="xs:anyURI"/>
    </xs:simpleType>
    <!-- comma-separated list of MultiLength -->
    <xs:simpleType name="MultiLengths">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- character Data -->
    <xs:simpleType name="CDATA">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- CURIE placeholder datatypes -->
    <xs:simpleType name="CURIE">
        <xs:restriction base="xs:string">
            <xs:pattern value="(([\i-[:]][\c-[:]]*)?:)?.+" />
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType> 
    <xs:simpleType name="CURIEs">
        <xs:list itemType="xh11d:CURIE"/>
    </xs:simpleType>
    <xs:simpleType name="SafeCURIE">
    <xs:restriction base="xs:string">
        <xs:pattern value="\[(([\i-[:]][\c-[:]]*)?:)?.+\]" />
        <xs:minLength value="3"/>
    </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="SafeCURIEs">
        <xs:list itemType="xh11d:SafeCURIE"/>
    </xs:simpleType>
    <xs:simpleType name="URIorSafeCURIE">
        <xs:union memberTypes="xs:anyURI xh11d:SafeCURIE" />
    </xs:simpleType>
    <xs:simpleType name="URIorSafeCURIEs">
        <xs:list itemType="xh11d:URIorSafeCURIE"/>
    </xs:simpleType>
    <xs:simpleType name="Encodings">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="HrefTarget">
        <xs:restriction base="xs:NMTOKEN"/>
    </xs:simpleType>
    <xs:simpleType name="LocationPath">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="QName">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="QNames">
        <xs:list itemType="xh11d:QName"/>
    </xs:simpleType>
</xs:schema>

E.1.2. Document Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
    <xs:import
        namespace="http://www.w3.org/1999/xhtml/datatypes/"
        schemaLocation="xhtml-datatypes-2.xsd"/>
    <xs:annotation>
        <xs:documentation>
        This is the XML Schema Document Module for XHTML
          * title, head, body, html
        The Document Module defines the major structural elements and 
        their attributes.
        $Id: xhtml-document-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $     
      </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2#s_documentmodule"/>
    </xs:annotation>
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
                This import brings in the XML namespace attributes
                The module itself does not provide the schemaLocation
                and expects the driver schema to provide the
                actual SchemaLocation.
            </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:attributeGroup
        name="xhtml.title.attlist">
        <xs:attributeGroup
            ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group
        name="xhtml.title.content">
        <xs:sequence/>
    </xs:group>
    <xs:complexType
        name="xhtml.title.type"
        mixed="true">
        <xs:group
            ref="xhtml.title.content"/>
        <xs:attributeGroup
            ref="xhtml.title.attlist"/>
    </xs:complexType>
    <xs:attributeGroup
        name="xhtml.profile.attrib">
        <xs:attribute
            name="profile"
            type="xh11d:URIs"/>
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.head.attlist">
        <xs:attributeGroup
            ref="xhtml.profile.attrib"/>
        <xs:attributeGroup
            ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:complexType
        name="xhtml.head.type">
        <xs:group
            ref="xhtml.head.content"/>
        <xs:attributeGroup
            ref="xhtml.head.attlist"/>
    </xs:complexType>
    <xs:attributeGroup
        name="xhtml.body.attlist">
        <xs:attributeGroup
            ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group
        name="xhtml.body.content">
        <xs:sequence>
            <xs:group
                ref="xhtml.Structural.mix"
                minOccurs="0"
                maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType
        name="xhtml.body.type">
        <xs:group
            ref="xhtml.body.content"/>
        <xs:attributeGroup
            ref="xhtml.body.attlist"/>
    </xs:complexType>
    <xs:attributeGroup
        name="xhtml.version.attrib">
        <xs:attribute
            name="version"
            type="xh11d:CDATA"/>
    </xs:attributeGroup>
    <xs:attributeGroup
        name="xhtml.html.attlist">
        <xs:attributeGroup
            ref="xhtml.version.attrib"/>
        <xs:attributeGroup
            ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group
        name="xhtml.html.content">
        <xs:sequence>
            <xs:element
                name="head"
                type="xhtml.head.type"/>
            <xs:element
                name="body"
                type="xhtml.body.type"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType
        name="xhtml.html.type">
        <xs:group
            ref="xhtml.html.content"/>
        <xs:attributeGroup
            ref="xhtml.html.attlist"/>
    </xs:complexType>
</xs:schema>

E.1.3. Structural Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
          This is the XML Schema Structural module for XHTML
          $Id: xhtml-structural-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
       </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
           Structural
           This module declares the elements and their attributes used to
           support content structural markup.
           * address, blockcode, blockquote, div, h,
             h1, h2, h3, h4, h5, h6, p, pre, section, separator
      </xs:documentation>
      <xs:documentation source="http://www.w3.org/TR/xhtml2#s_structuralmodule"/>
    </xs:annotation>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
          This import brings in the XML namespace attributes 
          The module itself does not provide the schemaLocation
          and expects the driver schema to provide the 
          actual SchemaLocation.
        </xs:documentation>
        </xs:annotation>
    </xs:import>
    <!-- address -->
    <xs:attributeGroup name="xhtml.address.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.address.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.address.type" mixed="true">
        <xs:group ref="xhtml.address.content"/>
        <xs:attributeGroup ref="xhtml.address.attlist"/>
    </xs:complexType>
    <!-- blockquote -->
    <xs:attributeGroup name="xhtml.blockquote.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.blockquote.content">
        <xs:choice>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.blockquote.type">
        <xs:group ref="xhtml.blockquote.content"/>
        <xs:attributeGroup ref="xhtml.blockquote.attlist"/>
    </xs:complexType>
    <!-- blockcode -->
    <xs:attributeGroup name="xhtml.blockcode.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.blockcode.content">
        <xs:choice>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.blockcode.type">
        <xs:group ref="xhtml.blockcode.content"/>
        <xs:attributeGroup ref="xhtml.blockcode.attlist"/>
    </xs:complexType>
    <!-- div -->
    <xs:attributeGroup name="xhtml.div.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.div.content">
        <xs:choice>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.div.type">
        <xs:group ref="xhtml.div.content"/>
        <xs:attributeGroup ref="xhtml.div.attlist"/>
    </xs:complexType>
    <!-- h -->
    <xs:attributeGroup name="xhtml.h.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h.content">
        <xs:choice>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.h.type">
        <xs:group ref="xhtml.h.content"/>
        <xs:attributeGroup ref="xhtml.h.attlist"/>
    </xs:complexType>
    <!-- Heading Elements  -->
    <xs:attributeGroup name="xhtml.heading.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:complexType name="xhtml.heading.type" mixed="true">
        <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="xhtml.heading.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.h1.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h1.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.h1.type" mixed="true">
        <xs:group ref="xhtml.h1.content"/>
        <xs:attributeGroup ref="xhtml.h1.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.h2.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h2.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.h2.type" mixed="true">
        <xs:group ref="xhtml.h2.content"/>
        <xs:attributeGroup ref="xhtml.h2.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.h3.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h3.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.h3.type" mixed="true">
        <xs:group ref="xhtml.h3.content"/>
        <xs:attributeGroup ref="xhtml.h3.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.h4.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h4.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.h4.type" mixed="true">
        <xs:group ref="xhtml.h4.content"/>
        <xs:attributeGroup ref="xhtml.h4.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.h5.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h5.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.h5.type" mixed="true">
        <xs:group ref="xhtml.h5.content"/>
        <xs:attributeGroup ref="xhtml.h5.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.h6.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.h6.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.h6.type" mixed="true">
        <xs:group ref="xhtml.h6.content"/>
        <xs:attributeGroup ref="xhtml.h6.attlist"/>
    </xs:complexType>
    <!-- p -->
    <xs:attributeGroup name="xhtml.p.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.p.content">
        <xs:choice>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
            <xs:group ref="xhtml.List.mix" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="blockcode" type="xhtml.blockcode.type"/>
            <xs:element name="blockquote" type="xhtml.blockquote.type"/>
            <xs:element name="pre" type="xhtml.pre.type"/>
            <xs:element name="table" type="xhtml.table.type"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.p.type" mixed="true">
        <xs:group ref="xhtml.p.content"/>
        <xs:attributeGroup ref="xhtml.p.attlist"/>
    </xs:complexType>
    <!-- pre -->
    <xs:attributeGroup name="xhtml.pre.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.pre.content">
        <xs:choice>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
            <xs:group ref="xhtml.List.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.pre.type" mixed="true">
        <xs:group ref="xhtml.pre.content"/>
        <xs:attributeGroup ref="xhtml.pre.attlist"/>
    </xs:complexType>
    <!-- section -->
    <xs:attributeGroup name="xhtml.section.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.section.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.section.type" mixed="true">
        <xs:group ref="xhtml.section.content"/>
        <xs:attributeGroup ref="xhtml.section.attlist"/>
    </xs:complexType>
    <!-- separator -->
    <xs:attributeGroup name="xhtml.separator.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.separator.content">
        <xs:sequence/>
    </xs:group>
    <xs:complexType name="xhtml.separator.type" mixed="true">
        <xs:group ref="xhtml.separator.content"/>
        <xs:attributeGroup ref="xhtml.separator.attlist"/>
    </xs:complexType>
</xs:schema>

E.1.4. Text Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
         This is the XML Schema Text module for XHTML
         $Id: xhtml-text-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
      Text
      This module declares the elements and their attributes used to
      support textual markup.
      * abbr, cite, code, dfn, em, kbd, l, q, samp, span, strong, 
        sub, sup, var
      $Id: xhtml-text-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
    <xs:documentation source="http://www.w3.org/TR/xhtml2#s_textmodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.abbr.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
        <xs:attribute name="full" type="xs:IDREF"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.abbr.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.abbr.type" mixed="true">
        <xs:group ref="xhtml.abbr.content"/>
        <xs:attributeGroup ref="xhtml.abbr.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.cite.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.cite.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.cite.type" mixed="true">
        <xs:group ref="xhtml.cite.content"/>
        <xs:attributeGroup ref="xhtml.cite.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.code.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.code.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.code.type" mixed="true">
        <xs:group ref="xhtml.code.content"/>
        <xs:attributeGroup ref="xhtml.code.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.dfn.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.dfn.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.dfn.type" mixed="true">
        <xs:group ref="xhtml.dfn.content"/>
        <xs:attributeGroup ref="xhtml.dfn.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.em.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.em.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.em.type" mixed="true">
        <xs:group ref="xhtml.em.content"/>
        <xs:attributeGroup ref="xhtml.em.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.kbd.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.kbd.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.kbd.type" mixed="true">
        <xs:group ref="xhtml.kbd.content"/>
        <xs:attributeGroup ref="xhtml.kbd.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.l.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.l.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.l.type" mixed="true">
        <xs:group ref="xhtml.kbd.content"/>
        <xs:attributeGroup ref="xhtml.kbd.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.q.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.q.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.q.type" mixed="true">
        <xs:group ref="xhtml.q.content"/>
        <xs:attributeGroup ref="xhtml.q.attlist"/>
    </xs:complexType>
    <!-- samp -->
    <xs:attributeGroup name="xhtml.samp.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.samp.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.samp.type" mixed="true">
        <xs:group ref="xhtml.samp.content"/>
        <xs:attributeGroup ref="xhtml.samp.attlist"/>
    </xs:complexType>
    <!-- span -->
    <xs:attributeGroup name="xhtml.span.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.span.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.span.type" mixed="true">
        <xs:group ref="xhtml.span.content"/>
        <xs:attributeGroup ref="xhtml.span.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.strong.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.strong.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.strong.type" mixed="true">
        <xs:group ref="xhtml.strong.content"/>
        <xs:attributeGroup ref="xhtml.strong.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.sub.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.sub.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.sub.type" mixed="true">
        <xs:group ref="xhtml.sub.content"/>
        <xs:attributeGroup ref="xhtml.sub.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.sup.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.sup.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.sup.type" mixed="true">
        <xs:group ref="xhtml.sup.content"/>
        <xs:attributeGroup ref="xhtml.sup.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.var.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.var.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.var.type" mixed="true">
        <xs:group ref="xhtml.var.content"/>
        <xs:attributeGroup ref="xhtml.var.attlist"/>
    </xs:complexType>
</xs:schema>

E.1.5. Hypertext Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      Hypertext Module
      This is the XML Schema Hypertext module for XHTML
        * a
      This module declares the anchor ('a') element type, which
      defines the source of a hypertext link. The destination
      (or link 'target') is identified via its 'id' attribute 
      rather than the 'name' attribute as was used in HTML.
      $Id: xhtml-hypertext-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_hypertextmodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.a.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.a.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.a.type" mixed="true">
        <xs:group ref="xhtml.a.content"/>
        <xs:attributeGroup ref="xhtml.a.attlist"/>
    </xs:complexType>
</xs:schema>

E.1.6. List Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      List Module
      This is the XML Schema Lists module for XHTML
      List Module Elements
        * dl, di, dt, dd, label, nl, ol, ul, li
      This module declares the list-oriented element types
      and their attributes.
      $Id: xhtml-list-2.xsd,v 1.1.2.2 2009/01/16 17:50:25 ahby Exp $      
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2#s_listmodule"/>
    </xs:annotation>
    <!-- label -->
    <xs:attributeGroup name="xhtml.label.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.label.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.label.type" mixed="true">
        <xs:group ref="xhtml.label.content"/>
        <xs:attributeGroup ref="xhtml.label.attlist"/>
    </xs:complexType>
    <!-- dt -->
    <xs:attributeGroup name="xhtml.dt.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.dt.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.dt.type" mixed="true">
        <xs:group ref="xhtml.dt.content"/>
        <xs:attributeGroup ref="xhtml.dt.attlist"/>
    </xs:complexType>
    <!-- dd -->
    <xs:attributeGroup name="xhtml.dd.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.dd.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.dd.type" mixed="true">
        <xs:group ref="xhtml.dd.content"/>
        <xs:attributeGroup ref="xhtml.dd.attlist"/>
    </xs:complexType>
    <!-- di -->
    <xs:attributeGroup name="xhtml.di.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.di.content">
        <xs:sequence>
            <xs:element name="dt" type="xhtml.dt.type" minOccurs="1" maxOccurs="unbounded"/>
            <xs:element name="dd" type="xhtml.dd.type" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.di.type" mixed="true">
        <xs:group ref="xhtml.di.content"/>
        <xs:attributeGroup ref="xhtml.di.attlist"/>
    </xs:complexType>
    <!-- dl -->
    <xs:attributeGroup name="xhtml.dl.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.dl.content">
        <xs:sequence>
            <xs:element name="label" type="xhtml.label.type" minOccurs="0" maxOccurs="1"/>
            <xs:choice maxOccurs="unbounded">
                <xs:choice minOccurs="1" maxOccurs="unbounded">
                    <xs:element name="dt" type="xhtml.dt.type"/>
                    <xs:element name="dd" type="xhtml.dd.type"/>
                </xs:choice>
                <xs:element name="di" type="xhtml.di.type" minOccurs="1" maxOccurs="unbounded" />
            </xs:choice>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.dl.type">
        <xs:group ref="xhtml.dl.content"/>
        <xs:attributeGroup ref="xhtml.dl.attlist"/>
    </xs:complexType>
    <!-- li -->
    <xs:attributeGroup name="xhtml.li.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.li.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.li.type" mixed="true">
        <xs:group ref="xhtml.li.content"/>
        <xs:attributeGroup ref="xhtml.li.attlist"/>
    </xs:complexType>
    <!-- nl -->
    <xs:attributeGroup name="xhtml.nl.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.nl.content">
        <xs:sequence>
            <xs:element name="label" type="xhtml.label.type" minOccurs="1" maxOccurs="1"/>
            <xs:element name="li" type="xhtml.li.type" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.nl.type">
        <xs:group ref="xhtml.nl.content"/>
        <xs:attributeGroup ref="xhtml.nl.attlist"/>
    </xs:complexType>
    <!-- ol -->
    <xs:attributeGroup name="xhtml.ol.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.ol.content">
        <xs:sequence>
            <xs:element name="label" type="xhtml.label.type" minOccurs="0" maxOccurs="1"/>
            <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.ol.type">
        <xs:group ref="xhtml.ol.content"/>
        <xs:attributeGroup ref="xhtml.ol.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.ul.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.ul.content">
        <xs:sequence>
            <xs:element name="label" type="xhtml.label.type" minOccurs="0" maxOccurs="1"/>
            <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.ul.type">
        <xs:group ref="xhtml.ul.content"/>
        <xs:attributeGroup ref="xhtml.ul.attlist"/>
    </xs:complexType>
</xs:schema>

E.1.7. Core Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema core attributes module for XHTML
      $Id: xhtml-core-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2/mod-core.html"/>
    </xs:annotation>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
        This import brings in the XML namespace attributes
        The module itself does not provide the schemaLocation
        and expects the driver schema to provide the
        actual SchemaLocation.
      </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:attributeGroup name="xhtml.id">
        <xs:attribute name="id" type="xs:ID"/>
    </xs:attributeGroup>
    <xs:attributeGroup name="xhtml.class">
        <xs:attribute name="class" type="xs:NMTOKENS"/>
    </xs:attributeGroup>
    <xs:simpleType name="xhtml.layout.Datatype">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="relevant"/>
            <xs:enumeration value="irrelevant"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:attributeGroup name="xhtml.layout">
        <xs:attribute name="layout" type="xhtml.layout.Datatype" default="irrelevant"/>
    </xs:attributeGroup>
    <xs:attributeGroup name="xhtml.title">
        <xs:attribute name="title" type="xs:string"/>
    </xs:attributeGroup>
    <xs:attributeGroup name="xhtml.Core.attrib">
        <!-- <xs:attribute ref="xml:space" fixed="preserve"/> -->
        <xs:attributeGroup ref="xhtml.id"/>
        <xs:attributeGroup ref="xhtml.class"/>
        <xs:attributeGroup ref="xhtml.layout"/>
        <xs:attributeGroup ref="xhtml.title"/>
        <xs:attributeGroup ref="xhtml.Core.extra.attrib"/>
    </xs:attributeGroup>
    <!-- Global attributes -->
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="class" type="xs:NMTOKENS"/>
    <xs:attribute name="title" type="xs:string"/>
    <xs:attribute name="layout" type="xhtml.layout.Datatype"/>
    <xs:attributeGroup name="xhtml.Global.Core.attrib">
        <xs:attribute ref="id"/>
        <xs:attribute ref="class"/>
        <xs:attribute ref="layout"/>
        <xs:attribute ref="title"/>
        <xs:attributeGroup ref="xhtml.Global.Core.extra.attrib" />
    </xs:attributeGroup>
</xs:schema>

E.1.8. Hypertext Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      Hypertext Attributes Module
      This is the XML Schema Hypertext Attributes module for XHTML
      * cite, href, hreflang, hrefmedia, hreftype, nextfocus, prevfocus, 
        target, and xml:base
        This module declares attributes and the Hypertext attribute
        collection.
      $Id: xhtml-hyperAttributes-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_hypertextmodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.Hypertext.attrib">
        <xs:attribute name="cite" type="xh11d:URI"/>
        <xs:attribute name="href" type="xh11d:URI"/>
        <xs:attribute name="hreflang" type="xh11d:LanguageCodes"/>
        <xs:attribute name="hrefmedia" type="xh11d:MediaDesc"/>
        <xs:attribute name="hreftype" type="xh11d:ContentTypes"/>
        <xs:attribute name="nextfocus" type="xs:IDREF"/>
        <xs:attribute name="prevfocus" type="xs:IDREF"/>
        <xs:attribute name="target" type="xh11d:HrefTarget"/>
        <xs:attributeGroup ref="xhtml.Hypertext.extra.attrib" />
    </xs:attributeGroup>
    <!-- global attributes -->
    <xs:attribute name="cite" type="xh11d:URI"/>
    <xs:attribute name="href" type="xh11d:URI"/>
    <xs:attribute name="hreflang" type="xh11d:LanguageCodes"/>
    <xs:attribute name="hrefmedia" type="xh11d:MediaDesc"/>
    <xs:attribute name="hreftype" type="xh11d:ContentTypes"/>
    <xs:attribute name="nextfocus" type="xs:IDREF"/>
    <xs:attribute name="prevfocus" type="xs:IDREF"/>
    <xs:attribute name="target" type="xh11d:HrefTarget"/>
    <xs:attributeGroup name="xhtml.Global.Hypertext.attrib">
        <xs:attribute ref="cite" />
        <xs:attribute ref="href" />
        <xs:attribute ref="hreflang" />
        <xs:attribute ref="hrefmedia" />
        <xs:attribute ref="hreftype" />
        <xs:attribute ref="nextfocus" />
        <xs:attribute ref="prevfocus" />
        <xs:attribute ref="target" />
        <xs:attributeGroup ref="xhtml.Global.Hypertext.extra.attrib" />
    </xs:attributeGroup>
</xs:schema>

E.1.9. I18N Attribute Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema I18N attributes module for XHTML
      $Id: xhtml-i18n-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2/mod-i18n.html"/>
    </xs:annotation>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
        This import brings in the XML namespace attributes
        The module itself does not provide the schemaLocation
        and expects the driver schema to provide the
        actual SchemaLocation.
      </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:attributeGroup name="xhtml.I18n.attrib">
        <xs:attribute ref="xml:lang" />
        <xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
    </xs:attributeGroup>
</xs:schema>

E.2. Optional Modules

E.2.1. Bi-directional Text Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema Bidirectional Text attribute module for XHTML
      $Id: xhtml-bidi-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2/mod-bidi.html"/>
    </xs:annotation>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
        This import brings in the XML namespace attributes
        The module itself does not provide the schemaLocation
        and expects the driver schema to provide the
        actual SchemaLocation.
      </xs:documentation>
        </xs:annotation>
  </xs:import>
    <xs:simpleType name="xhtml.Direction.datatype">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="ltr"/>
            <xs:enumeration value="rtl"/>
            <xs:enumeration value="lro"/>
            <xs:enumeration value="rlo"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:attributeGroup name="xhtml.Bidi.attrib">
        <xs:attribute name="dir" default="ltr" type="xhtml.Direction.datatype"/> 
    </xs:attributeGroup>
</xs:schema>

E.2.2. Caption Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
          This is the XML Schema Caption module for XHTML
          $Id: xhtml-caption-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
           * caption
           This module declares the caption element.
        </xs:documentation>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_tablemodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.caption.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.caption.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.caption.type" mixed="true">
        <xs:group ref="xhtml.caption.content"/>
        <xs:attributeGroup ref="xhtml.caption.attlist"/>
    </xs:complexType>
</xs:schema>

E.2.3. Edit Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
          Editing Elements
          This is the XML Schema Editing Markup module for XHTML
           * edit, datetime
         This module declares attributes used to indicate
         inserted and deleted content while editing a document.
          $Id: xhtml-edit-2.xsd,v 1.1.2.2 2009/01/16 17:50:25 ahby Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_editmodule"/>
    </xs:annotation>
    <xs:simpleType name="xhtml.Edit.datatype">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="inserted"/>
            <xs:enumeration value="deleted"/>
            <xs:enumeration value="changed"/>
            <xs:enumeration value="moved"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:attributeGroup name="xhtml.Edit.attrib">
        <xs:attribute name="edit" default="changed" type="xhtml.Edit.datatype"/>
        <xs:attribute name="datetime" type="xh11d:Datetime"/>
        <xs:attributeGroup ref="xhtml.Edit.extra.attrib"/>
    </xs:attributeGroup>
    <xs:attribute name="edit" default="changed" type="xhtml.Edit.datatype"/>
    <xs:attribute name="datetime" type="xh11d:Datetime"/>
    <xs:attributeGroup name="xhtml.Global.Edit.attrib">
        <xs:attribute ref="edit"/>
        <xs:attribute ref="datetime"/>
        <xs:attributeGroup ref="xhtml.Global.Edit.extra.attrib"/>
    </xs:attributeGroup>
</xs:schema>

E.2.4. Embedding Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      Embedding Attributes Module
      This is the XML Schema Embedding Attributes module for XHTML
      * encoding, src, srctype
        This module declares attributes and the Embedding attribute
        collection.
      $Id: xhtml-embedding-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2/mod-embedding.html"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.Embedding.attrib">
        <xs:attribute name="encoding" type="xh11d:Encodings"/>
        <xs:attribute name="src" type="xh11d:URI"/>
        <xs:attribute name="srctype" type="xh11d:ContentTypes"/>
        <xs:attributeGroup ref="xhtml.Embedding.extra.attrib" />
    </xs:attributeGroup>
    <!-- global attributes -->
    <xs:attribute name="encoding" type="xh11d:Encodings"/>
    <xs:attribute name="src" type="xh11d:URI"/>
    <xs:attribute name="srctype" type="xh11d:ContentTypes"/>
    <xs:attributeGroup name="xhtml.Global.Embedding.attrib">
        <xs:attribute ref="encoding"/>
        <xs:attribute ref="src"/>
        <xs:attribute ref="srctype"/>
        <xs:attributeGroup ref="xhtml.Global.Embedding.extra.attrib" />
    </xs:attributeGroup>
</xs:schema>

E.2.5. Image Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      Images    
      This is the XML Schema Images module for XHTML
        * img
      This module provides markup to support basic image embedding.
      To avoid problems with text-only UAs as well as to make
      image content understandable and navigable to users of
      non-visual UAs, you need to provide a description with
      the 'alt' attribute, and avoid server-side image maps.
      $Id: xhtml-image-2.xsd,v 1.1.2.2 2009/01/16 17:50:25 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_imagemodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.img.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.img.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.img.type">
        <xs:group ref="xhtml.img.content"/>
        <xs:attributeGroup ref="xhtml.img.attlist"/>
    </xs:complexType>
</xs:schema>

E.2.6. Image Map Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      Client-side Image Maps    
      This is the XML Schema Client-side Image Maps module for XHTML
        * area, map      
      This module declares elements and attributes to support client-side
      image maps. 
      $Id: xhtml-csismap-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_imapmodule"/>
    </xs:annotation>
    <xs:simpleType name="xhtml.Shape.Datatype">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="rect"/>
            <xs:enumeration value="circle"/>
            <xs:enumeration value="poly"/>
            <xs:enumeration value="default"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="xhtml.Coords.Datatype">
        <xs:restriction base="xh11d:Text"/>
    </xs:simpleType>
    <xs:attributeGroup name="xhtml.ImageMap.attrib">
        <xs:attribute name="usemap" type="xh11d:URI"/>
        <xs:attribute name="ismap" type="xs:NMTOKEN" fixed="ismap"/>
        <xs:attribute name="shape" type="xhtml.Shape.Datatype" default="rect"/>
        <xs:attribute name="coords" type="xhtml.Coords.Datatype"/>
    </xs:attributeGroup>
</xs:schema>

E.2.7. Media Attribute Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema core attributes module for XHTML
      $Id: xhtml-media-attrib-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml2/mod-core.html"/>
    </xs:annotation>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
        This import brings in the XML namespace attributes
        The module itself does not provide the schemaLocation
        and expects the driver schema to provide the
        actual SchemaLocation.
      </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:attributeGroup name="xhtml.Media.attrib">
        <xs:attribute name="media" type="xh11d:MediaDesc"/>
    </xs:attributeGroup>
    <!-- Global attributes -->
    <xs:attribute name="media" type="xh11d:MediaDesc"/>
    <xs:attributeGroup name="xhtml.Global.Media.attrib">
        <xs:attribute ref="media"/>
        <xs:attributeGroup ref="xhtml.Global.Media.extra.attrib" />
    </xs:attributeGroup>
</xs:schema>

E.2.8. Metainformation Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema Metainformation module for XHTML
      $Id: xhtml-meta-2.xsd,v 1.1.2.2 2009/01/16 17:50:25 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
      Meta Information
        * meta
      This module declares the meta element type and its attributes,
      used to provide declarative document metainformation.
    </xs:documentation>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_metamodule"/>
    </xs:annotation>
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
                This import brings in the XML namespace attributes
                The module itself does not provide the schemaLocation
                and expects the driver schema to provide the
                actual SchemaLocation.
            </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:attributeGroup name="xhtml.meta.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.meta.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.meta.type">
        <xs:group ref="xhtml.meta.content"/>
        <xs:attributeGroup ref="xhtml.meta.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.link.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.link.content">
        <xs:choice>
            <xs:element name="link" type="xhtml.link.type"/>
            <xs:element name="meta" type="xhtml.meta.type"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="xhtml.link.type">
        <xs:group ref="xhtml.link.content"/>
        <xs:attributeGroup ref="xhtml.link.attlist"/>
    </xs:complexType>
</xs:schema>

E.2.9. Metainformation Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
    elementFormDefault="qualified" 
>
  <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
             schemaLocation="xhtml-datatypes-2.xsd" />
  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Metainformation Attributes module for XHTML
      $Id: xhtml-metaAttributes-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-rdfa-copyright-1.xsd"/>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation>
      XHTML Metainformation Attributes
    </xs:documentation>
  </xs:annotation>
  <xs:attribute name="about" type="xh11d:URIorSafeCURIE"/>
  <xs:attribute name="content" type="xh11d:CDATA"/>
  <xs:attribute name="datatype" type="xh11d:CURIE"/>
  <xs:attribute name="typeof" type="xh11d:CURIEs"/>
  <xs:attribute name="property" type="xh11d:CURIEs"/>
  <xs:attribute name="rel" type="xh11d:CURIEs"/>
  <xs:attribute name="resource" type="xh11d:URIorSafeCURIE"/>
  <xs:attribute name="rev" type="xh11d:CURIEs"/>
  <xs:attributeGroup name="xhtml.MetaAttributes.attrib">
    <xs:attribute name="about"/>
    <xs:attribute name="content"/>
    <xs:attribute name="datatype"/>
    <xs:attribute name="typeof"/>
    <xs:attribute name="property"/>
    <xs:attribute name="rel"/>
    <xs:attribute name="resource"/>
    <xs:attribute name="rev"/>
  </xs:attributeGroup>
</xs:schema>

E.2.10. Object Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
	<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
	<xs:annotation>
		<xs:documentation>
      This is the XML Schema Object module for XHTML
      $Id: xhtml-object-2.xsd,v 1.1.2.4 2009/01/22 04:47:53 ahby Exp $
    </xs:documentation>
		<xs:documentation source="xhtml-copyright-1.xsd"/>
	</xs:annotation>
	<xs:annotation>
		<xs:documentation>
      This module declares the object element type and its attributes,
      used to embed external objects as part of XHTML pages. In the
      document, place param elements prior to the object elements 
      that require their content.
      Note that use of this module requires instantiation of the 
      Param Element Module prior to this module.
      Elements defined here: 
        * object (param)
    </xs:documentation>
		<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_objectmodule"/>
	</xs:annotation>
	<xs:include schemaLocation="xhtml-param-2.xsd">
		<xs:annotation>
			<xs:documentation>
        Param module
        Elements defined here:
          * param
      </xs:documentation>
		</xs:annotation>
    </xs:include>
    <xs:include schemaLocation="xhtml-caption-2.xsd">
        <xs:annotation>
            <xs:documentation>
                Caption module - defines the caption element
            </xs:documentation>
        </xs:annotation>
    </xs:include>
    <!-- standby -->
    <xs:attributeGroup name="xhtml.standby.attlist">
		<xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.standby.content">
        <xs:sequence>
            <xs:group ref="xhtml.Text.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.standby.type" mixed="true">
        <xs:group ref="xhtml.standby.content"/>
        <xs:attributeGroup ref="xhtml.standby.attlist"/>
    </xs:complexType>
    <!-- object -->
	<xs:attributeGroup name="xhtml.object.attlist">
		<xs:attributeGroup ref="xhtml.Common.attrib"/>
		<xs:attribute name="declare">
			<xs:simpleType>
				<xs:restriction base="xs:NMTOKEN">
					<xs:enumeration value="declare"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="archive" type="xh11d:URIs"/>
		<xs:attribute name="content-length" type="xh11d:Number"/>
	</xs:attributeGroup>
	<xs:group name="xhtml.object.content">
		<xs:sequence>
            <xs:element name="caption" type="xhtml.caption.type"
                minOccurs="0" maxOccurs="1"/>
            <xs:element name="standby" type="xhtml.standby.type"
                minOccurs="0" maxOccurs="1"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="param" type="xhtml.param.type"/>
				<xs:group ref="xhtml.Flow.mix"/>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	<xs:complexType name="xhtml.object.type" mixed="true">
		<xs:group ref="xhtml.object.content"/>
		<xs:attributeGroup ref="xhtml.object.attlist"/>
	</xs:complexType>
</xs:schema>

E.2.10.1. Param Attribute

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema Param Element module for XHTML
      $Id: xhtml-param-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
      </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
      Parameters for Java Applets and Embedded Objects
        * param
      This module provides declarations for the param element,
      used to provide named property values for the applet
      and object elements.
    </xs:documentation>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_objectmodule"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_appletmodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.param.attlist">
        <xs:attributeGroup ref="xhtml.id"/>
        <xs:attribute name="name" type="xh11d:CDATA" use="required"/>
        <xs:attribute name="value" type="xh11d:CDATA"/>
        <xs:attribute name="valuetype" default="data">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="data"/>
                    <xs:enumeration value="ref"/>
                    <xs:enumeration value="object"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="type" type="xh11d:ContentType"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.param.content">
        <xs:sequence/>
    </xs:group>
    <xs:complexType name="xhtml.param.type">
        <xs:group ref="xhtml.param.content"/>
        <xs:attributeGroup ref="xhtml.param.attlist"/>
    </xs:complexType>
</xs:schema>

E.2.11. Style Sheet Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema Stylesheets module for XHTML
      $Id: xhtml-style-2.xsd,v 1.1.2.2 2009/01/16 17:50:25 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
      Stylesheets
        * style
      This module declares the style element type and its attributes,
      used to embed stylesheet information in the document head element.
    </xs:documentation>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_stylemodule"/>
    </xs:annotation>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd">
        <xs:annotation>
            <xs:documentation>
          This import brings in the XML namespace attributes 
          The module itself does not provide the schemaLocation
          and expects the driver schema to provide the 
          actual SchemaLocation.
        </xs:documentation>
        </xs:annotation>
    </xs:import>
    <xs:attributeGroup name="xhtml.style.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
        <xs:attribute name="disabled" type="xs:NMTOKEN" fixed="disabled"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.style.content">
        <xs:sequence/>
    </xs:group>
    <xs:complexType name="xhtml.style.type" mixed="true">
        <xs:group ref="xhtml.style.content"/>
        <xs:attributeGroup ref="xhtml.style.attlist"/>
    </xs:complexType>
</xs:schema>

E.2.12. Style Attribute Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      Inline Style module    
      This is the XML Schema Inline Style module for XHTML
         * styloe attribute
      This module declares the 'style' attribute, used to support inline 
      style markup. 
      $Id: xhtml-style-attrib-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_styleattributemodule"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.Style.attrib">
        <xs:attribute name="style" type="xh11d:CDATA"/>
    </xs:attributeGroup>
</xs:schema>

E.2.13. Tables Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
          This is the XML Schema Tables module for XHTML
          $Id: xhtml-table-2.xsd,v 1.1.2.3 2009/01/22 04:47:53 ahby Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
          Tables
           * table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
          This module declares element types and attributes used to provide
          table markup similar to HTML 4.0, including features that enable
          better accessibility for non-visual user agents.
        </xs:documentation>
        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_tablemodule"/>
    </xs:annotation>
    <xs:include schemaLocation="xhtml-caption-2.xsd"/>
    <xs:attributeGroup name="xhtml.scope.attrib">
        <xs:attribute name="scope">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="row"/>
                    <xs:enumeration value="col"/>
                    <xs:enumeration value="rowgroup"/>
                    <xs:enumeration value="colgroup"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:attributeGroup name="xhtml.td.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
        <xs:attribute name="abbr" type="xh11d:Text"/>
        <xs:attribute name="axis" type="xh11d:CDATA"/>
        <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
        <xs:attributeGroup ref="xhtml.scope.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.td.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.td.type" mixed="true">
        <xs:group ref="xhtml.td.content"/>
        <xs:attributeGroup ref="xhtml.td.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.th.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
        <xs:attribute name="abbr" type="xh11d:Text"/>
        <xs:attribute name="axis" type="xh11d:CDATA"/>
        <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
        <xs:attributeGroup ref="xhtml.scope.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.th.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.th.type" mixed="true">
        <xs:group ref="xhtml.th.content"/>
        <xs:attributeGroup ref="xhtml.th.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.tr.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
 <!--       <xs:attributeGroup ref="xhtml.XFormsRepeat.attrib"/> -->
    </xs:attributeGroup>
    <xs:group name="xhtml.tr.content">
        <xs:sequence>
            <xs:choice maxOccurs="unbounded">
                <xs:element name="th" type="xhtml.th.type"/>
                <xs:element name="td" type="xhtml.td.type"/>
            </xs:choice>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.tr.type">
        <xs:group ref="xhtml.tr.content"/>
        <xs:attributeGroup ref="xhtml.tr.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.col.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
        <xs:attribute name="span" type="xh11d:Number" default="1"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.col.content">
        <xs:sequence/>
    </xs:group>
    <xs:complexType name="xhtml.col.type">
        <xs:group ref="xhtml.col.content"/>
        <xs:attributeGroup ref="xhtml.col.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.colgroup.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
        <xs:attribute name="span" type="xh11d:Number" default="1"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.colgroup.content">
        <xs:sequence>
            <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.colgroup.type">
        <xs:group ref="xhtml.colgroup.content"/>
        <xs:attributeGroup ref="xhtml.colgroup.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.tbody.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.tbody.content">
        <xs:sequence>
            <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.tbody.type">
        <xs:group ref="xhtml.tbody.content"/>
        <xs:attributeGroup ref="xhtml.tbody.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.tfoot.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.tfoot.content">
        <xs:sequence>
            <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.tfoot.type">
        <xs:group ref="xhtml.tfoot.content"/>
        <xs:attributeGroup ref="xhtml.tfoot.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.thead.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.thead.content">
        <xs:sequence>
            <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.thead.type">
        <xs:group ref="xhtml.thead.content"/>
        <xs:attributeGroup ref="xhtml.thead.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.summary.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.summary.content">
        <xs:sequence>
            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.summary.type" mixed="true">
        <xs:group ref="xhtml.summary.content"/>
        <xs:attributeGroup ref="xhtml.summary.attlist"/>
    </xs:complexType>
    <xs:attributeGroup name="xhtml.table.attlist">
        <xs:attributeGroup ref="xhtml.Common.attrib"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.table.content">
        <xs:sequence>
            <xs:element name="caption" type="xhtml.caption.type" minOccurs="0"/>
            <xs:element name="summary" type="xhtml.summary.type" minOccurs="0"/>
            <xs:choice>
                <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="colgroup" type="xhtml.colgroup.type" minOccurs="0" maxOccurs="unbounded"/>
            </xs:choice>
            <xs:choice>
                <xs:sequence>
                    <xs:element name="thead" type="xhtml.thead.type" minOccurs="0"/>
                    <xs:element name="tfoot" type="xhtml.tfoot.type" minOccurs="0"/>
                    <xs:element name="tbody" type="xhtml.tbody.type" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:choice>
                    <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
                </xs:choice>
            </xs:choice>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="xhtml.table.type">
        <xs:group ref="xhtml.table.content"/>
        <xs:attributeGroup ref="xhtml.table.attlist"/>
    </xs:complexType>
</xs:schema>

E.3. Modules from Other Specifications

E.3.1. Access Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema module for XHTML Access
      $Id: xhtml-access-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml-role#A_role"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtmlAccess.Common.attrib">
        <xs:attribute name="id" type="xs:ID"/>
        <xs:attribute name="media" type="xh11d:MediaDesc"/>
        <xs:anyAttribute/>
    </xs:attributeGroup>
    <xs:attributeGroup name="xhtml.access.attlist">
        <xs:attribute name="activate" default="no">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="yes"/>
                    <xs:enumeration value="no"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="key" type="xh11d:Character"/>
        <xs:attribute name="order" default="document">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="document"/>
                    <xs:enumeration value="list"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targetid">
            <xs:simpleType>
                <xs:list itemType="xs:IDREF"/>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="targetrole" type="xh11d:CURIEs"/>
    </xs:attributeGroup>
    <xs:group name="xhtml.access.content">
        <xs:sequence/>
    </xs:group>
    <xs:complexType name="xhtml.access.type">
        <xs:group ref="xhtml.access.content"/>
        <xs:attributeGroup ref="xhtml.access.attlist"/>
    </xs:complexType>
</xs:schema>

E.3.2. Role Attribute Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema attribute module for XHTML Role
      $Id: xhtml-role-attrib-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/xhtml-role#A_role"/>
    </xs:annotation>
    <xs:attributeGroup name="xhtml.Role.attrib">
        <xs:attribute name="role" type="xh11d:CURIEs"/>
    </xs:attributeGroup>
</xs:schema>

E.3.3. Ruby Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-2.xsd" />
  <xs:annotation>
    <xs:documentation>
      This is the Ruby module for XHTML
      $Id: xhtml-ruby-2.xsd,v 1.1.2.1 2009/01/16 17:50:25 ahby Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation>
      "Ruby" are short runs of text alongside the base text, typically
      used in East Asian documents to indicate pronunciation or to
      provide a short annotation. The full specification for Ruby is here:
        http://www.w3.org/TR/2001/REC-ruby-20010531/
      This module defines "Ruby " or "complex Ruby" as described
      in the specification:
        http://www.w3.org/TR/2001/REC-ruby-20010531/#complex
      Simple or Basic Ruby are defined in a separate module.
      This module declares the elements and their attributes used to
      support complex ruby annotation markup. Elements defined here
            * ruby, rbc, rtc, rb, rt, rp
      This module expects the document model to define the
      following content models
        + xhtml.TextNoRuby.class                 
    </xs:documentation>
    <xs:documentation
         source="http://www.w3.org/TR/2001/REC-ruby-20010531/"/>    
  </xs:annotation>
  <xs:group name="xhtml.ruby.content.simple">
      <xs:sequence>
          <xs:element name="rb" type="xhtml.rb.type"/>
          <xs:choice>
              <xs:element name="rt" type="xhtml.rt.type"/>
              <xs:sequence>
                  <xs:element name="rp" type="xhtml.rp.type"/>
                  <xs:element name="rt" type="xhtml.rt.type"/>
                  <xs:element name="rp" type="xhtml.rp.type"/>
              </xs:sequence>
          </xs:choice>
      </xs:sequence>
  </xs:group>
  <xs:group name="xhtml.ruby.content.complex">
    <xs:sequence>
      <xs:element name="rbc" type="xhtml.rbc.type"/>
      <xs:element name="rtc" type="xhtml.rtc.type" maxOccurs="2"/>
    </xs:sequence>
  </xs:group>
  <!--
   add to this group any common attributes for all Ruby elements
  -->
  <xs:attributeGroup name="xhtml.ruby.common.attrib"/>
  <xs:group name="xhtml.ruby.content">
    <xs:choice>
      <xs:group ref="xhtml.ruby.content.simple"/>
      <xs:group ref="xhtml.ruby.content.complex"/>
    </xs:choice>
  </xs:group>
  <xs:complexType name="xhtml.ruby.type">
    <xs:group ref="xhtml.ruby.content"/>
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:complexType>
  <!--
   rbc (ruby base component) element 
  -->
  <xs:attributeGroup name="xhtml.rbc.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  <xs:group name="xhtml.rbc.content">
    <xs:sequence>
      <xs:element name="rb" type="xhtml.rb.type" />
    </xs:sequence>
  </xs:group>  
  <xs:complexType name="xhtml.rbc.type">
    <xs:group ref="xhtml.rbc.content"/>
    <xs:attributeGroup ref="xhtml.rbc.attlist"/>
  </xs:complexType>
  <!--
   rtc (ruby text component) element
  -->
  <xs:attributeGroup name="xhtml.rtc.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  <xs:group name="xhtml.rtc.content">
    <xs:sequence>
      <xs:element name="rt" type="xhtml.rt.type" maxOccurs="unbounded"/>
    </xs:sequence>  
  </xs:group>    
  <xs:complexType name="xhtml.rtc.type">
    <xs:group ref="xhtml.rt.content"/>  
    <xs:attributeGroup ref="xhtml.rtc.attlist"/>
  </xs:complexType>
  <!--
   rb (ruby base) element 
  -->
  <xs:attributeGroup name="xhtml.rb.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  <xs:group name="xhtml.rb.content">
    <xs:sequence>
       <xs:group ref="xhtml.TextNoRuby.class" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      
  <xs:complexType name="xhtml.rb.type" mixed="true">
    <xs:group ref="xhtml.rb.content"/>
    <xs:attributeGroup ref="xhtml.rb.attlist"/>
  </xs:complexType>
  <!--
   rt (ruby text) element 
  -->
  <xs:attributeGroup name="xhtml.rt.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
    <xs:attribute name="rbspan" type="xh11d:Number" default="1"/>
  </xs:attributeGroup>
  <xs:group name="xhtml.rt.content">
    <xs:sequence>
       <xs:group ref="xhtml.TextNoRuby.class" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      
  <xs:complexType name="xhtml.rt.type" mixed="true">
    <xs:group ref="xhtml.rt.content"/>  
    <xs:attributeGroup ref="xhtml.rt.attlist"/>
  </xs:complexType>
  <!-- rp (ruby parenthesis) element  -->
  <xs:attributeGroup name="xhtml.rp.attlist">
    <xs:attributeGroup ref="xhtml.ruby.common.attrib"/>
  </xs:attributeGroup>
  <xs:group name="xhtml.rp.content">
    <xs:sequence/>
  </xs:group>      
  <xs:complexType name="xhtml.rp.type" mixed="true">
    <xs:group ref="xhtml.rp.content"/>
    <xs:attributeGroup ref="xhtml.rp.attlist"/>
  </xs:complexType>
</xs:schema>

E.3.4. XForms Modules

Module xforms-2.xsd not found!

E.3.5. XML Events Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
    xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
                        http://www.w3.org/2001/XMLSchema.xsd" 
    elementFormDefault="unqualified" 
    blockDefault="#all" 
    finalDefault="#all" 
    attributeFormDefault="unqualified">
  <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
    schemaLocation="xhtml-datatypes-2.xsd" />
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
  <xs:annotation>
    <xs:documentation>
      This is the XML Schema for XML Events
      URI: http://www.w3.org/MarkUp/SCHEMA/xml-events-2.xsd
      $Id: xml-events-2.xsd,v 1.1.2.5 2009/01/22 04:47:53 ahby Exp $
      Note that this module requires the definition of 
      xmlEvents.Common.attrib to be a collection of attributes to 
      add to each element.  This collection MUST contain an 'id' 
      attribute.
    </xs:documentation>
    <xs:documentation source="xml-events-copyright-2.xsd"/>
  </xs:annotation>
  <xs:annotation>
    <xs:documentation>
      XML Events element listener
        This module defines the listener element for XML Events.
        This element can be used to define event listeners. This
        module relies upon the XmlEvents.attlist attribute group
        defined in xml-events-attribs-2.xsd.
    </xs:documentation>
  </xs:annotation>
  <xs:attributeGroup name="xmlEvents.Common.attrib">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:anyAttribute/>
  </xs:attributeGroup>
  <xs:attributeGroup name="xmlEvents.listener.attlist">
    <xs:attributeGroup ref="xmlEvents.attrib" />
    <xs:attributeGroup ref="xmlEvents.Common.attrib"/>
  </xs:attributeGroup>
  <xs:complexType name="xmlEvents.listener.type">
    <xs:attributeGroup ref="xmlEvents.listener.attlist"/>
  </xs:complexType>
  <xs:element name="listener" type="xmlEvents.listener.type"/>
</xs:schema>

E.3.6. XML Handlers Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
                        http://www.w3.org/2001/XMLSchema.xsd" 
    elementFormDefault="unqualified" 
    blockDefault="#all" 
    finalDefault="#all" 
    attributeFormDefault="unqualified">
  <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
    schemaLocation="xhtml-datatypes-2.xsd" />
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
  <xs:annotation>
    <xs:documentation>
      This is the XML Schema for XML Handlers
      URI: http://www.w3.org/MarkUp/SCHEMA/xml-handlers-1.xsd
      $Id: xml-handlers-2.xsd,v 1.1.2.1 2009/01/18 20:55:12 ahby Exp $
      Note that this module requires the definition of 
      xmlHandlers.Common.attrib to be a collection of attributes to 
      add to each element.  This collection MUST contain an 'id' 
      attribute.
    </xs:documentation>
    <xs:documentation source="xml-events-copyright-2.xsd"/>
  </xs:annotation>
  <xs:attributeGroup name="xmlHandlers.Common.attrib">
      <xs:attribute name="id" type="xs:ID"/>
      <xs:anyAttribute/>
  </xs:attributeGroup>
  <xs:attributeGroup name="xmlHandlers.action.attlist">
    <xs:attributeGroup ref="xmlHandlers.Common.attrib"/>
    <xs:attribute name="event" use="required" type="xs:QName"/>
    <xs:attribute name="eventTarget">
        <xs:simpleType>
            <xs:list itemType="xs:IDREF"/>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="declare">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="declare"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="if" type="xs:normalizedString"/>
    <xs:attribute name="while" type="xs:normalizedString"/>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:group name="xmlHandlers.action.content">
      <xs:choice>
        <xs:element name="action" type="xmlHandlers.action.type"/>
        <xs:element name="dispatchEvent" type="xmlHandlers.dispatchEvent.type"/>
        <xs:element name="addEventListener" type="xmlHandlers.addEventListener.type"/>
        <xs:element name="removeEventListener" type="xmlHandlers.removeEventListener.type"/>
        <xs:element name="stopPropagation" type="xmlHandlers.stopPropagation.type"/>
        <xs:element name="preventDefault" type="xmlHandlers.preventDefault.type"/>
      </xs:choice>
  </xs:group>
  <xs:complexType name="xmlHandlers.action.type">
    <xs:group ref="xmlHandlers.action.content"/>
    <xs:attributeGroup ref="xmlHandlers.action.attlist"/>
  </xs:complexType>
  <xs:attributeGroup name="xmlHandlers.dispatchEvent.attlist">
    <xs:attributeGroup ref="xmlHandlers.Common.attrib"/>
    <xs:attribute name="eventType" type="xs:QName"/>
    <xs:attribute name="eventTarget">
        <xs:simpleType>
            <xs:list itemType="xs:IDREF"/>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="bubbles">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="bubbles"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cancelable">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="cancelable"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:complexType name="xmlHandlers.dispatchEvent.type">
    <xs:attributeGroup ref="xmlHandlers.dispatchEvent.attlist"/>
  </xs:complexType>
  <xs:element name="dispatchEvent" type="xmlHandlers.dispatchEvent.type"/>
  <xs:attributeGroup name="xmlHandlers.addEventListener.attlist">
    <xs:attributeGroup ref="xmlHandlers.Common.attrib"/>
    <xs:attribute name="event" use="required" type="xs:QName"/>
    <xs:attribute name="handler" use="required" type="xs:IDREF"/>
    <xs:attribute name="phase" default="default">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="bubble"/>
                <xs:enumeration value="capture"/>
                <xs:enumeration value="default"/>
                <xs:enumeration value="target"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:complexType name="xmlHandlers.addEventListener.type">
    <xs:attributeGroup ref="xmlHandlers.addEventListener.attlist"/>
  </xs:complexType>
  <xs:element name="addEventListener" type="xmlHandlers.addEventListener.type"/>
  <xs:attributeGroup name="xmlHandlers.removeEventListener.attlist">
    <xs:attributeGroup ref="xmlHandlers.Common.attrib"/>
    <xs:attribute name="event" use="required" type="xs:QName"/>
    <xs:attribute name="handler" use="required" type="xs:IDREF"/>
    <xs:attribute name="phase" default="default">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="bubble"/>
                <xs:enumeration value="capture"/>
                <xs:enumeration value="default"/>
                <xs:enumeration value="target"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:complexType name="xmlHandlers.removeEventListener.type">
    <xs:attributeGroup ref="xmlHandlers.removeEventListener.attlist"/>
  </xs:complexType>
  <xs:element name="removeEventListener" type="xmlHandlers.removeEventListener.type"/>
  <xs:attributeGroup name="xmlHandlers.stopPropagation.attlist">
    <xs:attributeGroup ref="xmlHandlers.Common.attrib"/>
    <xs:attribute name="event" use="required" type="xs:QName"/>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:complexType name="xmlHandlers.stopPropagation.type">
    <xs:attributeGroup ref="xmlHandlers.stopPropagation.attlist"/>
  </xs:complexType>
  <xs:element name="stopPropagation" type="xmlHandlers.stopPropagation.type"/>
  <xs:attributeGroup name="xmlHandlers.preventDefault.attlist">
    <xs:attributeGroup ref="xmlHandlers.Common.attrib"/>
    <xs:attribute name="event" use="required" type="xs:QName"/>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:complexType name="xmlHandlers.preventDefault.type">
    <xs:attributeGroup ref="xmlHandlers.preventDefault.attlist"/>
  </xs:complexType>
  <xs:element name="preventDefault" type="xmlHandlers.preventDefault.type"/>
</xs:schema>

E.3.7. XML Scripting Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
                        http://www.w3.org/2001/XMLSchema.xsd" 
    elementFormDefault="unqualified" 
    blockDefault="#all" 
    finalDefault="#all" 
    attributeFormDefault="unqualified">
  <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
             schemaLocation="xhtml-datatypes-2.xsd" />
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="http://www.w3.org/2001/xml.xsd" />
  <xs:annotation>
    <xs:documentation>
      This is the XML Schema for XML Scripting
      URI: http://www.w3.org/MarkUp/SCHEMA/xml-script-1.xsd
      $Id: xml-script-2.xsd,v 1.1.2.3 2009/01/22 04:47:53 ahby Exp $
      Note that this module requires the definition of 
      xmlScripting.Common.attrib to be a collection of attributes to 
      add to each element.  This collection MUST contain an 'id' 
      attribute.
    </xs:documentation>
    <xs:documentation source="xml-events-copyright-2.xsd"/>
  </xs:annotation>
  <xs:attributeGroup name="xmlScripting.Common.attrib">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:anyAttribute/>
  </xs:attributeGroup>
  <xs:attributeGroup name="xmlScripting.script.attlist">
    <xs:attributeGroup ref="xmlScripting.Common.attrib"/>
    <xs:attribute name="charset" type="xh11d:Charset"/>
    <xs:attribute name="defer" type="xs:NMTOKEN" fixed="defer"/>
    <xs:attribute name="implements" type="xh11d:URIorSafeCURIEs"/>
    <xs:attribute name="src" type="xs:anyURI"/>
    <xs:attribute name="type" type="xh11d:ContentTypes"/>
    <xs:anyAttribute />
  </xs:attributeGroup>
  <xs:group name="xmlScripting.script.content">
      <xs:sequence/>
  </xs:group>
  <xs:complexType name="xmlScripting.script.type" mixed="true">
      <xs:group ref="xmlScripting.script.content"/>
      <xs:attributeGroup ref="xmlScripting.script.attlist"/>
  </xs:complexType>
</xs:schema>