# 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.3 2009/04/07 16:32:57 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,
                 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>
        <!-- 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.2 2009/03/10 14:57:54 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.2 2009/03/10 14:57:54 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.l.content"/>
            <xs:attributeGroup ref="xhtml.l.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, ol, ul, li
          This module declares the list-oriented element types
          and their attributes.
          $Id: xhtml-list-2.xsd,v 1.1.2.4 2009/04/07 14:13:23 ahby Exp $
        </xs:documentation>
            <xs:documentation source="xhtml-copyright-1.xsd"/>
            <xs:documentation source="http://www.w3.org/TR/xhtml2#s_listmodule"/>
        </xs:annotation>
        <!-- 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="title" type="xhtml.title.type" minOccurs="0" maxOccurs="1"/>
                <xs:element name="caption" type="xhtml.caption.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>
        <!-- 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="title" type="xhtml.title.type" minOccurs="0" maxOccurs="1"/>
                <xs:element name="caption" type="xhtml.caption.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="title" type="xhtml.title.type" minOccurs="0" maxOccurs="1"/>
                <xs:element name="caption" type="xhtml.caption.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,
            and xml:base
            This module declares attributes and the Hypertext attribute
            collection.
          $Id: xhtml-hyperAttributes-2.xsd,v 1.1.2.2 2009/03/10 14:57:54 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: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: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: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.4 2009/04/07 14:13:23 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="title" type="xhtml.title.type" minOccurs="0"/>
                <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. Legacy Module

### E.3.1. Legacy Line Break 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-1.xsd" />
        <xs:annotation>
            <xs:documentation>
             This is the XML Schema Legacy line break module
             $Id: xhtml-legacy-br-2.xsd,v 1.1.2.1 2009/04/07 16:32:57 ahby Exp $
        </xs:documentation>
            <xs:documentation source="xhtml-copyright-1.xsd"/>
        </xs:annotation>
        <xs:attributeGroup name="xhtml.br.attlist">
            <xs:attributeGroup ref="xhtml.Core.attrib"/>
        </xs:attributeGroup>
        <xs:group name="xhtml.br.content">
            <xs:sequence/>
        </xs:group>
        <xs:complexType name="xhtml.br.type">
            <xs:group ref="xhtml.br.content"/>
            <xs:attributeGroup ref="xhtml.br.attlist"/>
        </xs:complexType>
    </xs:schema>

### E.3.2. Legacy Editing Module

    Module xhtml-legacy-edit-2.xsd not found!

### E.3.3. Legacy Headings 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-legacy-heading-2.xsd,v 1.1.2.1 2009/04/07 16:32:57 ahby Exp $
           </xs:documentation>
            <xs:documentation source="xhtml-copyright-1.xsd"/>
        </xs:annotation>
        <xs:annotation>
            <xs:documentation>
               Structural
               This module declares the legacy heading elements.
               * h1, h2, h3, h4, h5, h6
          </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>
        <!-- Heading Elements  -->
        <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>
    </xs:schema>

## E.4. Modules from Other Specifications

### E.4.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.4.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.4.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.4.4. XForms Modules

    Module xforms-2.xsd not found!

### E.4.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.4.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.4.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>