C. XHTML Schema Module Implementations

Contents

This appendix is normative.

This appendix will contain implementations of the modules defined in XHTML Abstract Modules via XML Schemas. These module implementations can be used by XHTML Family Document Types.

C.1. Character Entities

XML Schema uses DTDs to support character entities. The DTD implementation of XHTML Modularization [XHTMLMOD] defines the required character entities for XHTML. The schema implementation includes the set of character entities for XHTML, including the Latin 1, Symbol and Special character collections defined as part the DTD implementation of XHTML Modularization [XHTMLMOD].

Even though the named character entities are defined using DTDs and included in the Schema Modularization Framework, schema processors typically do not expand the named character entities in an XML document instance. The html DOCTYPE declaration must still be present if one wishes to use named entities defined by this Framework module

C.2. XHTML Schema Modular Framework

The Framework modules instantiates a set of support model that define the common Datatypes, Notations, Common attribute definitions and character entities. These are are defined in a set of support modules, instantiated by a main Framework module:

<?xml version="1.0" encoding="UTF-8"?>   
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      XHTML Modular Framework    
      This is the XML Schema Modular Framework module for XHTML
            
      This required module instantiates the necessary modules
      needed to support the XHTML modularization framework.
      
      The Schema modules instantiated are:  
        +  notations
        +  datatypes
        +  common attributes
        +  character entities
      
      $Id: xhtml-framework-1.xsd,v 1.8 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:import namespace="http://www.w3.org/XML/1998/namespace" 
             schemaLocation="http://www.w3.org/2001/xml.xsd">
    <xs:annotation>
      <xs:documentation>
        Common Attributes       
        This import brings in the attributes 
        xml:lang and xml:space in the XML namespace.
      </xs:documentation>
     </xs:annotation>
  </xs:import>  
    
  <xs:include schemaLocation="xhtml-notations-1.xsd">
    <xs:annotation>
      <xs:documentation>
         Notations module
         Declares XHTML notations for Attribute data types 
      </xs:documentation>
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-datatypes-1.xsd">
    <xs:annotation>
      <xs:documentation>
        This module defines XHTML Attribute DataTypes
      </xs:documentation>
      <xs:documentation 
          source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-attribs-1.xsd">
    <xs:annotation>
      <xs:documentation>
        This module defines Common attributes for XHTML
      </xs:documentation>
      <xs:documentation 
          source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_commonatts"/>      
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-charent-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Character entities module
        Note: Entities are not supported in XML Schema
        The Schema Module uses DTDs to define Entities
        
        This module defines
          + XHTML Latin 1 Character Entities
          + XHTML Special Characters
          + XHTML Mathematical, Greek, and Symbolic Characters
    </xs:documentation>
    </xs:annotation>
  </xs:include>

</xs:schema>

The Modular Schema framework also relies upon the following component modules:

C.2.1. XHTML Notations

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Notations module
      This is the XML Schema module for data type notations for XHTML

      Defines the following notations, many of these imported from 
      other specifications and standards. When an existing FPI is
      known, it is incorporated here.
            
      $Id: xhtml-notations-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <!-- W3C XML 1.0 Recommendation -->
  <xs:notation name="w3c-xml"
    public="ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN"/>

  <!-- XML 1.0 CDATA -->
  <xs:notation name="cdata" public="-//W3C//NOTATION XML 1.0: CDATA//EN"/>
  
  <!-- SGML Formal Public Identifiers -->
  <xs:notation name="fpi"
    public="ISO 8879:1986//NOTATION Formal Public Identifier//EN"/>

  <!-- XHTML Notations ... -->
  <!-- Length defined for cellpadding/cellspacing -->
  <!-- nn for pixels or nn% for percentage length -->
  <!-- a single character, as per section 2.2 of [XML] -->
  <xs:notation name="character"
    public="-//W3C//NOTATION XHTML Datatype: Character//EN"/>

  <!-- a character encoding, as per [RFC2045] -->
  <xs:notation name="charset"
    public="-//W3C//NOTATION XHTML Datatype: Charset//EN"/>

  <!-- a space separated list of character encodings, as per [RFC2045] -->
  <xs:notation name="charsets"
    public="-//W3C//NOTATION XHTML Datatype: Charsets//EN"/>

  <!-- media type, as per [RFC2045] -->
  <xs:notation name="contentType"
    public="-//W3C//NOTATION XHTML Datatype: ContentType//EN"/>

  <!-- comma-separated list of media types, as per [RFC2045] -->
  <xs:notation name="contentTypes"
    public="-//W3C//NOTATION XHTML Datatype: ContentTypes//EN"/>

  <!-- date and time information. ISO date format -->
  <xs:notation name="datetime"
    public="-//W3C//NOTATION XHTML Datatype: Datetime//EN"/>

  <!-- a language code, as per [RFC3066] -->
  <xs:notation name="languageCode"
    public="-//W3C//NOTATION XHTML Datatype: LanguageCode//EN"/>

  <!-- nn for pixels or nn% for percentage length -->
  <xs:notation name="length"
    public="-//W3C//NOTATION XHTML Datatype: Length//EN"/>

  <!-- space-separated list of link types -->
  <xs:notation name="linkTypes"
    public="-//W3C//NOTATION XHTML Datatype: LinkTypes//EN"/>

  <!-- single or comma-separated list of media descriptors -->
  <xs:notation name="mediaDesc"
    public="-//W3C//NOTATION XHTML Datatype: MediaDesc//EN"/>

  <!-- pixel, percentage, or relative -->
  <xs:notation name="multiLength"
    public="-//W3C//NOTATION XHTML Datatype: MultiLength//EN"/>

  <!-- one or more digits (NUMBER) -->
  <xs:notation name="number"
    public="-//W3C//NOTATION XHTML Datatype: Number//EN"/>

  <!-- one or more digits (NUMBER) -->
  <xs:notation name="pixels"
    public="-//W3C//NOTATION XHTML Datatype: Pixels//EN"/>

  <!-- script expression -->
  <xs:notation name="script"
    public="-//W3C//NOTATION XHTML Datatype: Script//EN"/>

  <!-- textual content -->
  <xs:notation name="text" public="-//W3C//NOTATION XHTML Datatype: Text//EN"/>

  <!-- a Uniform Resource Identifier, see [URI] -->
  <xs:notation name="uri" public="-//W3C//NOTATION XHTML Datatype: URI//EN"/>

  <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
  <xs:notation name="uris" public="-//W3C//NOTATION XHTML Datatype: URIs//EN"/>

</xs:schema>

C.2.2. XHTML Datatypes

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.w3.org/1999/xhtml"
            xmlns="http://www.w3.org/1999/xhtml">

    <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-1.xsd,v 1.3 2003/09/20 01:41:37 speruvem 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="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]{6}"/>
              </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:list itemType="xs:string"/>
    </xs:simpleType>
    
    <!-- comma-separated list of media types, as per [RFC2045] -->
    <xs:simpleType name="ContentTypes">
        <xs:list itemType="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 language code, as per [RFC3066] -->
    <xs:simpleType name="LanguageCode">
        <xs:restriction base="xs:language"/>
    </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>
        
</xs:schema>

C.2.3. XHTML Common Attribute Definitions

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xml="http://www.w3.org/XML/1998/namespace"            
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema common attributes module for XHTML
      $Id: xhtml-attribs-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:attributeGroup name="id">
    <xs:attribute name="id" type="xs:ID"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="class">
    <xs:attribute name="class" type="xs:NMTOKENS"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="title">
    <xs:attribute name="title" type="xs:string"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="Core.attrib">
    <xs:attributeGroup ref="id"/>
    <xs:attributeGroup ref="class"/>
    <xs:attributeGroup ref="title"/>
    <xs:attributeGroup ref="Core.extra.attrib"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="I18n.attrib">
    <xs:attribute ref="xml:lang"/>
    <xs:attributeGroup ref="I18n.extra.attrib"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="Common.attrib">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attributeGroup ref="I18n.attrib"/>
    <xs:attributeGroup ref="Common.extra"/>
  </xs:attributeGroup>      

</xs:schema>

C.2.4. XHTML Character Entities

<?xml version="1.0" encoding="UTF-8"?>
<!--
  This schema module includes three named character entity files.
-->
<!DOCTYPE xs:schema [
<!-- These are the entity sets for ISO Latin 1 characters for the XHTML -->
<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
   "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-lat1.ent">
%HTMLlat1;
<!-- These are the entity sets for special characters for the XHTML -->
<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols for XHTML//EN"
   "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-symbol.ent">
%HTMLsymbol;
<!-- These are the entity sets for symbol characters for the XHTML -->
<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special for XHTML//EN"
   "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent">
%HTMLspecial;
]>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Character Entities for XHTML    
      This is the XML Schema Character Entities module for XHTML

      This module declares the set of character entities for XHTML,
      including the Latin 1, Symbol and Special character collections.
      XML Schema does not support Entities, hence Entities are enable
      through an Internal DTD Subset.
      
      $Id: xhtml-charent-1.xsd,v 1.3 2003/09/23 21:32:35 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

</xs:schema>

C.3. XHTML Module Implementations

This section contains the formal definition of each of the XHTML Abstract Modules as a Schema module.

C.3.1. XHTML Core Modules

C.3.1.1. Structure

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" >

   <xs:annotation>
      <xs:documentation>
        This is the XML Schema Document Structure module for XHTML
        Document Structure
    
          * title, head, body, html
    
        The Structure Module defines the major structural elements and 
        their attributes.
        
        $Id: xhtml-struct-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_structuremodule"/>
    </xs:annotation>
    
    <xs:attributeGroup name="title.attlist">
      <xs:attributeGroup ref="I18n.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="title.content">
      <xs:sequence/>
    </xs:group>    
    
    <xs:complexType name="title.type" mixed="true">
      <xs:group ref="title.content"/>
      <xs:attributeGroup ref="title.attlist"/>
    </xs:complexType>
    
        
    <xs:element name="title" type="title.type"/>
    
    <xs:group name="head.content">
      <xs:sequence>
        <xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="title"/>
        <xs:group ref="HeadOpts.mix" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:group>

    <xs:attributeGroup name="profile.attrib">
      <xs:attribute name="profile" type="URI"/>
    </xs:attributeGroup>
        
    <xs:attributeGroup name="head.attlist">
      <xs:attributeGroup ref="profile.attrib"/>
      <xs:attributeGroup ref="I18n.attrib"/>
    </xs:attributeGroup>
    
    <xs:complexType name="head.type">
      <xs:group ref="head.content"/>
      <xs:attributeGroup ref="head.attlist"/>
    </xs:complexType>
    
    <xs:element name="head" type="head.type"/>
    
    <xs:attributeGroup name="body.attlist">
      <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>

    <xs:group name="body.content">
      <xs:sequence>
        <xs:group ref="Block.mix" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:group>                
    
    <xs:complexType name="body.type">
      <xs:group ref="body.content"/>
      <xs:attributeGroup ref="body.attlist"/>
    </xs:complexType>  
    
    <xs:element name="body" type="body.type"/>
    
    <xs:attributeGroup name="version.attrib">
      <xs:attribute name="version" type="FPI"/>
    </xs:attributeGroup>

    <xs:attributeGroup name="html.attlist">
      <xs:attributeGroup ref="version.attrib"/>
      <xs:attributeGroup ref="I18n.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="html.content">
      <xs:sequence>
         <xs:element ref="head"/>
         <xs:element ref="body"/>
      </xs:sequence>
    </xs:group>
    
    <xs:complexType name="html.type">
       <xs:group ref="html.content"/>
       <xs:attributeGroup ref="html.attlist"/>
    </xs:complexType>
    
    <xs:element name="html" type="html.type"/>
    
