D. XHTML Schema Module Implementations

Contents

This appendix is normative.

This appendix contains implementations of the modules defined in XHTML Abstract Modules via XML Schema [XMLSCHEMA] when the XML Schema becomes a W3C approved recommendation.

D.1. XHTML Abstract Modules and XML Schema

The DTD modularization framework specification speaks at length on the subject of abstract modules. In brief, an "abstract" module is simply a set of objects, in this case objects within an ordered hierarchy of content objects, which encapsulates all of the features of the objects and assembles them into a coherent set. This set of objects and their properties is independent of its machine representation, and so is the same whether written in DTD module form, as a Schema module, or as a Java class.

The abstract modules described in XHTML-MOD are composed in a functional manner, and each "abstract module" contains data structures that are generally functionally similar. (There is no requirement that modules be created along functional lines; any other method that suits the author's purpose may be used instead.)

The framework described here makes use of the same abstract modules as in XHTML-MOD with few exceptions. In the case of the schema module representation, the relationship between the "abstract" modules and the schema modules is quite close. In each case there is a one-to-one relationship between the abstract and concrete modules (with one exception for the changes to the legacy module) and they share essentially the same names and data structures.

D.2. XHTML Schema Modules

D.2.1. XHTML Hub Document

This is the base schema document that includes all the other modules to create the complete schema.

The hub document included here intends to approximate XHTML 1.1 subject to the requirements given in Requirements. This schema should be fully equivalent to the DTD version except for schema-specific additions and changes. Any document instance considered valid using the XHTML 1.1 DTD must also be valid according to this schema.

<?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" elementFormDefault="unqualified" version="1.1" blockDefault="#all" finalDefault="#all" attributeFormDefault="unqualified">
    <!--

-->
    <xs:annotation>
        <xs:documentation>

             This is the XML Schema driver for XHTML 1.1.
             Please use this formal public identifier to identify it:
            
             "-//W3C//SCHEMA XHTML 1.1//EN"
            
             and this namespace for XHTML elements:
            
             "http://www.w3.org/1999/xhtml"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
    </xs:annotation>
    <!--

-->
    <xs:annotation>
        <xs:documentation>
           This is XHTML, a reformulation of HTML as a modular XML application
           The Extensible HyperText Markup Language (XHTML)
           Copyright 1998-2001 World Wide Web Consortium
           (Massachusetts Institute of Technology, Institut National de
           Recherche en Informatique et en Automatique, Keio University).
           All Rights Reserved.
        
           Permission to use, copy, modify and distribute the XHTML Schema
           modules and their accompanying xs:documentation for any purpose
           and without fee is hereby granted in perpetuity, provided that the above
           copyright notice and this paragraph appear in all copies.  
          The copyright holders make no representation about the suitability of
           these XML Schema modules for any purpose.
        
           They are provided "as is" without expressed or implied warranty.
        </xs:documentation>
    </xs:annotation>
    <!--

-->
    <xs:annotation>
        <xs:documentation>
             This schema includes two modules, one
            for the XHTML required elements and attributes, 
            and one for the optional elements and attributes.
            In order to modify this schema, you can modify the files
            containing the optional modules. It is not necessary to 
            modify this file. All of the required modules must be 
            included without change for conformance.
        </xs:documentation>
    </xs:annotation>
    <!--

-->
    <xs:include schemaLocation="xhtml-required-1.xsd">
        <xs:annotation>
            <xs:documentation>
                 These modules are required to be included unchanged for 
                XHTML conformance.
                
                 Framework modules:
                        +  notations
                        +  datatypes
                        +  xlink
                        +  events
                        +  common attributes
                        +  common content models
                        +  character entities
                
                 Core required elements modules:
                        +  text
                        +  hypertext
                        +  lists
                        +  ruby
                        +  structural
                
            </xs:documentation>
        </xs:annotation>
    </xs:include>
    <!--

-->
    <xs:include schemaLocation="xhtml-optional-1.xsd">
        <xs:annotation>
            <xs:documentation>
                 Optional Element modules:
                
                        +  Edit
                        +  Bdo
                        +  Presentational
                        +  Link
                        +  Meta
                        +  Base
                        +  Scripting
                        +  Style
                        +  Image
                        +  Client-side image maps
                        +  Server-side image maps
                        +  Param
                        +  Applet
                        +  Object
                        +  Tables
                        +  Forms
                        +  Nameident
                        +  Legacy (includes frames)
                        +  Basic forms
                        +  Basic tables
                
            </xs:documentation>
        </xs:annotation>
    </xs:include>
    <!--

-->
</xs:schema>

D.3. XHTML SCHEMA Modular Framework

In order to take advantage of the XHTML Schema Modules, Schema authors need to define the content model for their language. XHTML provides a variety of tools to ease this effort. They are defined in a set of support modules, instantiated by a main Framework module:

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
elementFormDefault="unqualified" 
version="1.1"
blockDefault="#all" 
finalDefault="#all" 
attributeFormDefault="unqualified">
<!--

-->
  <xs:annotation>
    <xs:documentation>
        This is the XML Schema Framework module for XHTML
        Please use this formal public identifier to identify it:
        
         "-//W3C//XHTML Modular Framework 1.0//EN"
    
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
      <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>
<!--

-->
  <xs:annotation>
    <xs:documentation> 
         Modular Framework
        
        This required module instantiates the modules needed
        to support the XHTML modularization model, including:
        
        +  notations
        +  datatypes
        +  common attributes
        +  common content models
        +  character entities
    </xs:documentation>
  </xs:annotation>
<!-- 

-->
  <xs:include schemaLocation="framework/xhtml-notations-1.xsd">
    <xs:annotation>
            <xs:documentation>
            Notations module
            Contains XHTML notations for data types 
    </xs:documentation>
  </xs:annotation>
  </xs:include>
<!--

-->
<xs:include schemaLocation="framework/xhtml-datatypes-1.xsd">
  <xs:annotation>
    <xs:documentation>
        Datatypes module
    </xs:documentation>
  </xs:annotation>
  </xs:include>
<!--

-->
<xs:include schemaLocation="framework/xhtml-attribs-1.xsd">
  <xs:annotation>
        <xs:documentation>
        Common attributes module
        </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="framework/xhtml11-model-1.xsd">
    <xs:annotation>
            <xs:documentation>
            Common content models module
        </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <!-- Entities are broken in XML Schema -->
  <xs:include schemaLocation="framework/xhtml-charent-1.xsd">
    <xs:annotation>
            <xs:documentation>
            Character entities module

            Notation declarations for Latin 1, 
            Special, and Symbol character entity sets
        </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
</xs:schema>

Note that the module above references a content model module. This module is defined on a per-document type basis in addition to the document type driver file. The Modular framework also relies upon the following component modules:

D.3.1. XHTML Notations

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
  <xs:annotation>
    <xs:documentation>
        This is the XML Schema module for data type notations for XHTML
        Please use this formal public identifier to identify it:
        "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
        
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
    Notations module
    
    Defines the following notations, many of these imported from 
    other specifications and standards. When an existing FPI is
    known, it is incorporated here.
  </xs:documentation>
  </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 from [ISO10646] -->
  <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>

D.3.2. XHTML Datatypes

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" elementFormDefault="unqualified" version="1.1" blockDefault="#all" finalDefault="#all" attributeFormDefault="unqualified">
  <!--

-->
  <xs:annotation>
    <xs:documentation>
    This is the XML Schema datatypes module for XHTML
    Please use this formal public identifier to identify it:
              "-//W3C//XHTML Datatypes 1.0//EN"
    
    @author: Daniel Austin austin.d@ic.grainger.com
    $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
  </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>
  <!--

-->
  <xs:annotation>
    <xs:documentation>
     Datatypes
     defines containers for the following datatypes, many of
     these imported from other specifications and standards.
  </xs:documentation>
  </xs:annotation>
  <!--

-->
  <!-- nn for pixels or nn% for percentage length -->
  <xs:simpleType name="Length">
    <xs:restriction base="xs:string"/>
  </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:restriction base="xs:string"/>
  </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>
  <!--

-->
  <!-- !!! RGB color expression - this needs a better definition -->
  <xs:simpleType name="Color">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!--

-->
  <!-- textual content -->
  <xs:simpleType name="Text">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!--

-->
  <!-- Imported Datatypes  -->
  <!-- a single character from [ISO10646] -->
  <xs:simpleType name="Character">
    <xs:restriction base="xs:string"/>
  </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="xs:string"/>
  </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:normalizedString"/>
  </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:NMTOKEN"/>
  </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:string"/>
  </xs:simpleType>
  <!--

-->
  <!-- comma-separated list of MultiLength -->
  <xs:simpleType name="MultiLengths">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
</xs:schema>

D.3.3. XHTML Common Attribute Definitions

<?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" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <xs:annotation>
        <xs:documentation>

         This is the XML Schema common attributes module for XHTML
          Please use this formal public identifier to identify it:
                  "-//W3C//XHTML Common Attributes 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <!--
    This import brings in the XML language attributes xml:lang and xml:space. 
-->
    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml-attribs-1.xsd"/>
    
    <xs:annotation>
        <xs:documentation>

  Common Attributes
    This module declares many of the common attributes 
     for the XHTML Schema
    </xs:documentation>
    </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.extra.attrib">
        <!-- add your attribute here -->
        <!-- xs:anyAttribute namespace="##other"/ -->
    </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="BIDI"/>
    <!--

-->
    <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 name="I18n.attrib">
        <xs:attributeGroup ref="BIDI"/>
        <xs:attribute ref="xml:lang"/>
    </xs:attributeGroup>
    <!--

-->
    <!-- intrinsic event attributes declared previously -->
    <xs:attributeGroup name="Common.extra">
        <!-- add your attributes here -->
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="Common.attrib">
        <xs:attributeGroup ref="Core.attrib"/>
        <xs:attributeGroup ref="I18n.attrib"/>
        <!-- !!! xs:attributeGroup ref="Events.attrib"/ -->
        <xs:attributeGroup ref="Common.extra"/>
    </xs:attributeGroup>
    <!--

-->
</xs:schema>

D.3.4. XHTML Character Entities

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Character Entities module for XHTML
        Please use this formal public identifier to identify it:
                   "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
        Character Entities for XHTML
    
         This module declares the set of character entities for XHTML,
         including the Latin 1, Symbol and Special character collections.
    </xs:documentation>
</xs:annotation>
    
<!-- These are the entity sets for ISO Latin 1 characters for the XHTML -->
    <xs:notation name="XHTMLLatin1" 
                      id="xhtml-lat1" 
                      public="-//W3C//ENTITIES Latin 1 for XHTML//EN" 
                      system="http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"/>
<!-- These are the entity sets for special characters for the XHTML -->
    <xs:notation name="XHTMLSpecial" 
                      id="xhtml-special" 
                      public="-//W3C//ENTITIES Special for XHTML//EN" 
                      system="http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"/>
<!-- These are the entity sets for symbol characters for the XHTML -->
    <xs:notation name="XHTMLSymbol" 
                      id="xhtml-symbol" 
                      public="-//W3C//ENTITIES Symbols for XHTML//EN" 
                      system="http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"/>

</xs:schema>

D.4. XHTML Module Implementations

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

D.4.1. XHTML Core Modules

D.4.1.1. Structure

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
    <xs:documentation>
        This is the XML Schema Document Structure module for XHTML
        Please use this formal public identifier to identify it:
        
        "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
  <xs:annotation>
    <xs:documentation>
        Document Structure
        
        * title, head, body, html
        
        The Structure Module defines the major structural elements and 
        their attributes.
         
        Note that the content model of the head element type is redeclared 
        when the Base Module is included in the DTD.
    </xs:documentation>
  </xs:annotation>
<!--

-->
  <xs:attributeGroup name="title.attlist">
    <xs:attributeGroup ref="I18n.attrib"/>
    </xs:attributeGroup>
<!--

-->
  <xs:complexType name="title.type" mixed="true">
    <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"/>
      <xs:element ref="title" minOccurs="1"/>
      <xs:group ref="HeadOpts.mix"/>
    </xs:sequence>
  </xs:group>
<!--

-->
  <xs:attributeGroup name="head.attlist">
    <xs:attribute name="profile" type="URI"/>
    <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:complexType name="body.type" mixed="true">
    <xs:group ref="Block.mix" minOccurs="1"/>
    <xs:attributeGroup ref="body.attlist"/>
  </xs:complexType>
<!--

-->
  <xs:element name="body" type="body.type"/>
<!--

-->
  <xs:attributeGroup name="html.attlist">
    <xs:attribute name="version" type="FPI" fixed="XHTML1.1"/>
    <xs:attributeGroup ref="I18n.attrib"/>
  </xs:attributeGroup>
<!--

-->
  <xs:complexType name="html.type">
    <xs:sequence>
      <xs:element ref="head"/>
      <xs:element ref="body"/>
    </xs:sequence>
    <xs:attributeGroup ref="html.attlist"/>
  </xs:complexType>
<!--

-->
  <xs:element name="html" type="html.type"/>
<!--

-->
</xs:schema>

D.4.1.2. Text

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
             This is the XML Schema Text  module for XHTML
             This is a REQUIRED module.
              Please use this formal public identifier to identify it:
              "-//W3C//ELEMENTS XHTML Text 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
            Textual Content
            
                The Text module includes declarations for all core 
                text container elements and their attributes.
        
                +  block phrasal
                +  block structural
                +  inline phrasal
                +  inline structural
        </xs:documentation>
</xs:annotation>
<!--

-->
<xs:include schemaLocation="text/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="text/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="text/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="text/xhtml-inlstruct-1.xsd">
    <xs:annotation>
        <xs:documentation>
            Inline Structural module 
            Elements defined here:
               * br,span
        </xs:documentation>
    </xs:annotation>
</xs:include>
<!--

-->
</xs:schema>

D.4.1.3. Hypertext

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Hypertext module for XHTML
            This is a REQUIRED module.
            Please use this formal public identifier to identify it:
            "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
            Hypertext
                        
            * 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.
          </xs:documentation>
    </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:complexType name="a.type" mixed="true">
        <xs:group ref="InlNoAnchor.mix"/>
        <xs:attributeGroup ref="a.attlist"/>
    </xs:complexType>
<!--

-->
    <xs:element name="a" type="a.type"/>
<!--

-->
</xs:schema>

D.4.1.4. Lists

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Lists module for XHTML
        Please use this formal public identifier to identify it:
           
           "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
           
        @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
        Lists
    
        * dl, dt, dd, ol, ul, li
    
         This module declares the list-oriented element types
         and their attributes.
    </xs:documentation>
</xs:annotation>
<!--

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

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="dt.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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:complexType name="dd.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <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:element ref="dt"/>
            <xs:element ref="dd"/>
        </xs:sequence>
    </xs:group>
<!--

-->
    <xs:complexType name="dl.type" mixed="true">
        <xs:group ref="dl.content" minOccurs="1" maxOccurs="unbounded"/>
        <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:complexType name="li.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <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:complexType name="ol.type">
        <xs:sequence>
            <xs:element ref="li" minOccurs="1"/>
        </xs:sequence>
        <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:complexType name="ul.type">
        <xs:sequence>
            <xs:element ref="li" minOccurs="1"/>
        </xs:sequence>
        <xs:attributeGroup ref="ul.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.2. Text Modules

D.4.2.1. Presentation

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified" 
blockDefault="#all" finalDefault="#all" 
version="1.1" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
    <xs:documentation>
        This is the XML Schema Presentation module for XHTML
        This is a REQUIRED module.
        Please use this formal public identifier to identify it:
        
        "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
<!--

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

-->
  <xs:include schemaLocation="pres/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>

D.4.2.2. Edit

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
elementFormDefault="unqualified" 
version="1.1"
blockDefault="#all" 
finalDefault="#all" 
attributeFormDefault="unqualified">
<!--

-->
    <xs:annotation>
        <xs:documentation>

         This is the XML Schema Editing Markup module for XHTML
          Please use this formal public identifier to identify it:
                  "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
            <xs:documentation source="xhtml-copyright-1.xsd" />
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
        Editing Elements
    
            ins, del
    
         This module declares element types and attributes used to indicate
         inserted and deleted content while editing a document.
        </xs:documentation>
    </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:choice>
            <xs:group ref="Flow.mix"/>
        </xs:choice>
    </xs:group>
<!--

-->
    <xs:complexType name="edit.type" mixed="true">
        <xs:group ref="edit.content" minOccurs="0" maxOccurs="unbounded"/>
        <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>

D.4.2.3. Bi-directional Text

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>

         This is the XML Schema BDO Element module for XHTML
          Please use this formal public identifier to identify it:
                   "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
             Bidirectional Override (bdo) Element
            
             This modules declares the element 'bdo', used to override the
              Unicode bidirectional algorithm for selected fragments of text.
              Bidirectional text support includes both the bdo 
                  element and the 'dir' attribute.
        </xs:documentation>
    </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:complexType name="bdo.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <xs:attributeGroup ref="bdo.attlist"/>
    </xs:complexType>
<!--

-->
    <xs:element name="bdo" type="bdo.type"/>
</xs:schema>

D.4.3. Forms

D.4.3.1. Basic Forms

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<xs:annotation>
     <xs:documentation>
         This is the XML Schema Basic Forms module for XHTML
         Please use this formal public identifier to identify it:
         "-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"
         
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
<!-- 
BlkNoForm.mix includes all non-form block elements,
plus Misc.class
-->
    <xs:group name="BlkNoForm.mix">
        <xs:choice>
            <xs:group ref="Heading.class"/>
            <xs:group ref="List.class"/>
            <xs:group ref="BlkStruct.class"/>
            <xs:group ref="BlkPhras.class"/>
            <xs:group ref="BlkPres.class"/>
            <xs:group ref="Table.class"/>
            <xs:group ref="Block.extra"/>
            <xs:group ref="Misc.class"/>
        </xs:choice>
    </xs:group>
<!-- 

-->
    <xs:attributeGroup name="form.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="action" type="URI"/>
        <xs:attribute name="method" use="optional" default="get">
            <xs:simpleType>
                <xs:restriction base="NMTOKEN">
                    <xs:enumeration value="get"/>
                    <xs:enumeration value="post"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enctype" type="ContentType" use="fixed" value="application/x-www-form-urlencoded"/>

    </xs:attributeGroup>
<!-- 

-->
    <xs:complexType name="form.type">
        <xs:group ref="BlkNoForm.mix" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="form.attlist"/>
    </xs:complexType>
<!-- 

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

-->
    <xs:group name="label.content">
        <xs:choice>
            <xs:element ref="input"/>
            <xs:element ref="select"/>
            <xs:element ref="textarea"/>
            <xs:group ref="InlStruct.class.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:group>
<!-- 

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

-->
    <xs:complexType name="label.type" mixed="true">
        <xs:group ref="label.content" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="label.attlist"/>
    </xs:complexType>
<!-- 

-->
    <xs:element name="label" type="label.type"/>
<!-- 
Basic Forms removes 'image' and 'file' input types.
-->
    <xs:attribute name="type" use="optional" default="text">
        <xs:simpleType>
            <xs:restriction base="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:attribute>
<!-- 

-->
    <xs:attributeGroup name="input.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute ref="type"/>
        <xs:attribute name="name" type="Text"/>
        <xs:attribute name="value" type="Text"/>
        <xs:attribute name="checked" type="Text"/>
        <xs:attribute name="size" type="Number"/>
        <xs:attribute name="maxlength" type="Number"/>
        <xs:attribute name="src" type="URI"/>
        <xs:attribute name="accesskey" type="Character"/>

    </xs:attributeGroup>
<!-- 

-->
    <xs:complexType name="input.type">
        <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="Text"/>
        <xs:attribute name="size" type="Number"/>
        <xs:attribute name="multiple" type="Text"/>

    </xs:attributeGroup>
<!-- 

-->
    <xs:complexType name="select.type">
        <xs:sequence>
            <xs:element ref="option" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
        <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" type="Text"/>
        <xs:attribute name="value" type="Text"/>

    </xs:attributeGroup>
<!-- 

-->
    <xs:complexType name="option.type" mixed="true">
        <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="Text"/>
        <xs:attribute name="rows" type="Number"/>
        <xs:attribute name="cols" type="Number"/>
        <xs:attribute name="accesskey" type="Character"/>

    </xs:attributeGroup>
<!-- 

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

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

-->
</xs:schema>

D.4.3.2. Forms

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>

         This is the XML Schema Forms module for XHTML
          Please use this formal public identifier to identify it:
          "-//W3C//ELEMENTS XHTML Forms 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
        Forms
    
           * 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.
        </xs:documentation>
    </xs:annotation>
<!--

-->
    <xs:group name="Table.class">
        <xs:choice>
            <xs:element ref="table"/>
        </xs:choice>
    </xs:group>
<!-- 
        BlkNoForm.mix includes all non-form block elements,
        plus Misc.class
-->
    <xs:group name="BlkNoForm.mix">
        <xs:choice>
            <xs:group ref="Heading.class"/>
            <xs:group ref="List.class"/>
            <xs:group ref="BlkStruct.class"/>
            <xs:group ref="BlkPhras.class"/>
            <xs:group ref="BlkPres.class"/>
            <xs:group ref="Table.class"/>
            <xs:group ref="Block.extra"/>
            <xs:group ref="Misc.class"/>
        </xs:choice>
    </xs:group>
<!--

-->
<!-- form: Form Element -->
    <xs:attributeGroup name="form.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="action" type="URI"/>
        <xs:attribute name="method" use="required" 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" fixed="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:choice>
            <xs:group ref="BlkNoForm.mix"  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="fieldset"/>
        </xs:choice>
    </xs:group>
<!--

-->
    <xs:complexType name="form.type">
        <xs:group ref="form.content" minOccurs="1" maxOccurs="unbounded"/>
        <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:choice>
            <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: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" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="label.attlist"/>
    </xs:complexType>
<!--

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

-->
<!-- input: Form Control -->
    <xs:attribute name="type" use="optional" default="text">
        <xs:simpleType>
            <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:restriction>
        </xs:simpleType>
    </xs:attribute>
<!-- 
        attribute 'name' required for all but submit & reset
-->
    <xs:attributeGroup name="input.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute ref="type"/>
        <xs:attribute name="name" type="Text"/>
        <xs:attribute name="value" type="Text"/>
        <xs:attribute name="checked" type="Text"/>
        <xs:attribute name="disabled" type="Text"/>
        <xs:attribute name="readonly" type="Text"/>
        <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:complexType name="input.type">
        <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="Text"/>
        <xs:attribute name="size" type="Number"/>
        <xs:attribute name="multiple" type="Text"/>
        <xs:attribute name="disabled" type="Text"/>

    </xs:attributeGroup>
<!--

-->
    <xs:group name="select.content">
        <xs:choice>
            <xs:element ref="optgroup"/>
            <xs:element ref="option"/>
        </xs:choice>
    </xs:group>
<!--

-->
    <xs:complexType name="select.type">
        <xs:group ref="select.content" minOccurs="1" maxOccurs="unbounded"/>
        <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" type="Text"/>
        <xs:attribute name="label" type="Text"/>

    </xs:attributeGroup>
<!--

-->
    <xs:group name="optgroup.content">
        <xs:choice>
            <xs:element ref="option"/>
        </xs:choice>
    </xs:group>
<!--

-->
    <xs:complexType name="optgroup.type">
        <xs:group ref="optgroup.content" minOccurs="1" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="select.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" type="Text"/>
        <xs:attribute name="disabled" type="Text"/>
        <xs:attribute name="label" type="Text"/>
        <xs:attribute name="value" type="Text"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="option.type" mixed="true">
        <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="Text"/>
        <xs:attribute name="rows" type="Number"/>
        <xs:attribute name="cols" type="Number"/>
        <xs:attribute name="disabled" type="Text"/>
        <xs:attribute name="readonly" type="Text"/>
        <xs:attribute name="tabindex" type="Number"/>
        <xs:attribute name="accesskey" type="Character"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="textarea.type" mixed="true">
        <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:complexType name="fieldset.type" mixed="true">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="legend"/>
            <xs:group ref="Flow.mix"/>
        </xs:choice>
        <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:complexType name="legend.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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="Text"/>
        <xs:attribute name="value" type="Text"/>
        <xs:attribute name="type" type="Number"/>
        <xs:attribute name="type" use="optional" 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" type="Text"/>
        <xs:attribute name="tabindex" type="Number"/>
        <xs:attribute name="accesskey" type="Character"/>

    </xs:attributeGroup>
<!--

-->
    <xs:group name="button.content">
        <xs:choice>
            <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:group>
<!--

-->
    <xs:complexType name="button.type" mixed="true">
        <xs:group ref="button.content" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="button.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.4. Tables

D.4.4.1. Basic Tables

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Basic Tables module for XHTML
        Please use this formal public identifier to identify it:
        "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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: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="align">
            <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="align">
            <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" minOccurs="1" 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:attribute name="summary" type="Text"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="caption.type" mixed="true" >
        <xs:group ref="Inline.mix"/>
        <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:choice maxOccurs="unbounded">
            <xs:element ref="th"/>
            <xs:element ref="td"/>
        </xs:choice>
    </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="Text"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attributeGroup ref="scope.attrib"/>
        <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
        <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="th.type" mixed="true">
        <xs:group ref="FlowNoTable.mix"/>
        <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="Text"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attributeGroup ref="scope.attrib"/>
        <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
        <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="td.type" mixed="true">
        <xs:group ref="FlowNoTable.mix"/>
        <xs:attributeGroup ref="td.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.4.2. Tables

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Tables module for XHTML
            Please use this formal public identifier to identify it:
            
            "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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: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="Text"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attributeGroup ref="scope.attrib"/>
        <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
        <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="td.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <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="Text"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attributeGroup ref="scope.attrib"/>
        <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
        <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="th.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <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:choice maxOccurs="unbounded">
            <xs:element ref="th"/>
            <xs:element ref="td"/>
        </xs:choice>
    </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" use="optional" default="1"/>
        <xs:attribute name="width" type="MultiLength"/>
        <xs:attributeGroup ref="CellHAlign.attrib"/>
        <xs:attributeGroup ref="CellVAlign.attrib"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="col.type">
        <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" use="optional" 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 maxOccurs="unbounded">
            <xs:element ref="tr"/>
        </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 maxOccurs="unbounded">
            <xs:element ref="tr"/>
        </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 maxOccurs="unbounded">
            <xs:element ref="tr"/>
        </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 maxOccurs="unbounded">
            <xs:element ref="tr"/>
        </xs:sequence>
    </xs:group>
<!--

-->
    <xs:complexType name="caption.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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" mixed="true">
        <xs:group ref="table.content"/>
        <xs:attributeGroup ref="table.attlist"/>
    </xs:complexType>
<!--

-->
    <xs:element name="table" type="table.type"/>
<!--

-->
</xs:schema>

D.4.5. Image

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Images module for XHTML
            Please use this formal public identifier to identify it:
            
            "-//W3C//ELEMENTS XHTML Images 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
        Images
        
        * img
        
        This module provides markup to support basic image embedding.
    </xs:documentation>
</xs:annotation>

<!-- 
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.
-->
    <xs:attributeGroup name="image.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:complexType name="image.type">
        <xs:attributeGroup ref="image.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.6. Client-side Image Map

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
http://www.w3.org/2001/XMLSchema.xsd">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
         This is the XML Schema Client-side Image Maps module for XHTML
          Please use this formal public identifier to identify it:
                  "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <!--

-->
    <xs:annotation>
        <xs:documentation>
        Client-side Image Maps
    
            area, map
    
         This module declares elements and attributes to support client-side
         image maps. This requires that the Image Module (or a module
         declaring the img element type) be included in the DTD.
    
         These can be placed in the same document or grouped in a
         separate document, although the latter isn't widely supported
        </xs:documentation>
    </xs:annotation>
    <!--

-->
    <xs:redefine schemaLocation="../req/core/xhtml-hypertext-1.xsd">
        <xs:attributeGroup name="a.attlist">
                <xs:attributeGroup ref="a.attlist" />
                <xs:attributeGroup ref="a.csim.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="xhtml-image-1.xsd">
        <xs:attributeGroup name="img.attlist">
                <xs:attributeGroup ref="img.attlist" />
                <xs:attributeGroup ref="img.csim.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="xhtml-form-1.xsd">
        <xs:attributeGroup name="input.attlist">
                <xs:attributeGroup ref="input.attlist" />
                <xs:attributeGroup ref="input.csim.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="xhtml-object-1.xsd">
        <xs:attributeGroup name="object.attlist">
            <xs:attributeGroup ref="object.attlist" />
                <xs:attributeGroup ref="object.csim.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <!-- modify anchor attribute definition list -->
    <xs:attributeGroup name="a.csim.attlist">
        <xs:attribute name="shape" type="Text" use="required" default="rect"/>
        <xs:attribute name="coords" type="Text"/>
    </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>
    <!--

-->
    <!-- area -->
    <xs:attribute name="shape" use="required" default="rect">
        <xs:simpleType>
            <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:attribute>
    <!--

-->
    <xs:attributeGroup name="area.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="href" type="URI"/>
        <xs:attribute ref="shape"/>
        <xs:attribute name="coords" type="Text"/>
        <xs:attribute name="nohref" type="Text"/>
        <xs:attribute name="alt" type="Text"/>
        <xs:attribute name="tabindex" type="Number"/>
        <xs:attribute name="accesskey" type="Character"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:complexType name="area.type">
        <xs:attributeGroup ref="area.attlist"/>
    </xs:complexType>
    <!--

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

-->
    <!-- map -->
    
    <xs:include schemaLocation="xhtml-events-1.xsd" />
    
    <xs:attributeGroup name="map.attlist">
        <xs:attributeGroup ref="id"/>
        <xs:attributeGroup ref="class"/>
        <xs:attributeGroup ref="title"/>
        <xs:attributeGroup ref="Core.extra.attrib"/>
        <xs:attributeGroup ref="I18n.attrib"/>
        <xs:attributeGroup ref="Events.attrib"/>
    </xs:attributeGroup>
    <!--

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

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

-->
</xs:schema>

D.4.7. Server-side Image Map

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
             This is the XML Schema Server-side Image Maps module for XHTML
              Please use this formal public identifier to identify it:
                  "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <!--
 Redefines only
-->
    <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:annotation>
    <!--

-->
    <xs:redefine schemaLocation="xhtml-image-1.xsd">
        <xs:attributeGroup name="img.attlist">
            <xs:attributeGroup ref="img.attlist" />
                <xs:attributeGroup ref="img.ssimap.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:attributeGroup name="img.ssimap.attlist">
        <xs:attribute name="ismap"/>
    </xs:attributeGroup>
    <!--

-->
</xs:schema>

D.4.8. Applet

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified" 
blockDefault="#all" 
finalDefault="#all" 
version="1.1" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>

            This is the XML Schema module for Java Applets in XHTML
            Please use this formal public identifier to identify it:
                 "-//W3C//ELEMENTS XHTML Java Applets 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->

<xs:annotation>
    <xs:documentation>
    
        Java Applets
    
            * applet
    
         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 requires instantiation of the 
         Param Element Module.
    </xs:documentation>
</xs:annotation>
<!--

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

-->
    <xs:group name="applet.content">
        <xs:choice>
            <xs:element ref="param"/>
            <xs:group ref="Flow.mix"/>
        </xs:choice>
    </xs:group>
<!--

-->
    <xs:complexType name="applet.type">
        <xs:group ref="applet.content" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="applet.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.9. Object

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified" 
blockDefault="#all" finalDefault="#all" 
version="1.1" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Embedded Object module for XHTML
            Please use this formal public identifier to identify it:
             "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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
            
        </xs:documentation>
    </xs:annotation>
<!--

-->
    <xs:attributeGroup name="object.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="declare" type="Text"/>
        <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="Text"/>
        <xs:attribute name="tabindex" type="Number"/>

    </xs:attributeGroup>
<!--

-->
    <xs:group name="object.content">
        <xs:choice>
            <xs:group ref="Flow.mix"/>
            <xs:element ref="param"/>
        </xs:choice>
    </xs:group>
<!--

-->
    <xs:complexType name="object.type" mixed="true">
        <xs:group ref="object.content" minOccurs="0" maxOccurs="unbounded"/>
        <xs:attributeGroup ref="object.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.10. Frames

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" elementFormDefault="unqualified" version="1.1" blockDefault="#all" finalDefault="#all" attributeFormDefault="unqualified">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
    This is the XML Schema Frames module for XHTML
    Please use this formal public identifier to identify it:
    
     "-//W3C//ELEMENTS XHTML Frames 1.0//EN"
    
    @author: Daniel Austin austin.d@ic.grainger.com
    $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
    <!-- 
The content model for XHTML documents depends on whether 
the <head> is followed by a <frameset> or <body> element. 
-->
    <xs:redefine schemaLocation="../../req/core/xhtml-struct-1.xsd">
        <xs:group name="html.content">
            <xs:choice minOccurs="1" maxOccurs="unbounded">
                <xs:element ref="head" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="frameset"/>
            </xs:choice>
        </xs:group>
    </xs:redefine>
    <!--

-->
    <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" use="optional" 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" type="Text"/>
        <xs:attribute name="scrolling" use="optional" 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:complexType name="frame.type">
        <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" minOccurs="0" maxOccurs="1"/>
        </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>

D.4.11. Target

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Target module for XHTML
            Please use this formal public identifier to identify it:
            "-//W3C//ELEMENTS XHTML Target 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
    <!--

-->
    <xs:redefine schemaLocation="../../req/core/xhtml-hypertext-1.xsd">
        <xs:attributeGroup name="a.attlist">
                <xs:attributeGroup ref="a.attlist" />
                <xs:attributeGroup ref="a.target.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="../xhtml-csismap-1.xsd">
        <xs:attributeGroup name="area.attlist">
            <xs:attributeGroup ref="area.attlist" />
                <xs:attributeGroup ref="area.target.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="../xhtml-link-1.xsd">
        <xs:attributeGroup name="link.attlist">
            <xs:attributeGroup ref="link.attlist" />
                <xs:attributeGroup ref="link.target.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="../xhtml-form-1.xsd">
        <xs:attributeGroup name="form.attlist">
            <xs:attributeGroup ref="form.attlist" />
                <xs:attributeGroup ref="form.target.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <xs:redefine schemaLocation="../xhtml-base-1.xsd">
        <xs:attributeGroup name="base.attlist">
            <xs:attributeGroup ref="base.attlist" />
                <xs:attributeGroup ref="base.target.attlist"/>
        </xs:attributeGroup>
    </xs:redefine>
    <!--

-->
    <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:simpleType name="FrameTarget">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!--

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

-->
</xs:schema>

D.4.12. Iframe

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
        
        This is the XML Schema Inline Frame Element module for XHTML
        Please use this formal public identifier to identify it:
        "-//W3C//ELEMENTS XHTML Inline Frame Element 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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: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" use="optional" 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" use="optional" 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:complexType name="iframe.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <xs:attributeGroup ref="iframe.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.13. Intrinsic Events

Module SCHEMA/req/framework/xhtml-events-1.xsd not found!

D.4.14. Metainformation

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Metainformation module for XHTML
            Please use this formal public identifier to identify it:
            "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
    
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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: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="Text" use="required"/>
        <xs:attribute name="scheme" type="Text"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="meta.type">
        <xs:attributeGroup ref="meta.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.15. Scripting

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
         This is the XML Schema Scripting module for XHTML
          Please use this formal public identifier to identify it:
              "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
    <!--

-->
    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="../req/framework/xml-attribs-1.xsd"/>
    <xs:attributeGroup name="script.attlist">
        <xs:attribute name="charset" type="Charset"/>
        <xs:attribute name="type" type="ContentType"/>
        <xs:attribute name="src" type="URI"/>
        <xs:attribute name="defer" type="Text"/>
        <xs:attribute ref="xml:space" default="preserve"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:complexType name="script.type" mixed="true">
        <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:complexType name="noscript.type">
        <xs:group ref="Block.mix" minOccurs="1"/>
        <xs:attributeGroup ref="noscript.attlist"/>
    </xs:complexType>
    <!--

-->
    <xs:element name="noscript" type="noscript.type"/>
    <!--

-->
</xs:schema>

D.4.16. Stylesheet

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Stylesheets module for XHTML
            Please use this formal public identifier to identify it:
            "-//W3C//DTD XHTML Stylesheets 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
    <!--

-->
    <xs:attributeGroup name="style.attlist">
        <xs:attributeGroup ref="title"/>
        <xs:attributeGroup ref="I18n.attrib"/>
        <xs:attribute name="type" type="ContentType"/>
        <xs:attribute name="media" type="MediaDesc"/>
        <xs:attribute ref="xml:space" default="preserve"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:complexType name="style.type" mixed="true">
        <xs:attributeGroup ref="style.attlist"/>
    </xs:complexType>
    <!--

-->
    <xs:element name="style" type="style.type"/>
    <!--

-->
</xs:schema>

D.4.17. Style Attribute

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
    <xs:documentation>
        This is the XML Schema Inline Style module for XHTML
         Please use this formal public identifier to identify it:
        "-//W3C//ENTITIES XHTML Inline Style 1.0//EN"
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
        Inline Style module
        
        This module declares the 'style' attribute, used to support inline 
        style markup. 
    </xs:documentation>
</xs:annotation>
<!--
Redefines only
-->
    <xs:redefine schemaLocation="../../req/core/xhtml-attrib-1.xsd">
        <xs:attributeGroup name="Core.extra.attrib">
                <xs:extension base="object.attlist">
                    <xs:attributeGroup ref="style.inline.attlist" />
                </xs:extension>
        </xs:attributeGroup>
    </xs:redefine>
<!--

-->
    <xs:attributeGroup name="style.inline.attlist">
        <xs:attribute name="style" type="Text" />
    </xs:attributeGroup>
<!--

-->
</xs:schema>

D.4.18. Link

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
    <xs:documentation>
         This is the XML Schema Link Element module for XHTML
          Please use this formal public identifier to identify it:
                   "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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: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:complexType name="link.type">
        <xs:attributeGroup ref="link.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.4.19. Base

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Base Element module for XHTML
         Please use this formal public identifier to identify it
        
        "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
     <xs:documentation>

     Base element
    
            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.
    
         Note that this module also redeclares the content model for
         the head element to include the base element.

    </xs:documentation>
</xs:annotation>
<!--

-->
    <xs:attributeGroup name="base.attlist">
        <xs:attribute name="href" type="xs:anyURI" use="required" />

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="base.type">
        <xs:attributeGroup ref="base.attlist"/>
    </xs:complexType>
<!--

-->
    <xs:element name="base" type="base.type"/>
<!--

-->
</xs:schema>

D.4.20. Name Identification

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Name Identifier module for XHTML
        Please use this formal public identifier to identify it:
        
        "-//W3C//ELEMENTS XHTML Name Identifier 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
<!--
!!! All redefines
-->
    <xs:attributeGroup name="form.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
    <xs:attributeGroup name="img.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
    <xs:attributeGroup name="a.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
    <xs:attributeGroup name="map.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
    <xs:attributeGroup name="applet.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
    <xs:attributeGroup name="frame.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
    <xs:attributeGroup name="iframe.name.attlist">
        <xs:attribute name="name" type="Text"/>
    </xs:attributeGroup>
<!--

-->
</xs:schema>

D.4.21. Legacy

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>
             This is the XML Schema Legacy Markup module for XHTML
              Please use this formal public identifier to identify it:
              "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
             HTML Legacy Markup
            
             this module includes modules for both frames and
             additional deprecated elements and attributes.
        </xs:documentation>
    </xs:annotation>
<!--

-->
    <xs:include schemaLocation="xhtml-framedefs-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Framedefs module
                Elements defined here:
                * frameset, frame, noframes, att:target, iframe
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->
    <xs:include schemaLocation="misc/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:schema>

D.4.22. Ruby

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified" 
attributeFormDefault="unqualified" 
blockDefault="#all" 
finalDefault="#all" 
version="1.1" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema 
http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
  <xs:annotation>
    <xs:documentation>
        This is the XML Ruby  module for XHTML
        Please use this formal public identifier to identify it:
            
         "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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.
            
    </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.group">
    <xs:sequence>
      <xs:element ref="rbc"/>
      <xs:element ref="rtc"/>
      <xs:element ref="rtc" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:group>
<!--
add to this group any common attributes for all Ruby elements
-->
<xs:attributeGroup name="Ruby.common.attrib"/>
<!--

-->
  <xs:attributeGroup name="Ruby.common.attlist">
    <xs:attributeGroup ref="Ruby.common.attrib"/>
    
  </xs:attributeGroup>
<!--

-->
  <xs:group name="Ruby.content">
    <xs:choice>
        <xs:group ref="Ruby.content.simple"/>
            <xs:group ref="Ruby.content.group"/>
    </xs:choice>
  </xs:group>
<!--

-->
  <xs:complexType name="Ruby.type">
    <xs:group ref="Ruby.content"/>
    <xs:attributeGroup ref="Ruby.common.attlist"/>
  </xs:complexType>
<!--

-->
  <xs:element name="ruby" type="Ruby.type"/>
<!--
rbc (ruby base component) element 
-->
  <xs:attributeGroup name="Rbc.attrib">
    <xs:attributeGroup ref="Ruby.common.attlist"/>
  </xs:attributeGroup>
<!--

-->
  <xs:complexType name="Rbc.type">
    <xs:sequence minOccurs="1" maxOccurs="unbounded">
      <xs:element ref="rb"/>
    </xs:sequence>
    <xs:attributeGroup ref="Rbc.attrib"/>
  </xs:complexType>
<!--

-->
  <xs:element name="rbc" type="Rbc.type"/>
<!--
 rtc (ruby text component) element
-->
  <xs:attributeGroup name="Rtc.attrib">
    <xs:attributeGroup ref="Ruby.common.attlist"/>
  </xs:attributeGroup>
<!--

-->
  <xs:complexType name="Rtc.type">
    <xs:sequence minOccurs="1" maxOccurs="unbounded">
      <xs:element ref="rt"/>
    </xs:sequence>
    <xs:attributeGroup ref="Rtc.attrib"/>
  </xs:complexType>
<!--

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

-->
  <xs:complexType name="Rb.type" mixed="true">
    <xs:attributeGroup ref="Rb.attrib"/>
  </xs:complexType>
<!--

-->
  <xs:element name="rb" type="Rb.type"/>
<!--
 rt (ruby text) element 
-->
  <xs:attributeGroup name="Rt.attrib">
    <xs:attributeGroup ref="Ruby.common.attlist"/>
<!-- rbspan attribute is used for complex ruby only .. -->
    <xs:attribute name="rbspan"  type="xs:positiveInteger" default="1" use="optional" />
  </xs:attributeGroup>
<!--

-->
  <xs:complexType name="Rt.type" mixed="true">
    <xs:attributeGroup ref="Rt.attrib"/>
  </xs:complexType>
<!--

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

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

-->
  <xs:complexType name="Rp.type" mixed="true">
    <xs:attributeGroup ref="Rp.attrib"/>
  </xs:complexType>
<!--

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

-->
</xs:schema>

D.5. XHTML Schema Support Modules

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

D.5.1. Block Phrasal

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
  <xs:annotation>
    <xs:documentation>

        This is the XML Schema block phrasal element module for XHTML
        Please use this formal public identifier to identify it:
           "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
  </xs:annotation>
<!--

--> 
  <xs:annotation>
    <xs:documentation>
    Block Phrasal elements module

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

     This module declares the elements and their attributes used to
     support block-level phrasal markup.
  </xs:documentation>
  </xs:annotation>
<!--

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

-->
  <xs:complexType name="address.type" mixed="true">
    <xs:group ref="Inline.mix"/>
    <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:complexType name="blockquote.type">
    <xs:group ref="Block.mix"/>
    <xs:attributeGroup ref="blockquote.attlist"/>
  </xs:complexType>
<!--

-->
  <xs:element name="blockquote" type="blockquote.type"/>
<!--

-->
  <!-- pre -->
  <xs:group name="pre.content">
    <xs:choice>
      <xs:group ref="InlStruct.class"/>
      <xs:group ref="InlPhras.class"/>
      <xs:element ref="tt"/>
      <xs:element ref="i"/>
      <xs:element ref="b"/>
      <xs:group ref="I18n.class"/>
      <xs:group ref="Anchor.class"/>
      <xs:element ref="script"/>
      <xs:element ref="map"/>
      <xs:group ref="Inline.extra"/>
    </xs:choice>
  </xs:group>
<!--

-->
  <xs:attributeGroup name="pre.attlist">
    <xs:attributeGroup ref="Common.attrib"/>
    <xs:attribute ref="xml:space" default="preserve"/>
    </xs:attributeGroup>
<!--

-->
  <xs:complexType name="pre.type" mixed="true">
    <xs:group ref="pre.content"  minOccurs="0" maxOccurs="unbounded"/>
    <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"/>
    <xs:attributeGroup ref="heading.attlist"/>
  </xs:complexType>
<!--

-->
<!--  !!! define a sub group for these -->
  <xs:element name="h1" type="heading.type"/>
  <xs:element name="h2" type="heading.type"/>
  <xs:element name="h3" type="heading.type"/>
  <xs:element name="h4" type="heading.type"/>
  <xs:element name="h5" type="heading.type"/>
  <xs:element name="h6" type="heading.type"/>
</xs:schema>

D.5.2. Block Presentational

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">

<xs:annotation>
     <xs:documentation>
    This is the XML SchemaBlock presentation element module for XHTML
    Please use this formal public identifier to identify it:

            "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"

    @author: Daniel Austin austin.d@ic.grainger.com
    $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
<!--

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

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="hr.type">
        <xs:attributeGroup ref="hr.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.5.3. Block Structural

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
    <xs:annotation>
        <xs:documentation>

         This is the XML Schema Block Structural module for XHTML
          Please use this formal public identifier to identify it:
        
          "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
         Block Structural
    
           * div, p
    
         This module declares the elements and their attributes used to
         support block-level structural markup.
     </xs:documentation>
</xs:annotation>
<!--

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

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="div.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <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:complexType name="p.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <xs:attributeGroup ref="p.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.5.4. Inline Phrasal

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
    <xs:documentation>
        This is the XML Schema Inline Phrasal module for XHTML
        Please use this formal public identifier to identify it:
        
        "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $      
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
     <xs:documentation>
        Inline Phrasal
        
        * 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.
  </xs:documentation>
</xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>
        With the exception of the q element, all of these elements have exactly         the     same content models and attribute lists.
  </xs:documentation>
</xs:annotation>
<!--

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

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="InlPhras.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <xs:attributeGroup ref="InlPhras.attlist"/>
    </xs:complexType>
<!--

-->
    <xs:element name="abbr" type="InlPhras.type"/>
<!--

-->
    <xs:element name="acronym" type="InlPhras.type"/>
<!--

-->
    <xs:element name="cite" type="InlPhras.type"/>
<!--

-->
    <xs:element name="code" type="InlPhras.type"/>
<!--

-->
    <xs:element name="dfn" type="InlPhras.type"/>
<!--

-->
    <xs:element name="em" type="InlPhras.type"/>
<!--

-->
    <xs:element name="kbd" type="InlPhras.type"/>
<!--

-->
    <xs:element name="samp" type="InlPhras.type"/>
<!--

-->
    <xs:element name="strong" type="InlPhras.type"/>
<!--

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

-->
    <xs:attributeGroup name="q.attlist">
        <xs:attributeGroup ref="Common.attrib"/>
        <xs:attribute name="cite" type="URI"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="q.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <xs:attributeGroup ref="InlPhras.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.5.5. Inline Presentational

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Inline Presentation element module for XHTML
         Please use this formal public identifier to identify it:
        "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
<!--

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

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="InlPres.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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>

D.5.6. Inline Structural

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Inline Structural element module for XHTML
        Please use this formal public identifier to identify it:
        
        "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
        
        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
            Inline Structural
            
            * br, span
            
            This module declares the elements and their attributes 
            used to support inline-level structural markup.
        </xs:documentation>
    </xs:annotation>
<!--

-->
    <xs:attributeGroup name="br.attlist">
        <xs:attributeGroup ref="Core.attrib"/>

    </xs:attributeGroup>
<!--

-->
    <xs:complexType name="br.type">
        <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:complexType name="span.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <xs:attributeGroup ref="span.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.5.7. Param

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
elementFormDefault="unqualified" 
version="1.1"
blockDefault="#all" 
finalDefault="#all" 
attributeFormDefault="unqualified">
<!--

-->
    <xs:annotation>
        <xs:documentation>
             This is the XML Schema Param Element module for XHTML
              Please use this formal public identifier to identify it:
              "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom 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:annotation>
<!--

-->
    <xs:attributeGroup name="param.attlist">
        <xs:attributeGroup ref="id"/>
        <xs:attribute name="name" type="Text"/>
        <xs:attribute name="value" type="Text"/>
        <xs:attribute name="valuetype" use="required" 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:complexType name="param.type" mixed="true">
        <xs:attributeGroup ref="param.attlist"/>
    </xs:complexType>
<!--

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

-->
</xs:schema>

D.5.8. Miscellaneous Legacy

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema Miscellaneous Legacy 
            Markup module for XHTML
              Please use this formal public identifier to identify it:
              "-//W3C//ELEMENTS XHTML Miscellaneous Legacy Markup 1.0//EN"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <!--

-->
    <xs:annotation>
        <xs:documentation>
            HTML Miscellaneous Legacy Markup
            
            * font, basefont, center, s, strike, u, dir, menu, isindex
            (plus additional datatypes and attributes)
            
            This optional module declares additional markup for simple
            presentation-related markup based on features found in the
            HTML 4.0 Transitional and Frameset DTDs. This relies on
            inclusion of the Legacy Redeclarations module. This module
            also declares the frames, inline frames and object modules.
            
            This is to allow XHTML documents to be transformed for
            display on HTML browsers where CSS support is inconsistent
            or unavailable.
        </xs:documentation>
    </xs:annotation>
    <!--

-->
    <xs:attributeGroup name="font.attlist">
        <xs:attributeGroup ref="Core.attrib"/>
        <xs:attributeGroup ref="I18n.attrib"/>
        <xs:attribute name="size" type="Text"/>
        <xs:attribute name="color" type="Color"/>
        <xs:attribute name="face" type="Text"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:group name="font.content">
        <xs:choice>
            <xs:group ref="Inline.mix"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:complexType name="font.type" mixed="true">
        <xs:group ref="font.content" minOccurs="0" maxOccurs="unbounded"/>
        <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="Text"/>
        <xs:attribute name="color" type="Color"/>
        <xs:attribute name="face" type="Text"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:complexType name="basefont.type">
        <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:complexType name="center.type" mixed="true">
        <xs:group ref="Flow.mix"/>
        <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:complexType name="s.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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:complexType name="strike.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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:complexType name="u.type" mixed="true">
        <xs:group ref="Inline.mix"/>
        <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" type="Text"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:complexType name="dir.type" mixed="true">
        <xs:sequence maxOccurs="unbounded">
            <xs:element ref="li"/>
        </xs:sequence>
        <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" type="Text"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:complexType name="menu.type" mixed="true">
        <xs:sequence maxOccurs="unbounded">
            <xs:element ref="li"/>
        </xs:sequence>
        <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:complexType name="isindex.type">
        <xs:attributeGroup ref="isindex.attlist"/>
    </xs:complexType>
    <!--

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

-->
    <xs:annotation>
        <xs:documentation>
            Attribute redefinitions
        </xs:documentation>
    </xs:annotation>
    <!--
!!! Redefines
-->
    <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" use="optional" 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="h1.legacy.attlist">
        <xs:attributeGroup ref="align.legacy.attlist"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="h3.legacy.attlist">
        <xs:attributeGroup ref="align.legacy.attlist"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="h4.legacy.attlist">
        <xs:attributeGroup ref="align.legacy.attlist"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="h5.legacy.attlist">
        <xs:attributeGroup ref="align.legacy.attlist"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="h6.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" use="optional" default="none"/>
        <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="Length"/>
        <xs:attribute name="vspace" type="Length"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="input.legacy.attlist">
        <xs:attributeGroup ref="align.legacy.attlist"/>
    </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="Text"/>
        <xs:attribute name="value" type="Text"/>
    </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="Length"/>
        <xs:attribute name="vspace" type="Length"/>
    </xs:attributeGroup>
    <!--

-->
    <xs:attributeGroup name="ol.legacy.attlist">
        <xs:attribute name="type" type="Text"/>
        <xs:attribute name="compact" use="optional" default="none"/>
        <xs:attribute name="start" type="Text"/>
    </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:attributeGroup ref="align.legacy.attlist"/>
        <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" use="optional" default="none"/>
        <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" use="optional" default="none"/>
        <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="Text"/>
        <xs:attribute name="compact" use="optional" />
    </xs:attributeGroup>
    <!--

-->
</xs:schema>

D.5.9. Legacy Frames

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
elementFormDefault="unqualified" 
version="1.1"
blockDefault="#all" 
finalDefault="#all" 
attributeFormDefault="unqualified">
<!--

-->
<xs:annotation>
     <xs:documentation>
        This is the XML Schema Frames Definition module for XHTML
        Please use this formal public identifier to identify it:

            "-//W3C//ELEMENTS XHTML Frames Definitions 1.0//EN"

        @author: Daniel Austin austin.d@ic.grainger.com
        $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
  </xs:documentation>
  <xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>

<xs:annotation>
    <xs:documentation>
        Frames Definitions
        
        * frameset, frame, noframes, att:target, iframe
        This module includes 3 additional modules, for frames,
        the target attribute, and iframe.
    </xs:documentation>
</xs:annotation>
<!--

-->
<xs:include schemaLocation="frames/xhtml-frames-1.xsd">
    <xs:annotation>
        <xs:documentation>
            Frames module
            Elements defined here:
            * frameset, frame, noframes
        </xs:documentation>
    </xs:annotation>
</xs:include>
<!--

-->
<xs:include schemaLocation="frames/xhtml-target-1.xsd">
    <xs:annotation>
        <xs:documentation>
             Target module
             Attributes defined here:
            * target
        </xs:documentation>
    </xs:annotation>
</xs:include>
<!--

-->
<xs:include schemaLocation="frames/xhtml-iframe-1.xsd">
    <xs:annotation>
        <xs:documentation>
         Iframe module
         Elements defined here:
         * iframe
        </xs:documentation>
    </xs:annotation>
</xs:include>
<!--

-->
</xs:schema>

D.5.10. Optional Module Hub

<?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"  
elementFormDefault="unqualified" 
version="1.1"
blockDefault="#all" 
finalDefault="#all" 
attributeFormDefault="unqualified">
<!--

-->
    <xs:annotation>
        <xs:documentation>

             This is the XHTML optional elements module for XHTML.
             Please use this formal public identifier to identify it:
            
             "-//W3C//SCHEMA XHTML OPTIONAL//EN"
            
             and this namespace for XHTML elements:
            
             xmlns:xhtml="http://www.w3.org/1999/xhtml"

            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
<!--

-->
    <xs:annotation>
        <xs:documentation>
             Optional Element modules 
             
             Comment out those you don't need 
            
                    +  Edit
                    +  Bdo
                    +  Presentational
                    +  Link
                    +  Meta
                    +  Base
                    +  Scripting
                    +  Style
                    +  Image
                    +  Client side image maps
                    +  Server side image maps
                    +  Param
                    +  Applet
                    +  Object
                    +  Tables
                    +  Forms
                    +  Nameident
                    +  Legacy
                    +  Basic forms
                    +  Basic tables

        </xs:documentation>
    </xs:annotation>
<!--

-->
    <xs:include schemaLocation="./opt/xhtml-edit-1.xsd">
        <xs:annotation>
            <xs:documentation>
                 Edit module
                
                 Elements defined here:
                 * ins,del
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->
    <xs:include schemaLocation="./opt/xhtml-bdo-1.xsd">
        <xs:annotation>
            <xs:documentation>
                 Bidirectional element module
                
                 Elements defined here:
                 * bdo
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->
    <xs:include schemaLocation="./opt/xhtml-pres-1.xsd">
        <xs:annotation>
            <xs:documentation>
                 Presentational module
                
                 Elements defined here:
                 * hr,b,big,i,small,sub,sup,tt
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-link-1.xsd">
    <xs:annotation>
      <xs:documentation>
         Link module
         
         Elements defined here:
         * link
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-meta-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Meta module
        
        Elements defined here:
        * meta
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-base-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Base module
        
        Elements defined here:
        * base
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-script-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Scripting module
        
        Elements defined here:
        * script, noscript
      
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-style-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Style module
        
        Elements defined here:
        * style
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-image-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Image module
        
        Elements defined here:
        * img
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-csismap-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Client-side mage maps module
        
        Elements defined here:
        * area, map
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-ssismap-1.xsd">
    <xs:annotation>
      <xs:documentation>
       Server-side image maps module
        
        Attributes defined here:
        * ismap->img
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-param-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Param module
        
        Elements defined here:
        * param
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-applet-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Applet module
        
        Elements defined here:
        * applet
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-object-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Object module

        Elements defined here:
        * object
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-table-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Tables module
      
        Elements defined here:
        * table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-form-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Forms module
        
        Elements defined here:
        * form, label, input, select, ./optgroup, ./option,
        * textarea, fieldset, legend, button
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include schemaLocation="./opt/xhtml-nameident-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Nameident module
        
        Attributes defined here:
        * name (for retro browsers)
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:include  schemaLocation="./opt/xhtml-legacy-1.xsd" >
    <xs:annotation>
      <xs:documentation>
        Legacy module
        
        Elements defined here:
        * font, basefont, center, s, strike, u, dir, menu, isindex
        * frame, frameset, noframes, iframe 
        * (plus additional datatypes and attributes)
      </xs:documentation>
    </xs:annotation>
  </xs:include>
<!--

-->
  <xs:annotation>
    <xs:documentation>
      Basic modules for forms and tables
      
      Note that to use these modules you must comment out 
      the XHTML Forms and Tables modules
    </xs:documentation>
  </xs:annotation>
<!--

-->
<!--
  <xs:include  schemaLocation="./opt/basic/xhtml-basic-form-1.xsd">
    <xs:annotation>
      <xs:docume ntation>
        Basic Forms module
        
        Note that this module is not used in XHTML 1.1. It is designed
        for use with XHTML-Basic
        
        Elements defined here:
        * form, label, input, select, option, textarea
      </xs:documentation>
    </xs:annotation>
  </xs:include>
-->
<!--

-->
<!--
  <xs:include  schemaLocation="./opt/basic/xhtml-basic-table-1.xsd">
    <xs:annotation>
      <xs:documentation>
        Basic Tables module
        
        Note that this module is not used in XHTML It is designed
        for use with XHTML-Basic
        
        Elements defined here:
        * table, caption, tr, th, td
      </xs:documentation>
    </xs:annotation>
  </xs:include>
-->
<!--

-->
</xs:schema>

D.5.11. Core Hub Module

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/1999/xhtml" 
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
blockDefault="#all" 
finalDefault="#all"
version="1.1"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
<!--

-->
<xs:annotation>
    <xs:documentation>
    This is the XML Schema Core Elements module for XHTML
    Please use this formal public identifier to identify it:
     "-//W3C//ELEMENTS XHTML Core 1.0//EN"
    
    @author: Daniel Austin austin.d@ic.grainger.com
    $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
    </xs:documentation>
    <xs:documentation source="xhtml-copyright-1xsd"/>
</xs:annotation>
<!--

-->
<xs:annotation>
    <xs:documentation>

     Required core modules for elements
    
            +  text
            +  hypertext
            +  lists
            +  ruby
            +  structural

    This module includes only other modules and is required.
    </xs:documentation>
</xs:annotation>

<!--

-->
    <xs:include schemaLocation="core/xhtml-text-1.xsd">
        <xs:annotation>
            <xs:documentation>
            Text module
            
            The Text module includes declarations for all core 
             text container elements and their attributes.
            
                    +  block phrasal
                    +  block structural
                    +  inline phrasal
                    +  inline structural
            
             Elements defined here:
                    * address, blockquote, pre, h1, h2, h3, h4, h5, h6
                    * div, p
                    * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
                    * br,span
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->  
    <xs:include schemaLocation="core/xhtml-hypertext-1.xsd">
        <xs:annotation>
            <xs:documentation>
             Hypertext module
             Elements defined here:
              * a
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->
    <xs:include schemaLocation="core/xhtml-list-1.xsd">
        <xs:annotation>
            <xs:documentation>
             Lists module
             Elements defined here:
              * dt, dd, dl, ol, ul, li
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--
Note that either Ruby or Ruby Basic should be used but not both
-->  
    <xs:include schemaLocation="core/xhtml-ruby-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Ruby module
                Elements defined here:
                * ruby, rbc, rtc, rb, rt, rp
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--
Ruby Basic omits the rbc and rtc elements, the rbspan attribute,
and modifies the content model of the ruby element.
-->  
<!--
    <xs:include schemaLocation="core/xhtml-ruby-basic-1.xsd">
        <xs:annotation>
            <xs:documentation>
                Ruby module
                Elements defined here:
                * ruby, rb, rt, rp
            </xs:documentation>
        </xs:annotation>
    </xs:include>
-->
<!--

-->  
    <xs:include schemaLocation="core/xhtml-struct-1.xsd">
        <xs:annotation>
            <xs:documentation>
            Structural module
            Elements defined here:
            * title, head, body, html
            </xs:documentation>
        </xs:annotation>
    </xs:include>
<!--

-->
</xs:schema>


D.5.12. XHTML 1.1 Content Model

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="#all" finalDefault="#all" version="1.1" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
    <!--

-->
    <xs:annotation>
        <xs:documentation>
            This is the XML Schema module common content models in XHTML
            Please use this formal public identifier to identify it:
            "-//W3C//ENTITIES XHTML Document Model 1.0//EN"
            
            @author: Daniel Austin austin.d@ic.grainger.com
            $Id: schema_module_defs.html,v 1.1 2001/12/19 15:44:05 dom Exp $
        </xs:documentation>
        <xs:documentation source="xhtml-copyright-1.xsd"/>
    </xs:annotation>
    <!--

-->
    <xs:annotation>
        <xs:documentation>
    XHTML Document Model

     This module describes the groupings of elements that make up
     common content models for XHTML elements.

     XHTML has three basic content models:

         Inline.mix;  character-level elements
         Block.mix;   block-like elements, eg., paragraphs and lists
         Flow.mix;    any block or inline elements

    Any groups declared in this module may be used
     to create element content models, but the above three are
     considered 'global' (insofar as that term applies here).
  </xs:documentation>
    </xs:annotation>
    <!--

-->
    <xs:group name="HeadOpts.mix">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="script" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="style"/>
            <xs:element ref="meta"/>
            <xs:element ref="link"/>
            <xs:element ref="object"/>
        </xs:choice>
    </xs:group>
    <!--
ins and del are used to denote editing changes
-->
    <xs:group name="Edit.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="ins"/>
            <xs:element ref="del"/>
        </xs:choice>
    </xs:group>
    <!--
script and noscript are used to contain scripts
and alternative content
-->
    <xs:group name="Script.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="script"/>
            <xs:element ref="noscript"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="Misc.extra">
        <xs:choice/>
    </xs:group>
    <!--
These elements are neither block nor inline, and can
essentially be used anywhere in the document body.
-->
    <xs:group name="Misc.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="Edit.class"/>
            <xs:group ref="Script.class"/>
            <xs:group ref="Misc.extra"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <!-- Inline Elements -->
    <xs:group name="InlStruct.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="br"/>
            <xs:element ref="span"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="InlPhras.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="em"/>
            <xs:element ref="strong"/>
            <xs:element ref="dfn"/>
            <xs:element ref="code"/>
            <xs:element ref="samp"/>
            <xs:element ref="kbd"/>
            <xs:element ref="var"/>
            <xs:element ref="cite"/>
            <xs:element ref="abbr"/>
            <xs:element ref="acronym"/>
            <xs:element ref="q"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="InlPres.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="tt"/>
            <xs:element ref="i"/>
            <xs:element ref="b"/>
            <xs:element ref="big"/>
            <xs:element ref="small"/>
            <xs:element ref="sub"/>
            <xs:element ref="sup"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="I18n.class">
        <xs:sequence>
            <xs:element ref="bdo"/>
        </xs:sequence>
    </xs:group>
    <!--

-->
    <xs:group name="Anchor.class">
        <xs:sequence>
            <xs:element ref="a"/>
        </xs:sequence>
    </xs:group>
    <!--

-->
    <xs:group name="InlSpecial.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="img"/>
            <xs:element ref="map"/>
            <xs:element ref="applet"/>
            <xs:element ref="object"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="InlForm.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="input"/>
            <xs:element ref="select"/>
            <xs:element ref="textarea"/>
            <xs:element ref="label"/>
            <xs:element ref="button"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="Inline.extra">
        <xs:choice/>
    </xs:group>
    <!--

-->
    <!--ruby is required in XHTML -->
    <xs:group name="Ruby.class">
        <xs:sequence>
            <xs:element ref="ruby"/>
        </xs:sequence>
    </xs:group>
    <!--
Inline.class includes all inline elements,
used as a component in mixes
-->
    <xs:group name="Inline.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="InlPhras.class"/>
            <xs:group ref="InlPres.class"/>
            <xs:group ref="I18n.class"/>
            <xs:group ref="Anchor.class"/>
            <xs:group ref="InlSpecial.class"/>
            <xs:group ref="InlForm.class"/>
            <xs:group ref="Ruby.class"/>
            <xs:group ref="Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
InlNoRuby.class includes all inline elements 
except ruby, used as a component in mixes
-->
    <xs:group name="InlNoRuby.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="InlPhras.class"/>
            <xs:group ref="InlPres.class"/>
            <xs:group ref="I18n.class"/>
            <xs:group ref="Anchor.class"/>
            <xs:group ref="InlSpecial.class"/>
            <xs:group ref="InlForm.class"/>
            <xs:group ref="Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
NoRuby.content includes all inlines except ruby
-->
    <xs:complexType name="NoRuby.content" mixed="true">
        <xs:sequence>
            <xs:group ref="InlNoRuby.class"/>
            <xs:group ref="Misc.class"/>
        </xs:sequence>
    </xs:complexType>
    <!--
InlNoAnchor.class includes all non-anchor inlines,
used as a component in mixes
-->
    <xs:group name="InlNoAnchor.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="InlPhras.class"/>
            <xs:group ref="InlPres.class"/>
            <xs:group ref="I18n.class"/>
            <xs:group ref="InlSpecial.class"/>
            <xs:group ref="InlForm.class"/>
            <xs:group ref="Ruby.class"/>
            <xs:group ref="Inline.extra"/>
        </xs:choice>
    </xs:group>
    <!--
InlNoAnchor.mix includes all non-anchor inlines
-->
    <xs:group name="InlNoAnchor.mix">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="InlNoAnchor.class"/>
            <xs:group ref="Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
Inline.mix includes all inline elements, including Misc.class
-->
    <xs:group name="Inline.mix">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="Inline.class"/>
            <xs:group ref="Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--
In the HTML 4.0 DTD, heading and list elements were included
in the block group. The Heading.class and
List.class groups must now be included explicitly
on element declarations where desired.
-->
    <xs:group name="Heading.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="h1"/>
            <xs:element ref="h2"/>
            <xs:element ref="h3"/>
            <xs:element ref="h4"/>
            <xs:element ref="h5"/>
            <xs:element ref="h6"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="List.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="ul"/>
            <xs:element ref="ol"/>
            <xs:element ref="dl"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="BlkStruct.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="p"/>
            <xs:element ref="div"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="BlkPhras.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="pre"/>
            <xs:element ref="blockquote"/>
            <xs:element ref="address"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="BlkPres.class">
        <xs:sequence>
            <xs:element ref="hr" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:group>
    <!--

-->
    <xs:group name="BlkSpecial.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="table"/>
            <xs:element ref="form"/>
            <xs:element ref="fieldset"/>
        </xs:choice>
    </xs:group>
    <!--

-->
    <xs:group name="Block.extra">
        <xs:choice minOccurs="0" maxOccurs="unbounded"/>
    </xs:group>
    <!--
Block.class includes all block elements,
used as an component in mixes
-->
    <xs:group name="Block.class">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="BlkStruct.class"/>
            <xs:group ref="BlkPhras.class"/>
            <xs:group ref="BlkPres.class"/>
            <xs:group ref="BlkSpecial.class"/>
            <xs:group ref="Block.extra"/>
        </xs:choice>
    </xs:group>
    <!--
Block.mix includes all block elements plus %Misc.class;
-->
    <xs:group name="Block.mix">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="Heading.class"/>
            <xs:group ref="List.class"/>
            <xs:group ref="Block.class"/>
            <xs:group ref="Misc.class"/>
        </xs:choice>
    </xs:group>
    <!-- 
All Content Elements 

Flow.mix includes all text content, block and inline
Note that the "any" element included here allows us
to add data from any other namespace, a necessity
for compound document creation.
Note however that it is not possible to add
to any head level element without further
modification. To add RDF metadata to the head
of a document, modify the struct module.
-->
    <xs:group name="Flow.mix">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:group ref="List.class"/>
            <xs:group ref="Block.class"/>
            <xs:group ref="Inline.class"/>
            <xs:group ref="Misc.class"/>
        </xs:choice>
    </xs:group>
    <!--

-->
</xs:schema>