</xs:schema>

C.3.1.2. Text

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Textual Content
      This is the XML Schema Text module for XHTML

      The Text module includes declarations for all core
      text container elements and their attributes.
    
        +  block phrasal
        +  block structural
        +  inline phrasal
        +  inline structural
      
      $Id: xhtml-text-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_textmodule"/>          
  </xs:annotation>

  <xs:include schemaLocation="xhtml-blkphras-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Block Phrasal module
        Elements defined here:

          * address, blockquote, pre, h1, h2, h3, h4, h5, h6
    </xs:documentation>
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-blkstruct-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Block Structural module 
        Elements defined here:

          * div, p
    </xs:documentation>
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-inlphras-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Inline Phrasal module
        Elements defined here:

          * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
    </xs:documentation>
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-inlstruct-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Inline Structural module 
        Elements defined here:

          * br,span
    </xs:documentation>
    </xs:annotation>
  </xs:include>

</xs:schema>

C.3.1.3. Hypertext

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <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-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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="a.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="href" type="URI"/>
    <xs:attribute name="charset" type="Charset"/>
    <xs:attribute name="type" type="ContentType"/>
    <xs:attribute name="hreflang" type="LanguageCode"/>
    <xs:attribute name="rel" type="LinkTypes"/>
    <xs:attribute name="rev" type="LinkTypes"/>
    <xs:attribute name="accesskey" type="Character"/>
    <xs:attribute name="tabindex" type="Number"/>
  </xs:attributeGroup>
   
  <xs:group name="a.content">
     <xs:sequence>
        <xs:group ref="InlNoAnchor.mix" minOccurs="0" maxOccurs="unbounded"/>     
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="a.type" mixed="true">
     <xs:group ref="a.content"/>
     <xs:attributeGroup ref="a.attlist"/>
  </xs:complexType>
 
  <xs:element name="a" type="a.type"/>

</xs:schema>

C.3.1.4. Lists

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      List Module
      This is the XML Schema Lists module for XHTML
      List Module Elements
    
        * dl, dt, dd, ol, ul, li
    
      This module declares the list-oriented element types
      and their attributes.
      $Id: xhtml-list-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_listmodule"/>      
  </xs:annotation>

  <xs:attributeGroup name="dt.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="dt.content">
    <xs:sequence>
      <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="dt.type" mixed="true">
    <xs:group ref="dt.content"/>
    <xs:attributeGroup ref="dt.attlist"/>
  </xs:complexType>

  <xs:element name="dt" type="dt.type"/>

  <xs:attributeGroup name="dd.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="dd.content">
    <xs:sequence>
      <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>  
    </xs:sequence>
  </xs:group>

  <xs:complexType name="dd.type" mixed="true">
    <xs:group ref="dd.content"/>
    <xs:attributeGroup ref="dd.attlist"/>
  </xs:complexType>

  <xs:element name="dd" type="dd.type"/>

  <xs:attributeGroup name="dl.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>

  <xs:group name="dl.content">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="dt"/>
        <xs:element ref="dd"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="dl.type">
    <xs:group ref="dl.content"/>
    <xs:attributeGroup ref="dl.attlist"/>
  </xs:complexType>

  <xs:element name="dl" type="dl.type"/>

  <xs:attributeGroup name="li.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="li.content">
    <xs:sequence>
      <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>      
  </xs:group>

  <xs:complexType name="li.type" mixed="true">
    <xs:group ref="li.content"/>  
    <xs:attributeGroup ref="li.attlist"/>
  </xs:complexType>

  <xs:element name="li" type="li.type"/>

  <xs:attributeGroup name="ol.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>

  <xs:group name="ol.content">
    <xs:sequence>
      <xs:element ref="li" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="ol.type">
    <xs:group ref="ol.content"/>  
    <xs:attributeGroup ref="ol.attlist"/>
  </xs:complexType>

  <xs:element name="ol" type="ol.type"/>

  <xs:attributeGroup name="ul.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="ul.content">
    <xs:sequence>
      <xs:element ref="li" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="ul.type">
    <xs:group ref="ul.content"/>    
    <xs:attributeGroup ref="ul.attlist"/>
  </xs:complexType>

  <xs:element name="ul" type="ul.type"/>

</xs:schema>

C.3.2. Applet

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Java Applets
      This is the XML Schema module for Java Applets in XHTML
      
        * applet (param)
  
      This module declares the applet element type and its attributes, 
      used to provide support for Java applets. The 'alt' attribute 
      is now required (as it is on images). One of either code or 
      object attributes must be present. In the document, place param 
      elements before the object elements that require their content.
  
      Note that use of this module also instantiates of the 
      Param Element Module.

      $Id: xhtml-applet-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_appletmodule"/>
  </xs:annotation>

  <xs:include schemaLocation="xhtml-param-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Param module
        Include Param Module
      </xs:documentation>
    </xs:annotation>
  </xs:include>  

  <xs:attributeGroup name="applet.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attribute name="alt" type="Text" use="required"/>
    <xs:attribute name="archive" type="CDATA"/>
    <xs:attribute name="code" type="CDATA"/>
    <xs:attribute name="codebase" type="URI"/>
    <xs:attribute name="object" type="CDATA"/>
    <xs:attribute name="width" type="Length" use="required"/>
    <xs:attribute name="height" type="Length" use="required"/>
  </xs:attributeGroup>

  <xs:group name="applet.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element ref="param" />
         <xs:group ref="Flow.mix"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="applet.type" mixed="true">
    <xs:group ref="applet.content"/>
    <xs:attributeGroup ref="applet.attlist"/>
  </xs:complexType>

  <xs:element name="applet" type="applet.type"/>

</xs:schema>

C.3.3. Text Modules

C.3.3.1. Presentation

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Presentation module for XHTML
      This is a REQUIRED module.
      $Id: xhtml-pres-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Presentational Elements

      This module defines elements and their attributes for
      simple presentation-related markup.
 
      Elements defined here:

        * hr
        * b, big, i, small, sub, sup, tt
    </xs:documentation>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
  </xs:annotation>

 <xs:include schemaLocation="xhtml-blkpres-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Block Presentational module
        Elements defined here:
 
         * hr
      </xs:documentation>
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-inlpres-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Inline Presentational module
        Elements defined here:

          * b, big, i, small, sub, sup, tt
    </xs:documentation>
    </xs:annotation>
  </xs:include>

</xs:schema>

C.3.3.2. Edit

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns="http://www.w3.org/1999/xhtml">
    <xs:annotation>
      <xs:documentation>
          Editing Elements
          This is the XML Schema Editing Markup module for XHTML

           * ins, del
  
         This module declares element types and attributes used to indicate
         inserted and deleted content while editing a document.

          $Id: xhtml-edit-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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:attributeGroup name="edit.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="cite" type="URI"/>
        <xs:attribute name="datetime" type="Datetime"/>
    </xs:attributeGroup>
    
    <xs:group name="edit.content">
        <xs:sequence>
            <xs:group ref="Flow.mix"  minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    
    <xs:complexType name="edit.type" mixed="true">
        <xs:group ref="edit.content"/>
        <xs:attributeGroup ref="edit.attlist"/>
    </xs:complexType>
    
    <!-- ins: Inserted Text   -->
    <xs:element name="ins" type="edit.type"/>
    
    <!-- del: Deleted Text   -->
    <xs:element name="del" type="edit.type"/>
</xs:schema>

C.3.3.3. Bi-directional Text

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <xs:annotation>
       <xs:documentation>
          Bidirectional Override (bdo) Element     
          This is the XML Schema BDO Element module for XHTML 
          
          This modules declares the element 'bdo' and 'dir' attributes, 
          Used to override the  Unicode bidirectional algorithm for selected 
          fragments of text.
          Bidirectional text support includes both the bdo element and
          the 'dir' attribute.
                    
          $Id: xhtml-bdo-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_bdomodule"/>      
    </xs:annotation>
      
    <xs:attributeGroup name="bdo.attlist">
      <xs:attribute ref="xml:lang"/>
      <xs:attributeGroup ref="Core.attrib"/>
      <xs:attribute name="dir" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="ltr"/>
            <xs:enumeration value="rtl"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:attributeGroup>

    <xs:group name="bdo.content">
       <xs:sequence>
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>       
       </xs:sequence>
    </xs:group>          
 
    <xs:complexType name="bdo.type" mixed="true">
      <xs:group ref="bdo.content"/>
      <xs:attributeGroup ref="bdo.attlist"/>
    </xs:complexType>
    
    <xs:element name="bdo" type="bdo.type"/>

    <xs:attributeGroup name="dir.attrib">
      <xs:attribute name="dir">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="ltr"/>
            <xs:enumeration value="rtl"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:attributeGroup> 
        
</xs:schema>

C.3.4. Forms

C.3.4.1. Basic Forms

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Basic Forms module for XHTML
      $Id: xhtml-basic-form-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>    
      Basic Forms

      This forms module is based on the HTML 3.2 forms model, with
      the WAI-requested addition of the label element. While this 
      module essentially mimics the content model and attributes of 
      HTML 3.2 forms, the element types declared herein also include
      all HTML 4 common attributes.

      Elements defined here:

        * form, label, input, select, option, textarea
    </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_sformsmodule"/>
  </xs:annotation>

  <xs:attributeGroup name="form.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="action" type="URI" use="required"/>
    <xs:attribute name="method" use="optional" default="get">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="get"/>
          <xs:enumeration value="post"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="enctype" type="ContentType" default="application/x-www-form-urlencoded"/>
  </xs:attributeGroup>
  
  <xs:group name="form.content">
    <xs:sequence>
      <xs:group ref="BlkNoForm.mix" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="form.type">
    <xs:group ref="form.content"/>
    <xs:attributeGroup ref="form.attlist"/>
  </xs:complexType>

  <xs:element name="form" type="form.type"/>

  <xs:group name="label.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="input"/>
        <xs:element ref="select"/>
        <xs:element ref="textarea"/>
        <xs:group ref="InlStruct.class"/>
        <xs:group ref="InlPhras.class"/>
        <xs:group ref="I18n.class"/>
        <xs:group ref="InlPres.class"/>
        <xs:group ref="InlSpecial.class"/>
        <xs:group ref="Misc.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:attributeGroup name="label.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="for" type="xs:IDREF"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>

  <xs:complexType name="label.type" mixed="true">
    <xs:group ref="label.content"/>
    <xs:attributeGroup ref="label.attlist"/>
  </xs:complexType>

  <xs:element name="label" type="label.type"/>

<!-- 
Basic Forms removes button, 'image' and 'file' input types.
-->
  <xs:simpleType name="InputType.class">
      <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="text"/>
        <xs:enumeration value="password"/>
        <xs:enumeration value="checkbox"/>
        <xs:enumeration value="radio"/>
        <xs:enumeration value="submit"/>
        <xs:enumeration value="reset"/>
        <xs:enumeration value="hidden"/>
      </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="input.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="type" type="InputType.class" default="text"/>    
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="value" type="CDATA"/>
    <xs:attribute name="checked">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="checked"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="size" type="Number"/>
    <xs:attribute name="maxlength" type="Number"/>
    <xs:attribute name="src" type="URI"/>
    <xs:attribute name="tabindex" type="Number"/>    
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>
  
  <xs:group name="input.content">
     <xs:sequence/>
  </xs:group>    

  <xs:complexType name="input.type">
    <xs:group ref="input.content"/>
    <xs:attributeGroup ref="input.attlist"/>
  </xs:complexType>

  <xs:element name="input" type="input.type"/>

  <xs:attributeGroup name="select.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="size" type="Number"/>
    <xs:attribute name="multiple">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="multiple"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="tabindex" type="Number"/>    
  </xs:attributeGroup>
  
  <xs:group name="select.content">
    <xs:sequence>
       <xs:element ref="option" maxOccurs="unbounded"/>
    </xs:sequence>  
  </xs:group>       

  <xs:complexType name="select.type">
    <xs:group ref="select.content"/>
    <xs:attributeGroup ref="select.attlist"/>
  </xs:complexType>

  <xs:element name="select" type="select.type"/>

  <xs:attributeGroup name="option.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="selected">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="selected"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>    
    <xs:attribute name="value" type="CDATA"/>
    <xs:attribute name="tabindex" type="Number"/>    
  </xs:attributeGroup>
  
  <xs:group name="option.content">
     <xs:sequence/>
  </xs:group>  
  
  <xs:complexType name="option.type" mixed="true">
    <xs:group ref="option.content"/>
    <xs:attributeGroup ref="option.attlist"/>
  </xs:complexType>

  <xs:element name="option" type="option.type"/>

  <xs:attributeGroup name="textarea.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="rows" type="Number" use="required"/>
    <xs:attribute name="cols" type="Number" use="required"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>
  
  <xs:group name="textarea.content">
     <xs:sequence/>
  </xs:group>    

  <xs:complexType name="textarea.type" mixed="true">
     <xs:group ref="textarea.content"/>  
     <xs:attributeGroup ref="textarea.attlist"/>
  </xs:complexType>

  <xs:element name="textarea" type="textarea.type"/>

</xs:schema>

C.3.4.2. Forms

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Forms    
      This is the XML Schema Forms module for XHTML      
  
        * form, label, input, select, optgroup, option,
          textarea, fieldset, legend, button
    
      This module declares markup to provide support for online
      forms, based on the features found in HTML 4.0 forms.
          
    
      $Id: xhtml-form-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_extformsmodule"/>
  </xs:annotation>

  <!-- form: Form Element -->
  <xs:attributeGroup name="form.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="action" type="URI" use="required"/>
    <xs:attribute name="method" default="get">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="get"/>
          <xs:enumeration value="post"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="enctype" type="ContentType" default="application/x-www-form-urlencoded"/>
    <xs:attribute name="accept-charset" type="Charsets"/>
    <xs:attribute name="accept" type="ContentTypes"/>
  </xs:attributeGroup>

  <xs:group name="form.content">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:group ref="BlkNoForm.mix"/>
        <xs:element ref="fieldset"/>
      </xs:choice>
    </xs:sequence>    
  </xs:group>

  <xs:complexType name="form.type">
    <xs:group ref="form.content"/>
    <xs:attributeGroup ref="form.attlist"/>
  </xs:complexType>

  <xs:element name="form" type="form.type"/>

<!-- 
    label: Form Field Label Text 
    Note: Each label must not contain more than ONE field
-->
  <xs:group name="label.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element ref="input"/>
         <xs:element ref="select"/>
         <xs:element ref="textarea"/>
         <xs:element ref="button"/>
         <xs:group ref="InlStruct.class"/>
         <xs:group ref="InlPhras.class"/>
         <xs:group ref="I18n.class"/>
         <xs:group ref="InlPres.class"/>
         <xs:group ref="InlSpecial.class"/>
         <xs:group ref="Inline.extra"/>
         <xs:group ref="Misc.class"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:attributeGroup name="label.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="for" type="xs:IDREF"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>

  <xs:complexType name="label.type" mixed="true">
    <xs:group ref="label.content"/>
    <xs:attributeGroup ref="label.attlist"/>
  </xs:complexType>

  <xs:element name="label" type="label.type"/>

  <!-- input: Form Control -->
  <xs:simpleType name="InputType.class">
      <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="text"/>
        <xs:enumeration value="password"/>
        <xs:enumeration value="checkbox"/>
        <xs:enumeration value="radio"/>
        <xs:enumeration value="submit"/>
        <xs:enumeration value="reset"/>
        <xs:enumeration value="hidden"/>
        <xs:enumeration value="image"/>
        <xs:enumeration value="button"/>
        <xs:enumeration value="file"/>
      </xs:restriction>
  </xs:simpleType>

<!-- 
    attribute 'name' required for all but submit & reset
-->
  <xs:attributeGroup name="input.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="type" type="InputType.class" default="text"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="value" type="CDATA"/>
    <xs:attribute name="checked">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="checked"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="readonly">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="readonly"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="size" type="Number"/>
    <xs:attribute name="maxlength" type="Number"/>
    <xs:attribute name="src" type="URI"/>
    <xs:attribute name="alt" type="Text"/>
    <xs:attribute name="tabindex" type="Number"/>
    <xs:attribute name="accesskey" type="Character"/>
    <xs:attribute name="accept" type="ContentTypes"/>
  </xs:attributeGroup>

  <xs:group name="input.content">
     <xs:sequence/>
  </xs:group>  
  
  <xs:complexType name="input.type">
    <xs:group ref="input.content"/>  
    <xs:attributeGroup ref="input.attlist"/>
  </xs:complexType>

  <xs:element name="input" type="input.type"/>

  <!-- select: Option Selector  -->
  <xs:attributeGroup name="select.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="size" type="Number"/>
    <xs:attribute name="multiple">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="multiple"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="tabindex" type="Number"/>    
  </xs:attributeGroup>

  <xs:group name="select.content">
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element ref="optgroup"/>
        <xs:element ref="option"/>
      </xs:choice>
    </xs:sequence>      
  </xs:group>

  <xs:complexType name="select.type">
     <xs:group ref="select.content"/>
     <xs:attributeGroup ref="select.attlist"/>
  </xs:complexType>

  <xs:element name="select" type="select.type"/>

  <!-- optgroup: Option Group  -->
  <xs:attributeGroup name="optgroup.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="label" type="Text" use="required"/>
  </xs:attributeGroup>

  <xs:group name="optgroup.content">
    <xs:sequence>
       <xs:element ref="option" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="optgroup.type">
    <xs:group ref="optgroup.content"/>
    <xs:attributeGroup ref="optgroup.attlist"/>
  </xs:complexType>

  <xs:element name="optgroup" type="optgroup.type"/>

  <!-- option: Selectable Choice  -->
  <xs:attributeGroup name="option.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="selected">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="selected"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="label" type="Text"/>
    <xs:attribute name="value" type="CDATA"/>
  </xs:attributeGroup>

  <xs:group name="option.content">
    <xs:sequence/>
  </xs:group>
  
  <xs:complexType name="option.type" mixed="true">
    <xs:group ref="option.content"/>
    <xs:attributeGroup ref="option.attlist"/>
  </xs:complexType>

  <xs:element name="option" type="option.type"/>

  <!-- textarea: Multi-Line Text Field  -->
  <xs:attributeGroup name="textarea.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="rows" type="Number" use="required"/>
    <xs:attribute name="cols" type="Number" use="required"/>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="readonly">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="readonly"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="tabindex" type="Number"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>

  <xs:group name="textarea.content">
    <xs:sequence/>
  </xs:group>
  
  <xs:complexType name="textarea.type" mixed="true">
    <xs:group ref="textarea.content"/>
    <xs:attributeGroup ref="textarea.attlist"/>
  </xs:complexType>

  <xs:element name="textarea" type="textarea.type"/>

  <!-- fieldset: Form Control Group  -->
  <xs:attributeGroup name="fieldset.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="fieldset.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="legend"/>
        <xs:group ref="Flow.mix"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="fieldset.type" mixed="true">
    <xs:group ref="fieldset.content"/>
    <xs:attributeGroup ref="fieldset.attlist"/>
  </xs:complexType>

  <xs:element name="fieldset" type="fieldset.type"/>

  <!-- legend: Fieldset Legend  -->
  <xs:attributeGroup name="legend.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>

  <xs:group name="legend.content">
    <xs:sequence>
      <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>    

  <xs:complexType name="legend.type" mixed="true">
    <xs:group ref="legend.content"/>
    <xs:attributeGroup ref="legend.attlist"/>
  </xs:complexType>

  <xs:element name="legend" type="legend.type"/>

  <!-- button: Push Button  -->
  <xs:attributeGroup name="button.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="value" type="CDATA"/>
    <xs:attribute name="type" default="submit">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="button"/>
          <xs:enumeration value="submit"/>
          <xs:enumeration value="reset"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="tabindex" type="Number"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>

  <xs:group name="button.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="BlkNoForm.mix"/>
        <xs:group ref="InlStruct.class"/>
        <xs:group ref="InlPhras.class"/>
        <xs:group ref="InlPres.class"/>
        <xs:group ref="BlkPres.class"/>
        <xs:group ref="I18n.class"/>
        <xs:group ref="InlSpecial.class"/>
        <xs:group ref="Inline.extra"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="button.type" mixed="true">
    <xs:group ref="button.content"/>
    <xs:attributeGroup ref="button.attlist"/>
  </xs:complexType>

  <xs:element name="button" type="button.type"/>

</xs:schema>

C.3.5. Tables

C.3.5.1. Basic Tables

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Basic Tables module for XHTML
     $Id: xhtml-basic-table-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Basic Tables
    
        * table, caption, tr, th, td
    
      This table module declares elements and attributes defining
      a table model based fundamentally on features found in the
      widely-deployed HTML 3.2 table model.  While this module
      mimics the content model and table attributes of HTML 3.2
      tables, the element types declared herein also includes all
      HTML 4 common and most of the HTML 4 table attributes.
    </xs:documentation>
    <xs:documentation 
         source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_simpletablemodule"/>
  </xs:annotation>

  <xs:attributeGroup name="CellHAlign.attrib">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="left"/>
          <xs:enumeration value="center"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="CellVAlign.attrib">
    <xs:attribute name="valign">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="scope.attrib">
    <xs:attribute name="scope">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="row"/>
          <xs:enumeration value="col"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="table.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="summary" type="Text"/>
  </xs:attributeGroup>

  <xs:group name="table.content">
    <xs:sequence>
      <xs:element ref="caption" minOccurs="0" maxOccurs="1"/>
      <xs:element ref="tr" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:group>

  <xs:complexType name="table.type" >
    <xs:group ref="table.content"/>
    <xs:attributeGroup ref="table.attlist"/>
  </xs:complexType>
  
  <xs:element name="table" type="table.type"/>

  <xs:attributeGroup name="caption.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="caption.content">
     <xs:sequence>
        <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  
  

  <xs:complexType name="caption.type" mixed="true" >
    <xs:group ref="caption.content"/>   
    <xs:attributeGroup ref="caption.attlist"/>
  </xs:complexType>

  <xs:element name="caption" type="caption.type"/>

  <xs:attributeGroup name="tr.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attributeGroup ref="CellHAlign.attrib"/>
    <xs:attributeGroup ref="CellVAlign.attrib"/>
  </xs:attributeGroup>

  <xs:group name="tr.content">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="th"/>
        <xs:element ref="td"/>
      </xs:choice>
    </xs:sequence>    
  </xs:group>

  <xs:complexType name="tr.type">
    <xs:group ref="tr.content"/>
    <xs:attributeGroup ref="tr.attlist"/>
  </xs:complexType>

  <xs:element name="tr" type="tr.type"/>

  <xs:attributeGroup name="th.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="abbr" type="Text"/>
    <xs:attribute name="axis" type="CDATA"/>
    <xs:attribute name="headers" type="xs:IDREFS"/>
    <xs:attributeGroup ref="scope.attrib"/>
    <xs:attribute name="rowspan" type="Number" default="1"/>
    <xs:attribute name="colspan" type="Number" default="1"/>
    <xs:attributeGroup ref="CellHAlign.attrib"/>
    <xs:attributeGroup ref="CellVAlign.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="th.content">
     <xs:sequence>
        <xs:group ref="FlowNoTable.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>    

  <xs:complexType name="th.type" mixed="true">
    <xs:group ref="th.content"/>   
    <xs:attributeGroup ref="th.attlist"/>
  </xs:complexType>

  <xs:element name="th" type="th.type"/>

  <xs:attributeGroup name="td.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="abbr" type="Text"/>
    <xs:attribute name="axis" type="CDATA"/>
    <xs:attribute name="headers" type="xs:IDREFS"/>
    <xs:attributeGroup ref="scope.attrib"/>
    <xs:attribute name="rowspan" type="Number" default="1"/>
    <xs:attribute name="colspan" type="Number" default="1"/>
    <xs:attributeGroup ref="CellHAlign.attrib"/>
    <xs:attributeGroup ref="CellVAlign.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="td.content">
     <xs:sequence>
        <xs:group ref="FlowNoTable.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="td.type" mixed="true">
    <xs:group ref="td.content"/>   
    <xs:attributeGroup ref="td.attlist"/>
  </xs:complexType>

  <xs:element name="td" type="td.type"/>

</xs:schema>

C.3.5.2. Tables

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
           xmlns="http://www.w3.org/1999/xhtml" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:annotation>
        <xs:documentation>
          This is the XML Schema Tables module for XHTML
          $Id: xhtml-table-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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:attributeGroup name="frame.attrib">
        <xs:attribute name="frame">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="void"/>
                    <xs:enumeration value="above"/>
                    <xs:enumeration value="below"/>
                    <xs:enumeration value="hsides"/>
                    <xs:enumeration value="lhs"/>
                    <xs:enumeration value="rhs"/>
                    <xs:enumeration value="vsides"/>
                    <xs:enumeration value="box"/>
                    <xs:enumeration value="border"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    
    <xs:attributeGroup name="rules.attrib">
        <xs:attribute name="rules">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="none"/>
                    <xs:enumeration value="groups"/>
                    <xs:enumeration value="rows"/>
                    <xs:enumeration value="cols"/>
                    <xs:enumeration value="all"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    
    <xs:attributeGroup name="CellVAlign.attrib">
        <xs:attribute name="valign">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="top"/>
                    <xs:enumeration value="middle"/>
                    <xs:enumeration value="bottom"/>
                    <xs:enumeration value="baseline"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    
    <xs:attributeGroup name="CellHAlign.attrib">
        <xs:attribute name="align">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="left"/>
                    <xs:enumeration value="center"/>
                    <xs:enumeration value="right"/>
                    <xs:enumeration value="justify"/>
                    <xs:enumeration value="char"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="char" type="Character"/>
        <xs:attribute name="charoff" type="Length"/>
    </xs:attributeGroup>
    
    <xs:attributeGroup name="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="td.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="abbr" type="Text"/>
        <xs:attribute name="axis" type="CDATA"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attributeGroup ref="scope.attrib"/>
        <xs:attribute name="rowspan" type="Number" default="1"/>
        <xs:attribute name="colspan" type="Number" default="1"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="td.content">
       <xs:sequence>
          <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
    </xs:group>    
    
    <xs:complexType name="td.type" mixed="true">
        <xs:group ref="td.content"/>
        <xs:attributeGroup ref="td.attlist"/>
    </xs:complexType>
    
    <xs:element name="td" type="td.type"/>
    
    <xs:attributeGroup name="th.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="abbr" type="Text"/>
        <xs:attribute name="axis" type="CDATA"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attributeGroup ref="scope.attrib"/>
        <xs:attribute name="rowspan" type="Number" default="1"/>
        <xs:attribute name="colspan" type="Number" default="1"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="th.content">
       <xs:sequence>
          <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
    </xs:group>     
    
    <xs:complexType name="th.type" mixed="true">
        <xs:group ref="th.content"/>
        <xs:attributeGroup ref="th.attlist"/>
    </xs:complexType>
    
    <xs:element name="th" type="th.type"/>
    
    <xs:attributeGroup name="tr.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="tr.content">
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
            <xs:element ref="th"/>
            <xs:element ref="td"/>
        </xs:choice>
      </xs:sequence>
    </xs:group>
    
    <xs:complexType name="tr.type">
        <xs:group ref="tr.content"/>
        <xs:attributeGroup ref="tr.attlist"/>
    </xs:complexType>
    
    <xs:element name="tr" type="tr.type"/>
    
    <xs:attributeGroup name="col.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="span" type="Number" default="1"/>
        <xs:attribute name="width" type="MultiLength"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>

    <xs:group name="col.content">
       <xs:sequence/>
    </xs:group>             
    
    <xs:complexType name="col.type">
        <xs:group ref="col.content"/>    
        <xs:attributeGroup ref="col.attlist"/>
    </xs:complexType>
    
    <xs:element name="col" type="col.type"/>
    
    <xs:attributeGroup name="colgroup.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="span" type="Number" default="1"/>
        <xs:attribute name="width" type="MultiLength"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="colgroup.content">
        <xs:sequence>
            <xs:element ref="col" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="colgroup.type">
        <xs:group ref="colgroup.content"/>
        <xs:attributeGroup ref="colgroup.attlist"/>
    </xs:complexType>
    
    <xs:element name="colgroup" type="colgroup.type"/>
    
    <xs:attributeGroup name="tbody.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="tbody.content">
        <xs:sequence>
            <xs:element ref="tr" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    
    <xs:complexType name="tbody.type">
        <xs:group ref="tbody.content"/>
        <xs:attributeGroup ref="tbody.attlist"/>
    </xs:complexType>
    
    <xs:element name="tbody" type="tbody.type"/>
    
    <xs:attributeGroup name="tfoot.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="tfoot.content">
        <xs:sequence>
            <xs:element ref="tr" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    
    <xs:complexType name="tfoot.type">
        <xs:group ref="tfoot.content"/>
        <xs:attributeGroup ref="tfoot.attlist"/>
    </xs:complexType>
    
    <xs:element name="tfoot" type="tfoot.type"/>
    
    <xs:attributeGroup name="thead.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="thead.content">
        <xs:sequence>
            <xs:element ref="tr" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    
    <xs:complexType name="thead.type">
        <xs:group ref="thead.content"/>
        <xs:attributeGroup ref="thead.attlist"/>
    </xs:complexType>
    
    <xs:element name="thead" type="thead.type"/>
    
    <xs:attributeGroup name="caption.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="caption.content">
       <xs:sequence>
         <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>       
    </xs:group>    

    <xs:complexType name="caption.type" mixed="true">
        <xs:group ref="caption.content"/>
        <xs:attributeGroup ref="caption.attlist"/>
    </xs:complexType>
    
    <xs:element name="caption" type="caption.type"/>
    
    <xs:attributeGroup name="table.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="summary" type="Text"/>
        <xs:attribute name="width" type="Length"/>
        <xs:attribute name="border" type="Pixels"/>
        <xs:attributeGroup ref="frame.attrib"/>
        <xs:attributeGroup ref="rules.attrib"/>
        <xs:attribute name="cellspacing" type="Length"/>
        <xs:attribute name="cellpadding" type="Length"/>
    </xs:attributeGroup>
    
    <xs:group name="table.content">
        <xs:sequence>
            <xs:element ref="caption" minOccurs="0"/>
            <xs:choice>
                <xs:element ref="col" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element ref="colgroup" minOccurs="0" maxOccurs="unbounded"/>
            </xs:choice>
            <xs:choice>
                <xs:sequence>
                    <xs:element ref="thead" minOccurs="0"/>
                    <xs:element ref="tfoot" minOccurs="0"/>
                    <xs:element ref="tbody" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:choice>
                    <xs:element ref="tr" maxOccurs="unbounded"/>
                </xs:choice>
            </xs:choice>
        </xs:sequence>
    </xs:group>
    
    <xs:complexType name="table.type">
        <xs:group ref="table.content"/>
        <xs:attributeGroup ref="table.attlist"/>
    </xs:complexType>
    
    <xs:element name="table" type="table.type"/>

</xs:schema>

C.3.6. Image

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <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-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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="img.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="src" type="URI" use="required"/>
    <xs:attribute name="alt" type="Text" use="required"/>
    <xs:attribute name="longdesc" type="URI"/>
    <xs:attribute name="height" type="Length"/>
    <xs:attribute name="width" type="Length"/>
  </xs:attributeGroup>

  <xs:group name="img.content">
     <xs:sequence/>
  </xs:group>  
    
  <xs:complexType name="img.type">
     <xs:group ref="img.content"/>
     <xs:attributeGroup ref="img.attlist"/>
  </xs:complexType>

  <xs:element name="img" type="img.type"/>

</xs:schema>

C.3.7. Client-side Image Map

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">


  <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-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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="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="Coords.Datatype">
     <xs:restriction base="Text"/>
  </xs:simpleType>
  
  <!-- modify anchor attribute definition list -->
  <xs:attributeGroup name="a.csim.attlist">   
    <xs:attribute name="shape" type="Shape.Datatype" default="rect"/>
    <xs:attribute name="coords" type="Coords.Datatype"/>
  </xs:attributeGroup>

  <!-- modify img attribute definition list -->
  <xs:attributeGroup name="img.csim.attlist">
    <xs:attribute name="usemap" type="xs:IDREF"/>
  </xs:attributeGroup>

  <!-- modify form input attribute definition list -->
  <xs:attributeGroup name="input.csim.attlist">
    <xs:attribute name="usemap" type="xs:IDREF"/>
  </xs:attributeGroup>

  <!-- modify object attribute definition list -->
  <xs:attributeGroup name="object.csim.attlist">
    <xs:attribute name="usemap" type="xs:IDREF"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="area.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="href" type="URI"/>
    <xs:attribute name="shape" type="Shape.Datatype" default="rect"/>
    <xs:attribute name="coords" type="Coords.Datatype"/>
    <xs:attribute name="nohref">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="nohref"/>
          </xs:restriction>
        </xs:simpleType>    
    </xs:attribute>
    <xs:attribute name="alt" type="Text" use="required"/>
    <xs:attribute name="tabindex" type="Number"/>
    <xs:attribute name="accesskey" type="Character"/>
  </xs:attributeGroup>

  <xs:group name="area.content">
     <xs:sequence/>
  </xs:group>    
  
  <xs:complexType name="area.type">
    <xs:group ref="area.content"/>   
    <xs:attributeGroup ref="area.attlist"/>
  </xs:complexType>

  <xs:element name="area" type="area.type"/>

  <!-- map -->
  <xs:attributeGroup name="map.attlist">
    <xs:attribute name="id" type="xs:ID" use="required"/>
    <xs:attributeGroup ref="class"/>
    <xs:attributeGroup ref="title"/>
    <xs:attributeGroup ref="Core.extra.attrib"/>
    <xs:attributeGroup ref="I18n.attrib"/>
  </xs:attributeGroup>

  <xs:group name="map.content">
    <xs:sequence>
       <xs:choice maxOccurs="unbounded">
          <xs:group ref="Block.mix"/>
          <xs:element ref="area"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="map.type">
    <xs:group ref="map.content"/>
    <xs:attributeGroup ref="map.attlist"/>
  </xs:complexType>
  
  <xs:element name="map" type="map.type"/>

</xs:schema>

C.3.8. Server-side Image Map

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Server-side Image Maps module for XHTML
      $Id: xhtml-ssismap-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>


  <xs:annotation>
    <xs:documentation>
      Server-side Image Maps
      
      This adds the 'ismap' attribute to the img element to 
      support server-side processing of a user selection.
    </xs:documentation>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_servermapmodule"/>
  </xs:annotation>

  <xs:attributeGroup name="img.ssimap.attlist">
    <xs:attribute name="ismap">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="ismap"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="input.ssimap.attlist">
    <xs:attribute name="ismap">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="ismap"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>  

</xs:schema>

C.3.9. Object

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Embedded Object module for XHTML
      $Id: xhtml-object-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Param module
        
        Elements defined here:
          * param
      </xs:documentation>
    </xs:annotation>
  </xs:include>
    
  <xs:attributeGroup name="object.attlist">
    <xs:attributeGroup ref="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="classid" type="URI"/>
    <xs:attribute name="codebase" type="URI"/>
    <xs:attribute name="data" type="URI"/>
    <xs:attribute name="type" type="ContentType"/>
    <xs:attribute name="codetype" type="ContentType"/>
    <xs:attribute name="archive" type="URIs"/>
    <xs:attribute name="standby" type="Text"/>
    <xs:attribute name="height" type="Length"/>
    <xs:attribute name="width" type="Length"/>
    <xs:attribute name="name" type="CDATA"/>
    <xs:attribute name="tabindex" type="Number"/>
  </xs:attributeGroup>

  <xs:group name="object.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="param"/>
        <xs:group ref="Flow.mix"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="object.type" mixed="true">
    <xs:group ref="object.content"/>
    <xs:attributeGroup ref="object.attlist"/>
  </xs:complexType>

  <xs:element name="object" type="object.type"/>

</xs:schema>

C.3.10. Frames

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Frames module for XHTML
      $Id: xhtml-frames-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Frames 
  
        * frameset, frame, noframes
  
      This module declares frame-related element types and attributes.
    </xs:documentation>
    <xs:documentation 
         source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_framesmodule"/>    
  </xs:annotation>

  <xs:attributeGroup name="frameset.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attribute name="rows" type="MultiLengths"/>
    <xs:attribute name="cols" type="MultiLengths"/>
  </xs:attributeGroup>

  <xs:group name="frameset.content">
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element ref="frameset"/>
        <xs:element ref="frame"/>
      </xs:choice>
      <xs:element ref="noframes" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="frameset.type" mixed="true">
    <xs:group ref="frameset.content"/>
    <xs:attributeGroup ref="frameset.attlist"/>
  </xs:complexType>

  <xs:element name="frameset" type="frameset.type"/>

<!-- 
    reserved frame names start with "_" 
    otherwise starts with letter 
-->
  <xs:attributeGroup name="frame.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attribute name="longdesc" type="URI"/>
    <xs:attribute name="src" type="URI"/>
    <xs:attribute name="frameborder" default="1">
      <xs:simpleType>
        <xs:restriction base="xs:nonNegativeInteger">
          <xs:enumeration value="1"/>
          <xs:enumeration value="0"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="marginwidth" type="Pixels"/>
    <xs:attribute name="marginheight" type="Pixels"/>
    <xs:attribute name="noresize">
       <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="noresize"/>
          </xs:restriction>
       </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="scrolling" default="auto">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="yes"/>
          <xs:enumeration value="no"/>
          <xs:enumeration value="auto"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  
  <xs:group name="frame.content">
     <xs:sequence/>
  </xs:group>  

  <xs:complexType name="frame.type">
    <xs:group ref="frame.content"/>
    <xs:attributeGroup ref="frame.attlist"/>
  </xs:complexType>

  <xs:element name="frame" type="frame.type"/>

<!-- 
noframes 
-->
  <xs:group name="noframes.content">
    <xs:sequence>
      <xs:element ref="body"/>
    </xs:sequence>
  </xs:group>

  <xs:attributeGroup name="noframes.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>

  <xs:complexType name="noframes.type" mixed="true">
    <xs:group ref="noframes.content"/>
    <xs:attributeGroup ref="noframes.attlist"/>
  </xs:complexType>

  <xs:element name="noframes" type="noframes.type"/>

</xs:schema>

C.3.11. Target

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Target module for XHTML
      $Id: xhtml-target-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Target 
      
        * target
      
      This module declares the 'target' attribute used for opening windows
    </xs:documentation>
    <xs:documentation 
         source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_targetmodule"/>
  </xs:annotation>
  
  <xs:simpleType name="FrameTarget">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>  

  <xs:attributeGroup name="base.target.attlist">
    <xs:attribute name="target" type="FrameTarget"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="form.target.attlist">
    <xs:attribute name="target" type="FrameTarget"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="link.target.attlist">
    <xs:attribute name="target" type="FrameTarget"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="area.target.attlist">
    <xs:attribute name="target" type="FrameTarget"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="a.target.attlist">
    <xs:attribute name="target" type="FrameTarget"/>
  </xs:attributeGroup>

</xs:schema>

C.3.12. Iframe

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Inline Frame Element module for XHTML
      $Id: xhtml-iframe-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Inline Frames 
      
        * iframe
    
      This module declares the iframe element type and its attributes,
      used to create an inline frame within a document. 
    </xs:documentation>
    <xs:documentation 
         source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_iframemodule"/>
  </xs:annotation>

  <xs:attributeGroup name="iframe.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attribute name="longdesc" type="URI"/>
    <xs:attribute name="src" type="URI"/>
    <xs:attribute name="frameborder" default="1">
      <xs:simpleType>
        <xs:restriction base="xs:nonNegativeInteger">
          <xs:enumeration value="1"/>
          <xs:enumeration value="0"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="marginwidth" type="Pixels"/>
    <xs:attribute name="marginheight" type="Pixels"/>
    <xs:attribute name="scrolling" default="auto">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="yes"/>
          <xs:enumeration value="no"/>
          <xs:enumeration value="auto"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="height" type="Length"/>
    <xs:attribute name="width" type="Length"/>
  </xs:attributeGroup>

  <xs:group name="iframe.content">
     <xs:sequence>
        <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  
  
  <xs:complexType name="iframe.type" mixed="true">
    <xs:group ref="iframe.content"/>
    <xs:attributeGroup ref="iframe.attlist"/>
  </xs:complexType>

  <xs:element name="iframe" type="iframe.type"/>

</xs:schema>

C.3.13. Intrinsic Events

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Intrinsic Event Attributes          
      This is the XML Schema Intrinsic Events module for XHTML

      These are the event attributes defined in HTML 4,
      Section 18.2.3 "Intrinsic Events". 
    
      "Note: Authors of HTML documents are advised that changes
       are likely to occur in the realm of intrinsic events
       (e.g., how scripts are bound to events). Research in
       this realm is carried on by members of the W3C Document
       Object Model Working Group (see the W3C Web site at
       http://www.w3.org/ for more information)."
      
      $Id: xhtml-events-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_intrinsiceventsmodule"/>
  </xs:annotation>

  <xs:attributeGroup name="Events.attrib">
    <xs:attribute name="onclick" type="Script"/>
    <xs:attribute name="ondblclick" type="Script"/>
    <xs:attribute name="onmousedown" type="Script"/>
    <xs:attribute name="onmouseup" type="Script"/>
    <xs:attribute name="onmouseover" type="Script"/>
    <xs:attribute name="onmousemove" type="Script"/>
    <xs:attribute name="onmouseout" type="Script"/>
    <xs:attribute name="onkeypress" type="Script"/>
    <xs:attribute name="onkeydown" type="Script"/>
    <xs:attribute name="onkeyup" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on anchor element
-->
  <xs:attributeGroup name="a.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on form element
-->
  <xs:attributeGroup name="form.events.attlist">
    <xs:attribute name="onsubmit" type="Script"/>
    <xs:attribute name="onreset" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on label element
-->
  <xs:attributeGroup name="label.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on input element
-->
  <xs:attributeGroup name="input.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
    <xs:attribute name="onselect" type="Script"/>
    <xs:attribute name="onchange" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on select element
-->
  <xs:attributeGroup name="select.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
    <xs:attribute name="onchange" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on textarea element
-->
  <xs:attributeGroup name="textarea.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
    <xs:attribute name="onselect" type="Script"/>
    <xs:attribute name="onchange" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on button element
-->
  <xs:attributeGroup name="button.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on body element
-->
  <xs:attributeGroup name="body.events.attlist">
    <xs:attribute name="onload" type="Script"/>
    <xs:attribute name="onunload" type="Script"/>
  </xs:attributeGroup>

<!-- 
    additional attributes on area element
-->
  <xs:attributeGroup name="area.events.attlist">
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
  </xs:attributeGroup>

</xs:schema>

C.3.14. Metainformation

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Metainformation module for XHTML
      $Id: xhtml-meta-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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:attributeGroup name="meta.attlist">
    <xs:attributeGroup ref="I18n.attrib"/>
    <xs:attribute name="http-equiv" type="xs:NMTOKEN"/>
    <xs:attribute name="name" type="xs:NMTOKEN"/>
    <xs:attribute name="content" type="CDATA" use="required"/>
    <xs:attribute name="scheme" type="CDATA"/>
  </xs:attributeGroup>
  
  <xs:group name="meta.content">
     <xs:sequence/>
  </xs:group>    

  <xs:complexType name="meta.type">
    <xs:group ref="meta.content"/>  
    <xs:attributeGroup ref="meta.attlist"/>
  </xs:complexType>

  <xs:element name="meta" type="meta.type"/>

</xs:schema>

C.3.15. Scripting

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
           xmlns:xml="http://www.w3.org/XML/1998/namespace"
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns="http://www.w3.org/1999/xhtml">
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema Scripting module for XHTML
      $Id: xhtml-script-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <xs:annotation>
        <xs:documentation>
      Scripting
      
        * script, noscript
      
      This module declares element types and attributes used to provide
      support for executable scripts as well as an alternate content
      container where scripts are not supported.
    </xs:documentation>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_scriptmodule"/>
    </xs:annotation>
    
    <xs:attributeGroup name="script.attlist">
        <xs:attribute name="charset" type="Charset"/>
        <xs:attribute name="type" type="ContentType" use="required"/>
        <xs:attribute name="src" type="URI"/>
        <xs:attribute name="defer">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="defer"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute ref="xml:space" fixed="preserve"/>
    </xs:attributeGroup>
    
    <xs:group name="script.content">
       <xs:sequence/>
    </xs:group>
      
    <xs:complexType name="script.type" mixed="true">
        <xs:group ref="script.content"/> 
        <xs:attributeGroup ref="script.attlist"/>
    </xs:complexType>
    
    <xs:element name="script" type="script.type"/>
    
    <xs:attributeGroup name="noscript.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="noscript.content">
       <xs:sequence>
          <xs:group ref="Block.mix" maxOccurs="unbounded"/>       
       </xs:sequence>
    </xs:group>    
    
    <xs:complexType name="noscript.type">
        <xs:group ref="noscript.content"/>
        <xs:attributeGroup ref="noscript.attlist"/>
    </xs:complexType>
    
    <xs:element name="noscript" type="noscript.type"/>
</xs:schema>

C.3.16. Style Sheet

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:xml="http://www.w3.org/XML/1998/namespace"           
           xmlns="http://www.w3.org/1999/xhtml">
    <xs:annotation>
        <xs:documentation>
      This is the XML Schema Stylesheets module for XHTML
      $Id: xhtml-style-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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:attributeGroup name="style.attlist">
        <xs:attributeGroup ref="title"/>
        <xs:attributeGroup ref="I18n.attrib"/>
        <xs:attribute name="type" type="ContentType" use="required"/>
        <xs:attribute name="media" type="MediaDesc"/>
        <xs:attribute ref="xml:space" fixed="preserve"/>
    </xs:attributeGroup>
    
    <xs:group name="style.content">
       <xs:sequence/>
    </xs:group>
    
    <xs:complexType name="style.type" mixed="true">
        <xs:group ref="style.content"/>
        <xs:attributeGroup ref="style.attlist"/>
    </xs:complexType>
    
    <xs:element name="style" type="style.type"/>
    
</xs:schema>

C.3.17. Style Attribute

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <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-inlstyle-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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="style.attrib">
    <xs:attribute name="style" type="CDATA"/>
  </xs:attributeGroup>

</xs:schema>

C.3.18. Link

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Link Element module for XHTML
      $Id: xhtml-link-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Link element
    
        * link
    
      This module declares the link element type and its attributes,
      which could (in principle) be used to define document-level links
      to external resources.
    </xs:documentation>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_linkmodule"/>    
  </xs:annotation>

  <xs:attributeGroup name="link.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="charset" type="Charset"/>
    <xs:attribute name="href" type="URI"/>
    <xs:attribute name="hreflang" type="LanguageCode"/>
    <xs:attribute name="type" type="ContentType"/>
    <xs:attribute name="rel" type="LinkTypes"/>
    <xs:attribute name="rev" type="LinkTypes"/>
    <xs:attribute name="media" type="MediaDesc"/>
  </xs:attributeGroup>

    
  <xs:group name="link.content">
     <xs:sequence/>
  </xs:group>  
  
  <xs:complexType name="link.type">
    <xs:group ref="link.content"/>
    <xs:attributeGroup ref="link.attlist"/>
  </xs:complexType>

  <xs:element name="link" type="link.type"/>

</xs:schema>

C.3.19. Base

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns="http://www.w3.org/1999/xhtml">
    <xs:annotation>
      <xs:documentation>
        Base element
        This is the XML Schema Base Element module for XHTML      
                
          * base

        This module declares the base element type and its attributes,        
        used to define a base URI against which relative URIs in the
        document will be resolved.

        $Id: xhtml-base-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_basemodule"/>
    </xs:annotation>
    
    <xs:attributeGroup name="base.attlist">
       <xs:attribute name="href" type="URI" use="required"/>
    </xs:attributeGroup>

    <xs:group name="base.content">
       <xs:sequence/>
    </xs:group>  
          
    <xs:complexType name="base.type">
       <xs:group ref="base.content"/>
       <xs:attributeGroup ref="base.attlist"/>
    </xs:complexType>
    
    <xs:element name="base" type="base.type"/>
    
</xs:schema>

C.3.20. Name Identification

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Name Identifier module for XHTML
      $Id: xhtml-nameident-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Name Identifier
    
        * 'name' attribute on form, img, a, map, applet, frame, iframe
    
      This module declares the 'name' attribute on element types when 
      it is used as a node identifier for legacy linking and scripting 
      support. This does not include those instances when 'name' is used 
      as a container for form control, property or metainformation names.
         
      This module should be instantiated following all modules it modifies.
    </xs:documentation>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_nameidentmodule"/>
  </xs:annotation>


  <xs:attributeGroup name="form.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="img.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="a.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="map.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="applet.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="frame.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="iframe.name.attlist">
    <xs:attribute name="name" type="CDATA"/>
  </xs:attributeGroup>

</xs:schema>

C.3.21. Legacy

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Module for HTML Legacy Markup
 
        font, basefont, center, s, strike, u,
        dir, menu, isindex
        (plus additional datatypes and legacy attributes)

       This optional module declares additional markup for simple
       presentation-related markup based on features found in the
       HTML 4 Transitional and Frameset DTDs.
       
       The legacy module also include frames module, iframe module
       and target module. (Note: This module expects find the schema files
       of that declare these module)

       Elements/Attributes defined in frame, iframe and targer modules are
       
          * frameset, frame, noframes, att:target, iframe       
       
       $Id: xhtml-legacy-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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_legacymodule"/>    
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_framesmodule"/>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_targetmodule"/>
    <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_iframemodule"/>      
  </xs:annotation>

  <xs:include schemaLocation="xhtml-misc-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Miscellaneous module
        Attributes defined here:

          * font, basefont, center, s, strike, u, dir, menu, isindex
            (plus additional datatypes and attributes)
  
      </xs:documentation>
    </xs:annotation>
  </xs:include>
    
  <xs:include schemaLocation="xhtml-frames-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Frames module

        Elements defined here:

          * frameset, frame, noframes
      </xs:documentation>
      <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_framesmodule"/>    
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-target-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Target module

        Attributes defined here:

          * target
      </xs:documentation>
      <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_targetmodule"/>      
    </xs:annotation>
  </xs:include>

  <xs:include schemaLocation="xhtml-iframe-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Iframe module

        Elements defined here:

          * iframe
      </xs:documentation>
      <xs:documentation 
        source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_iframemodule"/>      
    </xs:annotation>
  </xs:include>  

</xs:schema>

C.3.22. Ruby

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the Ruby module for XHTML
      $Id: xhtml-ruby-1.xsd,v 1.3 2003/09/22 19:05:41 speruvem 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/ruby
      
      This module defines "Ruby " or "complex Ruby" as described
      in the specification:
      
        http://www.w3.org/TR/ruby/#complex
    
      Simple or Basic Ruby are defined in a separate module.
      
      This module expects the document model to define the
      following content models
        + InlNoRuby.mix
         
    </xs:documentation>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Ruby Elements
          
        * ruby, rbc, rtc, rb, rt, rp
          
      This module declares the elements and their attributes used to
      support complex ruby annotation markup.
    </xs:documentation>
  </xs:annotation>
  
  <xs:group name="ruby.content.simple">
    <xs:sequence>
      <xs:element ref="rb"/>
      <xs:choice>
        <xs:element ref="rt"/>
        <xs:sequence>
          <xs:element ref="rp"/>
          <xs:element ref="rt"/>
          <xs:element ref="rp"/>
        </xs:sequence>
      </xs:choice>
    </xs:sequence>
  </xs:group>

  <xs:group name="ruby.content.complex">
    <xs:sequence>
      <xs:element ref="rbc"/>
      <xs:element ref="rtc" maxOccurs="2"/>
    </xs:sequence>
  </xs:group>

  <!--
   add to this group any common attributes for all Ruby elements
  -->
  <xs:attributeGroup name="ruby.common.attrib"/>
  
  <xs:group name="ruby.content">
    <xs:choice>
      <xs:group ref="ruby.content.simple"/>
      <xs:group ref="ruby.content.complex"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="ruby.type">
    <xs:group ref="ruby.content"/>
    <xs:attributeGroup ref="ruby.common.attrib"/>
  </xs:complexType>

  <xs:element name="ruby" type="ruby.type"/>

  <!--
   rbc (ruby base component) element 
  -->
  <xs:attributeGroup name="rbc.attlist">
    <xs:attributeGroup ref="ruby.common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="rbc.content">
    <xs:sequence>
      <xs:element ref="rb"/>
    </xs:sequence>
  </xs:group>  

  <xs:complexType name="rbc.type">
    <xs:group ref="rbc.content"/>
    <xs:attributeGroup ref="rbc.attlist"/>
  </xs:complexType>

  <xs:element name="rbc" type="rbc.type"/>

  <!--
   rtc (ruby text component) element
  -->
  <xs:attributeGroup name="rtc.attlist">
    <xs:attributeGroup ref="ruby.common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="rtc.content">
    <xs:sequence>
      <xs:element ref="rt" maxOccurs="unbounded"/>
    </xs:sequence>  
  </xs:group>    

  <xs:complexType name="rtc.type">
    <xs:group ref="rt.content"/>  
    <xs:attributeGroup ref="rtc.attlist"/>
  </xs:complexType>

  <xs:element name="rtc" type="rtc.type"/>

  <!--
   rb (ruby base) element 
  -->
  <xs:attributeGroup name="rb.attlist">
    <xs:attributeGroup ref="ruby.common.attrib"/>
  </xs:attributeGroup>

  <xs:group name="rb.content">
    <xs:sequence>
       <xs:group ref="InlNoRuby.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      

  <xs:complexType name="rb.type" mixed="true">
    <xs:group ref="rb.content"/>
    <xs:attributeGroup ref="rb.attlist"/>
  </xs:complexType>
    
  <xs:element name="rb" type="rb.type"/>

  <!--
   rt (ruby text) element 
  -->
  <xs:attributeGroup name="rt.attlist">
    <xs:attributeGroup ref="ruby.common.attrib"/>
    <xs:attribute name="rbspan" type="Number" default="1"/>
  </xs:attributeGroup>

  <xs:group name="rt.content">
    <xs:sequence>
       <xs:group ref="InlNoRuby.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      
  
  <xs:complexType name="rt.type" mixed="true">
    <xs:group ref="rt.content"/>  
    <xs:attributeGroup ref="rt.attlist"/>
  </xs:complexType>

  <xs:element name="rt" type="rt.type"/>

  <!-- rp (ruby parenthesis) element  -->
  <xs:attributeGroup name="rp.attlist">
    <xs:attributeGroup ref="ruby.common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="rp.content">
    <xs:sequence/>
  </xs:group>      
  

  <xs:complexType name="rp.type" mixed="true">
    <xs:group ref="rp.content"/>
    <xs:attributeGroup ref="rp.attlist"/>
  </xs:complexType>

  <xs:element name="rp" type="rp.type"/>

</xs:schema>

C.4. XHTML Schema Support Modules

The modules in this section are elements of the XHTML Schema implementation that, while hidden from casual users, are important to understand when creating derivative markup languages using the Modularization architecture.

C.4.1. Block Phrasal

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns="http://www.w3.org/1999/xhtml">
           
    <xs:annotation>
        <xs:documentation>
        Block Phrasal elements module
        This is the XML Schema block phrasal element module for XHTML

        * address, blockquote, pre, h1, h2, h3, h4, h5, h6

        This module declares the elements and their attributes used to
        support block-level phrasal markup.
        
        $Id: xhtml-blkphras-1.xsd,v 1.3 2003/09/23 20:33:11 speruvem Exp $
      </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    
    <!-- address -->
    <xs:attributeGroup name="address.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
   
    <xs:group name="address.content">
       <xs:sequence>
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>       
       </xs:sequence>
    </xs:group>
        
    <xs:complexType name="address.type" mixed="true">
        <xs:group ref="address.content"/>      
        <xs:attributeGroup ref="address.attlist"/>
    </xs:complexType>
    
    <xs:element name="address" type="address.type"/>
    
    <!-- blockquote -->
    <xs:attributeGroup name="blockquote.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="cite" type="URI"/>
    </xs:attributeGroup>

    <xs:group name="blockquote.content">
       <xs:sequence>
          <xs:group ref="Block.mix" maxOccurs="unbounded"/>       
       </xs:sequence>
    </xs:group>        
    
    <xs:complexType name="blockquote.type">
        <xs:group ref="blockquote.content"/> 
        <xs:attributeGroup ref="blockquote.attlist"/>
    </xs:complexType>
    
    <xs:element name="blockquote" type="blockquote.type"/>
    
    <!-- pre -->
    <xs:attributeGroup name="pre.attlist">
        <xs:attribute ref="xml:space" fixed="preserve"/>    
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="pre.content">
       <xs:sequence>    
          <xs:group ref="InlinePre.mix" minOccurs="0" maxOccurs="unbounded"/>       
       </xs:sequence>
    </xs:group>        
        
    <xs:complexType name="pre.type" mixed="true">
        <xs:group ref="pre.content"/>     
        <xs:attributeGroup ref="pre.attlist"/>
    </xs:complexType>
    
    <xs:element name="pre" type="pre.type"/>
    
    <!-- Heading Elements  -->
    <xs:attributeGroup name="heading.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:complexType name="heading.type" mixed="true">
        <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="heading.attlist"/>
    </xs:complexType>
    
    <xs:attributeGroup name="h1.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="h1.content">
       <xs:sequence>    
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>    
       </xs:sequence>
    </xs:group>
    
    <xs:complexType name="h1.type" mixed="true">
        <xs:group ref="h1.content"/>
        <xs:attributeGroup ref="h1.attlist"/>
    </xs:complexType>
       
    <xs:element name="h1" type="h1.type"/>
    
    <xs:attributeGroup name="h2.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="h2.content">
       <xs:sequence>    
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>    
       </xs:sequence>
    </xs:group>
    
    <xs:complexType name="h2.type" mixed="true">
        <xs:group ref="h2.content"/>
        <xs:attributeGroup ref="h2.attlist"/>
    </xs:complexType>
    
    <xs:element name="h2" type="h2.type"/>
    
    <xs:attributeGroup name="h3.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="h3.content">
       <xs:sequence>    
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>    
       </xs:sequence>
    </xs:group>
    
    <xs:complexType name="h3.type" mixed="true">
        <xs:group ref="h3.content"/>
        <xs:attributeGroup ref="h3.attlist"/>
    </xs:complexType>
    
    <xs:element name="h3" type="h3.type"/>
    
    <xs:attributeGroup name="h4.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="h4.content">
       <xs:sequence>    
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>    
       </xs:sequence>
    </xs:group>
    
    <xs:complexType name="h4.type" mixed="true">
        <xs:group ref="h4.content"/>
        <xs:attributeGroup ref="h4.attlist"/>
    </xs:complexType>
    
    <xs:element name="h4" type="h4.type"/>
    
    <xs:attributeGroup name="h5.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="h5.content">
       <xs:sequence>    
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>    
       </xs:sequence>
    </xs:group>
    
    <xs:complexType name="h5.type" mixed="true">
        <xs:group ref="h5.content"/>
        <xs:attributeGroup ref="h5.attlist"/>
    </xs:complexType>
    
    <xs:element name="h5" type="h5.type"/>

    <xs:attributeGroup name="h6.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
    </xs:attributeGroup>
    
    <xs:group name="h6.content">
       <xs:sequence>    
          <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>    
       </xs:sequence>
    </xs:group>
    
    <xs:complexType name="h6.type" mixed="true">
        <xs:group ref="h6.content"/>
        <xs:attributeGroup ref="h6.attlist"/>
    </xs:complexType>
    
    <xs:element name="h6" type="h6.type"/>
    
</xs:schema>

C.4.2. Block Presentational

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML SchemaBlock presentation element module for XHTML
      $Id: xhtml-blkpres-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Block Presentational Elements
  
        * hr
  
      This module declares the elements and their attributes used to
      support block-level presentational markup.
    </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_presentationmodule"/>    
  </xs:annotation>

  <xs:attributeGroup name="hr.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="hr.content">
    <xs:sequence/>
  </xs:group>  
  
  <xs:complexType name="hr.type">
    <xs:group ref="hr.content"/>
    <xs:attributeGroup ref="hr.attlist"/>
  </xs:complexType>

  <xs:element name="hr" type="hr.type"/>

</xs:schema>

C.4.3. Block Structural

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Block Structural

        * div, p
  
      This module declares the elements and their attributes used to
      support block-level structural markup.            
          
      This is the XML Schema Block Structural module for XHTML
      $Id: xhtml-blkstruct-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <!-- div -->
  <xs:attributeGroup name="div.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>

  <xs:group name="div.content">
     <xs:sequence>
        <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>     
     </xs:sequence>
  </xs:group>    

  <xs:complexType name="div.type" mixed="true">
    <xs:group ref="div.content"/>     
    <xs:attributeGroup ref="div.attlist"/>
  </xs:complexType>

  <xs:element name="div" type="div.type"/>

  <!-- p -->
  <xs:attributeGroup name="p.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="p.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>     
     </xs:sequence>
  </xs:group>      

  <xs:complexType name="p.type" mixed="true">
    <xs:group ref="p.content"/>       
    <xs:attributeGroup ref="p.attlist"/>
  </xs:complexType>

  <xs:element name="p" type="p.type"/>

</xs:schema>

C.4.4. Inline Phrasal

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Inline Phrasal
      This is the XML Schema Inline Phrasal module for XHTML
    
        * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
    
      This module declares the elements and their attributes used to
      support inline-level phrasal markup.      
      $Id: xhtml-inlphras-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $    
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>


  <xs:attributeGroup name="abbr.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="abbr.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="abbr.type" mixed="true">
    <xs:group ref="abbr.content"/>   
    <xs:attributeGroup ref="abbr.attlist"/>
  </xs:complexType>  

  <xs:element name="abbr" type="abbr.type"/>
 
  <xs:attributeGroup name="acronym.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="acronym.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="acronym.type" mixed="true">
    <xs:group ref="acronym.content"/>   
    <xs:attributeGroup ref="acronym.attlist"/>
  </xs:complexType>  
  
  <xs:element name="acronym" type="acronym.type"/>

  <xs:attributeGroup name="cite.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="cite.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>

  <xs:complexType name="cite.type" mixed="true">
    <xs:group ref="cite.content"/>   
    <xs:attributeGroup ref="cite.attlist"/>
  </xs:complexType>
    
  <xs:element name="cite" type="dfn.type"/>
  
  <xs:attributeGroup name="code.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="code.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="code.type" mixed="true">
    <xs:group ref="code.content"/>   
    <xs:attributeGroup ref="code.attlist"/>
  </xs:complexType>
    
  <xs:element name="code" type="dfn.type"/>
    
  <xs:attributeGroup name="dfn.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="dfn.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="dfn.type" mixed="true">
    <xs:group ref="dfn.content"/>   
    <xs:attributeGroup ref="dfn.attlist"/>
  </xs:complexType>
    
  <xs:element name="dfn" type="dfn.type"/>

  <xs:attributeGroup name="em.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="em.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="em.type" mixed="true">
    <xs:group ref="em.content"/>   
    <xs:attributeGroup ref="em.attlist"/>
  </xs:complexType>
  
  <xs:element name="em" type="em.type"/>

    
  <xs:attributeGroup name="kbd.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="kbd.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="kbd.type" mixed="true">
    <xs:group ref="kbd.content"/>   
    <xs:attributeGroup ref="kbd.attlist"/>
  </xs:complexType>
    
  <xs:element name="kbd" type="kbd.type"/>

    
  <xs:attributeGroup name="samp.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="samp.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="samp.type" mixed="true">
    <xs:group ref="samp.content"/>   
    <xs:attributeGroup ref="samp.attlist"/>
  </xs:complexType>
    
  <xs:element name="samp" type="samp.type"/>
  
    
  <xs:attributeGroup name="strong.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="strong.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="strong.type" mixed="true">
    <xs:group ref="strong.content"/>   
    <xs:attributeGroup ref="strong.attlist"/>
  </xs:complexType>  

  <xs:element name="strong" type="strong.type"/>
  
  <xs:attributeGroup name="var.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="var.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="var.type" mixed="true">
    <xs:group ref="var.content"/>   
    <xs:attributeGroup ref="var.attlist"/>
  </xs:complexType>  

  <xs:element name="var" type="var.type"/>

  <xs:attributeGroup name="q.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="cite" type="URI"/>
  </xs:attributeGroup>
  
  <xs:group name="q.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>     
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="q.type" mixed="true">
    <xs:group ref="q.content"/>   
    <xs:attributeGroup ref="q.attlist"/>
  </xs:complexType>

  <xs:element name="q" type="q.type"/>

</xs:schema>

C.4.5. Inline Presentational

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Inline Presentation element module for XHTML
      $Id: xhtml-inlpres-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      Inline Presentational Elements
    
        * b, big, i, small, sub, sup, tt
    
      This module declares the elements and their attributes used to
      support inline-level presentational markup.
    </xs:documentation>
    <xs:documentation 
         source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
  </xs:annotation>

  <xs:attributeGroup name="InlPres.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>

  <xs:group name="InlPres.content">
    <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>  
    
  <xs:complexType name="InlPres.type" mixed="true">
    <xs:group ref="InlPres.content"/>
    <xs:attributeGroup ref="InlPres.attlist"/>
  </xs:complexType>
    
  <xs:element name="b" type="InlPres.type"/>

  <xs:element name="big" type="InlPres.type"/>

  <xs:element name="i" type="InlPres.type"/>

  <xs:element name="small" type="InlPres.type"/>

  <xs:element name="sub" type="InlPres.type"/>

  <xs:element name="sup" type="InlPres.type"/>

  <xs:element name="tt" type="InlPres.type"/>

</xs:schema>

C.4.6. Inline Structural

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      Inline Structural
      This is the XML Schema Inline Structural element module for XHTML

        * br, span
      
      This module declares the elements and their attributes 
      used to support inline-level structural markup.
      
      $Id: xhtml-inlstruct-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:attributeGroup name="br.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="br.content">
     <xs:sequence/>
  </xs:group>  

  <xs:complexType name="br.type">
    <xs:group ref="br.content"/>    
    <xs:attributeGroup ref="br.attlist"/>
  </xs:complexType>

  <xs:element name="br" type="br.type"/>

  <xs:attributeGroup name="span.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="span.content">
    <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>     
    </xs:sequence>
  </xs:group>

  <xs:complexType name="span.type" mixed="true">
    <xs:group ref="span.content"/>   
    <xs:attributeGroup ref="span.attlist"/>
  </xs:complexType>

  <xs:element name="span" type="span.type"/>

</xs:schema>

C.4.7. Param

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Param Element module for XHTML
      $Id: xhtml-param-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem 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="param.attlist">
    <xs:attributeGroup ref="id"/>
    <xs:attribute name="name" type="CDATA" use="required"/>
    <xs:attribute name="value" type="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="ContentType"/>
  </xs:attributeGroup>

  <xs:group name="param.content">
     <xs:sequence/>
  </xs:group>  
    
  <xs:complexType name="param.type" mixed="true">
     <xs:group ref="param.content"/>
     <xs:attributeGroup ref="param.attlist"/>
  </xs:complexType>

  <xs:element name="param" type="param.type"/>

</xs:schema>

C.4.8. Legacy - Miscellaneous

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.w3.org/1999/xhtml">

  <xs:annotation>
    <xs:documentation>
      This is the XML Schema Miscellaneous Legacy 
      Markup module for XHTML
      $Id: xhtml-misc-1.xsd,v 1.2 2003/09/20 01:41:37 speruvem Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>

  <xs:annotation>
    <xs:documentation>
      XHTML Miscellaneous Legacy Markup   
        font, basefont, center, s, strike, u,
        dir, menu, isindex
      
      This is to allow XHTML documents to be transformed for
      display on HTML browsers where CSS support is inconsistent
      or unavailable.
      
      The module also declares legacy attributes for elements
      in other module. Note: This module only declares the
      attribute list, and it upto the document type to
      redefine the model of affected modules.
    </xs:documentation>
    <xs:documentation 
         source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_legacymodule"/>
  </xs:annotation>

  <xs:attributeGroup name="font.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attributeGroup ref="I18n.attrib"/>
    <xs:attribute name="size" type="CDATA"/>
    <xs:attribute name="color" type="Color"/>
    <xs:attribute name="face" type="CDATA"/>
  </xs:attributeGroup>
  
  <xs:group name="font.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  

  <xs:complexType name="font.type" mixed="true">
     <xs:group ref="font.content"/>
     <xs:attributeGroup ref="font.attlist"/>
  </xs:complexType>

  <xs:element name="font" type="font.type"/>

  <xs:attributeGroup name="basefont.attlist">
    <xs:attributeGroup ref="id"/>
    <xs:attribute name="size" type="CDATA" use="required"/>
    <xs:attribute name="color" type="Color"/>
    <xs:attribute name="face" type="CDATA"/>
  </xs:attributeGroup>
  
  <xs:group name="basefont.content">
     <xs:sequence/>
  </xs:group>    

  <xs:complexType name="basefont.type">
    <xs:group ref="basefont.content"/>  
    <xs:attributeGroup ref="basefont.attlist"/>
  </xs:complexType>

  <xs:element name="basefont" type="basefont.type"/>

  <xs:attributeGroup name="center.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="center.content">
     <xs:sequence>
       <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  
  
  <xs:complexType name="center.type" mixed="true">
    <xs:group ref="center.content"/>
    <xs:attributeGroup ref="center.attlist"/>
  </xs:complexType>

  <xs:element name="center" type="center.type"/>

  <xs:attributeGroup name="s.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="s.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>  
  
  <xs:complexType name="s.type" mixed="true">
    <xs:group ref="s.content"/>
    <xs:attributeGroup ref="s.attlist"/>
  </xs:complexType>

  <xs:element name="s" type="s.type"/>

  <xs:attributeGroup name="strike.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="strike.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>    

  <xs:complexType name="strike.type" mixed="true">
    <xs:group ref="strike.content"/>
    <xs:attributeGroup ref="strike.attlist"/>
  </xs:complexType>

  <xs:element name="strike" type="strike.type"/>

  <xs:attributeGroup name="u.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
  </xs:attributeGroup>
  
  <xs:group name="u.content">
     <xs:sequence>
       <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
  </xs:group>      

  <xs:complexType name="u.type" mixed="true">
    <xs:group ref="u.content"/>
    <xs:attributeGroup ref="u.attlist"/>
  </xs:complexType>

  <xs:element name="u" type="u.type"/>

  <xs:attributeGroup name="dir.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="compact">
       <xs:simpleType>
         <xs:restriction base="xs:NMTOKEN">
           <xs:enumeration value="compact"/>
         </xs:restriction>
       </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  
  <xs:group name="dir.content">
    <xs:sequence>
      <xs:element ref="li" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>      

  <xs:complexType name="dir.type" mixed="true">
    <xs:group ref="dir.content"/>
    <xs:attributeGroup ref="dir.attlist"/>
  </xs:complexType>

  <xs:element name="dir" type="dir.type"/>

  <xs:attributeGroup name="menu.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute name="compact">
       <xs:simpleType>
         <xs:restriction base="xs:NMTOKEN">
           <xs:enumeration value="compact"/>
         </xs:restriction>
       </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
 
  <xs:group name="menu.content">
    <xs:sequence>
      <xs:element ref="li" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>  

  <xs:complexType name="menu.type" mixed="true">
    <xs:group ref="menu.content"/>
    <xs:attributeGroup ref="menu.attlist"/>
  </xs:complexType>

  <xs:element name="menu" type="menu.type"/>

  <xs:attributeGroup name="isindex.attlist">
    <xs:attributeGroup ref="Core.attrib"/>
    <xs:attributeGroup ref="I18n.attrib"/>
    <xs:attribute name="prompt" type="Text"/>
  </xs:attributeGroup>
  
  <xs:group name="isindex.content">
    <xs:sequence/>
  </xs:group>  
 
  <xs:complexType name="isindex.type">
    <xs:group ref="isindex.content"/>
    <xs:attributeGroup ref="isindex.attlist"/>
  </xs:complexType>

  <xs:element name="isindex" type="isindex.type"/>

  <xs:annotation>
    <xs:documentation>
      Attribute redefinitions
    </xs:documentation>
  </xs:annotation>

  <xs:attributeGroup name="align.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="left"/>
          <xs:enumeration value="center"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="justify"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <!-- add 'target' attribute to 'a' element -->
  <xs:attributeGroup name="a.legacy.attlist">
    <xs:attribute name="target" type="FrameTarget"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="applet.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="hspace" type="Pixels"/>
    <xs:attribute name="vspace" type="Pixels"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="body.legacy.attlist">
    <xs:attribute name="background" type="URI"/>
    <xs:attribute name="bgcolor" type="Color"/>
    <xs:attribute name="text" type="Color"/>
    <xs:attribute name="link" type="Color"/>
    <xs:attribute name="vlinke" type="Color"/>
    <xs:attribute name="alink" type="Color"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="br.legacy.attlist">
    <xs:attribute name="clear" default="none">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="left"/>
          <xs:enumeration value="all"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="none"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="caption.legacy.attlist">
    <xs:attributeGroup ref="align.legacy.attlist"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="hr.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="left"/>
          <xs:enumeration value="center"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="noshade">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="noshade"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>    
    <xs:attribute name="size" type="Pixels"/>
    <xs:attribute name="width" type="Length"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="img.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="border" type="Pixels"/>
    <xs:attribute name="hspace" type="Pixels"/>
    <xs:attribute name="vspace" type="Pixels"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="input.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="legend.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="top"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="li.legacy.attlist">
    <xs:attribute name="type" type="CDATA"/>
    <xs:attribute name="value" type="Number"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="object.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="top"/>
          <xs:enumeration value="middle"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="border" type="Pixels"/>
    <xs:attribute name="hspace" type="Pixels"/>
    <xs:attribute name="vspace" type="Pixels"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="ol.legacy.attlist">
    <xs:attribute name="type" type="Text"/>
    <xs:attribute name="compact">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="compact"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>    
    <xs:attribute name="start" type="Number"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="dl.legacy.attlist">
      <xs:attribute name="compact">
        <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
              <xs:enumeration value="compact"/>
           </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
  </xs:attributeGroup>
  

  <xs:attributeGroup name="div.legacy.attlist">
    <xs:attributeGroup ref="align.legacy.attlist"/>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="heading.legacy.attlist">
    <xs:attributeGroup ref="align.legacy.attlist"/>
  </xs:attributeGroup>  
  
  <xs:attributeGroup name="p.legacy.attlist">
    <xs:attributeGroup ref="align.legacy.attlist"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="pre.legacy.attlist">
    <xs:attribute name="width" type="Length"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="script.legacy.attlist">
    <xs:attribute name="language" type="ContentType"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="table.legacy.attlist">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="left"/>
          <xs:enumeration value="center"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>     
    <xs:attribute name="bgcolor" type="Color"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="tr.legacy.attlist">
    <xs:attribute name="bgcolor" type="Color"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="th.legacy.attlist">
    <xs:attribute name="nowrap">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="nowrap"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>     
    <xs:attribute name="bgcolor" type="Color"/>
    <xs:attribute name="width" type="Length"/>
    <xs:attribute name="height" type="Length"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="td.legacy.attlist">
    <xs:attribute name="nowrap">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="nowrap"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>     
    <xs:attribute name="bgcolor" type="Color"/>
    <xs:attribute name="width" type="Length"/>
    <xs:attribute name="height" type="Length"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="ul.legacy.attlist">
    <xs:attribute name="type" type="CDATA"/>
    <xs:attribute name="compact">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="compact"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>         
  </xs:attributeGroup>

</xs:schema>