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"?>

<schema targetNamespace="http://www.w3.org/1999/xhtml" 
        xmlns="http://www.w3.org/2000/10/XMLSchema" 
    elementFormDefault="unqualified" 
    version="1.1">

    <annotation>
        <documentation>
/**
* This is the XML Schema driver for XHTML
*  Please use this formal public identifier to identify it:
*          "-//W3C//SCHEMA XHTML//EN"
* And this namespace for XHTML elements:
*        xmlns:xhtml="http://www.w3.org/1999/xhtml"
*
*/
        </documentation>
    </annotation>
    <annotation>
        <documentation>
/**
*
* Versioning block
* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
        </documentation>
    </annotation>
    <annotation>
        <documentation>
/**
*   This is XHTML, a reformulation of HTML as a modular XML application.
*
*     The Extensible HyperText Markup Language (XHTML)
*     Copyright 1998-2000 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 DTD and its 
*     accompanying 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 the DTD for any purpose.
*
*     It is provided "as is" without expressed or implied warranty.
*
*/
        </documentation>
    </annotation>
    <annotation>
        <documentation>
/**
*
* This document is based on an approach to modular schemas originally suggested by
* Rick Jelliffe ricko@gate.sinica.edu.tw and members of the XML Schema Working Group at

* W3C.

* http://www.ascc.net/~ricko/xhtml.htm

*/
        </documentation>
    </annotation>
    <annotation>
        <documentation>
/**
* In order to modify this schema, you can modify the files
* containing the optional modules and if necessary make changes
* to the common content models module. It is not necessary to modify this file.
*
*/
        </documentation>
    </annotation>

    <!-- required modules section begins here -->

    <annotation>
        <documentation>
/**
* These modules are required to be included in any member of the
* XHTML Family of Documents TM. 
*
* In order to modify this schema, you can modify the files
* containing the optional modules and if necessary make changes
* to the common content models module. It is not necessary to modify this file.
*
*/
        </documentation>
    </annotation>
    <annotation>
        <documentation>
/**
* Framework module
*
*        +  notations
*        +  datatypes
*        +  xlink
*        +  events
*        +  common attributes
*        +  common content models
*        +  character entities
*
*/
        </documentation>
    </annotation>
    <include schemaLocation="xhtml-framework-1.xsd"/>
    <annotation>
        <documentation>
/**
* Core Required elements modules
*
*        +  text
*        +  hypertext
*        +  lists
*        +  ruby
*        +  structural
*
*/
        </documentation>
    </annotation>
    <include schemaLocation="xhtml-core-1.xsd"/>
    <!-- end of REQUIRED modules -->
    <annotation>
        <documentation>
/**
* Optional Element modules 
* 
* Comment out those you don't need. 
* Note that you will also need (probably) 
* to modify the content models file.
*
*        +  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
*
*/
        </documentation>
    </annotation>
    <include schemaLocation="xhtml-optional-1.xsd"/>
</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"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" 
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
        xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd" 
            elementFormDefault="unqualified" 
            version="1.1">

    <xsd:annotation>
        <xsd: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"
*
*/
    </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block
* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
    </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
        <xsd:documentation> 
/**
* Modular Framework
*
*     This required module instantiates the modules needed
*     to support the XHTML modularization model, including:
*
*        +  notations
*        +  datatypes
*        +  events
*        +  common attributes
*        +  common content models
*        +  character entities
*
*/
    </xsd:documentation>
    </xsd:annotation>
    
    <!-- Required declarations for common notations -->

    <xsd:annotation>
        <xsd:documentation>
/**
* Notations module
*
* Contains XHTML notations for data types 
*
*/
    </xsd:documentation>
    </xsd:annotation>

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

    <xsd:annotation>
        <xsd:documentation>
/**
* Events module
*
* Events attributes
*
*/
    </xsd:documentation>
    </xsd:annotation>
    
    <xsd:include schemaLocation="framework/xhtml-events-1.xsd"/>

    <xsd:annotation>
        <xsd:documentation>
/**
* Common attributes module
*
*/
    </xsd:documentation>
    </xsd:annotation>

    <xsd:include schemaLocation="framework/xhtml-attribs-1.xsd"/>

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

    <!-- Entities are broken in XML Schema -->

    <xsd:annotation>
        <xsd:documentation>
/**
* Character entities module
*
* Notation declarations for Latin 1, Special, and Symbol character entity sets
*/
    </xsd:documentation>
    </xsd:annotation>

    <xsd:include schemaLocation="framework/xhtml-charent-1.xsd"/>

    <!-- end of framework modules    -->
</xsd: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"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified"
            version="1.1"
>
<xsd:annotation>
    <xsd: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"
* And this namespace for XHTML elements:
*        xmlns:xhtml="http://www.w3.org/1999/xhtml"
*
*/
  </xsd:documentation>

    <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
  
<xsd:documentation source="xhtml-copyright-1.txt"/>


     <xsd:documentation>
/**
* Notations
*
*    defines the following notations, many of these imported from 
*    other specifications and standards. When an existing FPI is
*    known, it is incorporated here.
*
*/
  </xsd:documentation>
</xsd:annotation>

    <!-- W3C XML 1.0 Recommendation -->
    <xsd:notation name="w3c-xml" public="ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN"/>
    <!-- XML 1.0 CDATA -->
    <xsd:notation name="cdata" public="-//W3C//NOTATION XML 1.0: CDATA//EN"/>
    <!-- SGML Formal Public Identifiers -->
    <xsd: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] -->
    <xsd:notation name="character" public="-//W3C//NOTATION XHTML Datatype: Character//EN"/>
    <!-- a character encoding, as per [RFC2045] -->
    <xsd:notation name="charset" public="-//W3C//NOTATION XHTML Datatype: Charset//EN"/>
    <!-- a space separated list of character encodings, as per [RFC2045] -->
    <xsd:notation name="charsets" public="-//W3C//NOTATION XHTML Datatype: Charsets//EN"/>
    <!-- media type, as per [RFC2045] -->
    <xsd:notation name="contentType" public="-//W3C//NOTATION XHTML Datatype: ContentType//EN"/>
    <!-- comma-separated list of media types, as per [RFC2045] -->
    <xsd:notation name="contentTypes" public="-//W3C//NOTATION XHTML Datatype: ContentTypes//EN"/>
    <!-- date and time information. ISO date format -->
    <xsd:notation name="datetime" public="-//W3C//NOTATION XHTML Datatype: Datetime//EN"/>
    <!-- a language code, as per [RFC3066] -->
    <xsd:notation name="languageCode" public="-//W3C//NOTATION XHTML Datatype: LanguageCode//EN"/>
    <!-- nn for pixels or nn% for percentage length -->
    <xsd:notation name="length" public="-//W3C//NOTATION XHTML Datatype: Length//EN"/>
    <!-- space-separated list of link types -->
    <xsd:notation name="linkTypes" public="-//W3C//NOTATION XHTML Datatype: LinkTypes//EN"/>
    <!-- single or comma-separated list of media descriptors -->
    <xsd:notation name="mediaDesc" public="-//W3C//NOTATION XHTML Datatype: MediaDesc//EN"/>
    <!-- pixel, percentage, or relative -->
    <xsd:notation name="multiLength" public="-//W3C//NOTATION XHTML Datatype: MultiLength//EN"/>
    <!-- one or more digits (NUMBER) -->
    <xsd:notation name="number" public="-//W3C//NOTATION XHTML Datatype: Number//EN"/>
    <!-- one or more digits (NUMBER) -->
    <xsd:notation name="pixels" public="-//W3C//NOTATION XHTML Datatype: Pixels//EN"/>
    <!-- script expression -->
    <xsd:notation name="script" public="-//W3C//NOTATION XHTML Datatype: Script//EN"/>
    <!-- textual content -->
    <xsd:notation name="text" public="-//W3C//NOTATION XHTML Datatype: Text//EN"/>
    <!-- a Uniform Resource Identifier, see [URI] -->
    <xsd:notation name="uri" public="-//W3C//NOTATION XHTML Datatype: URI//EN"/>
    <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
    <xsd:notation name="uris" public="-//W3C//NOTATION XHTML Datatype: URIs//EN"/>

</xsd:schema>


D.3.2. XHTML Datatypes

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
            targetNamespace="http://www.w3.org/1999/xhtml"  
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1" 
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
        <xsd:documentation>
/**
* Datatypes
*
*     defines containers for the following datatypes, many of
*     these imported from other specifications and standards.
*
*/
  </xsd:documentation>
    </xsd:annotation>
    <!-- Length defined for cellpadding/cellspacing -->
    <!-- nn for pixels or nn% for percentage length -->
    <xsd:simpleType name="Length">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- space-separated list of link types -->
    <xsd:simpleType name="LinkTypes">
        <xsd:list itemType="xsd:NMTOKEN"/>
    </xsd:simpleType>
    <!-- single or comma-separated list of media descriptors -->
    <xsd:simpleType name="MediaDesc">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- pixel, percentage, or relative -->
    <xsd:simpleType name="MultiLength">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- one or more digits (NUMBER) -->
    <xsd:simpleType name="Number">
        <xsd:restriction base="xsd:nonNegativeInteger"/>
    </xsd:simpleType>
    <!-- integer representing length in pixels -->
    <xsd:simpleType name="Pixels">
        <xsd:restriction base="xsd:nonNegativeInteger"/>
    </xsd:simpleType>
    <!-- script expression -->
    <xsd:simpleType name="Script">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- RGB color expression - this needs a better definition -->
    <xsd:simpleType name="Color">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- textual content -->
    <xsd:simpleType name="Text">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- Imported Datatypes  -->
    <!-- a single character from [ISO10646] -->
    <xsd:simpleType name="Character">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- a character encoding, as per [RFC2045] -->
    <xsd:simpleType name="Charset">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- a space separated list of character encodings, as per [RFC2045] -->
    <xsd:simpleType name="Charsets">
        <xsd:list itemType="xsd:string"/>
    </xsd:simpleType>
    <!-- media type, as per [RFC2045] -->
    <xsd:simpleType name="ContentType">
        <xsd:list itemType="xsd:string"/>
    </xsd:simpleType>
    <!-- comma-separated list of media types, as per [RFC2045] -->
    <xsd:simpleType name="ContentTypes">
        <xsd:list itemType="xsd:string"/>
    </xsd:simpleType>
    <!-- date and time information. ISO date format -->
    <xsd:simpleType name="Datetime">
        <xsd:restriction base="xsd:CDATA"/>
    </xsd:simpleType>
    <!-- formal public identifier, as per [ISO8879] -->
    <xsd:simpleType name="FPI">
        <xsd:restriction base="xsd:CDATA"/>
    </xsd:simpleType>
    <!-- a language code, as per [RFC3066] -->
    <xsd:simpleType name="LanguageCode">
        <xsd:restriction base="xsd:NMTOKEN"/>
    </xsd:simpleType>
    <!-- a Uniform Resource Identifier, see [URI] -->
    <xsd:simpleType name="URI">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
    <xsd:simpleType name="URIs">
        <xsd:list itemType="xsd:string"/>
    </xsd:simpleType>
</xsd:schema>

D.3.3. XHTML Common Attribute Definitions

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>

    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
        <xsd:documentation>
/**
*  Common Attributes
*    This module declares many of the common attributes for the XHTML Schema
*
*/
    </xsd:documentation>
    </xsd:annotation>
    <xsd:attributeGroup name="id">
        <xsd:attribute name="id" type="xsd:ID"/>
    </xsd:attributeGroup>
    <xsd:attributeGroup name="class">
        <xsd:attribute name="class" type="xsd:NMTOKENS"/>
    </xsd:attributeGroup>
    <xsd:attributeGroup name="title">
        <xsd:attribute name="title" type="xsd:string"/>
    </xsd:attributeGroup>
    <xsd:attributeGroup name="Core.extra.attrib">
        <!-- add your attribute here -->
    </xsd:attributeGroup>
    <xsd:attributeGroup name="Core.attrib">
        <xsd:attributeGroup ref="id"/>
        <xsd:attributeGroup ref="class"/>
        <xsd:attributeGroup ref="title"/>
        <xsd:attributeGroup ref="Core.extra.attrib"/>
    </xsd:attributeGroup>
    <xsd:attributeGroup name="BIDI"/>
    <xsd:attribute name="dir">
        <xsd:simpleType>
            <xsd:restriction base="xsd:NMTOKEN">
                <xsd:enumeration value="ltr"/>
                <xsd:enumeration value="rtl"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
    <xsd:attributeGroup name="I18n.attrib">
        <xsd:attributeGroup ref="BIDI"/>
        <xsd:attribute name="xml:lang" type="LanguageCode"/>
    </xsd:attributeGroup>
    <!-- intrinsic event attributes declared previously -->
    <xsd:attributeGroup name="Common.extra">
        <!-- add your attributes here -->
    </xsd:attributeGroup>
    <xsd:attributeGroup name="Common.attrib">
        <xsd:attributeGroup ref="Core.attrib"/>
        <xsd:attributeGroup ref="I18n.attrib"/>
        <xsd:attributeGroup ref="Events.attrib"/>
        <xsd:attributeGroup ref="Common.extra"/>
    </xsd:attributeGroup>
</xsd:schema>

D.3.4. XHTML Character Entities

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>

<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

    <xsd:documentation>
/**
    Character Entities for XHTML

     This module declares the set of character entities for XHTML,
     including the Latin 1, Symbol and Special character collections.
*/
    </xsd:documentation>
    
<xsd:documentation source="xhtml-copyright-1.txt"/>

</xsd:annotation>
    
    <!-- These are the entity sets for ISO Latin 1 characters for the XHTML -->
    <xsd: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 -->
    <xsd: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 -->
    <xsd:notation name="XHTMLSymbol" 
                      id="xhtml-symbol" 
                      public="-//W3C//ENTITIES Symbols for XHTML//EN" 
                      system="http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"/>

</xsd: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"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

        <xsd: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.
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

    </xsd:annotation>
    
    <!-- title: Document Title  -->
    <!-- 
        The title element is not considered part of the flow of text.
        It should be displayed, for example as the page header or
        window title. Exactly one title is required per document.
    -->
    <xsd:attributeGroup name="title.attlist">
        <xsd:attributeGroup ref="I18n.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="title.type" mixed="true">
        <xsd:attributeGroup ref="title.attlist"/>
    </xsd:complexType>
    <xsd:element name="title" type="title.type"/>
    <!-- head: Document Head -->
    <xsd:group name="head.content">
        <xsd:sequence>
            <xsd:group ref="HeadOpts.mix"/>
            <xsd:element ref="title" minOccurs="1"/>
            <xsd:group ref="HeadOpts.mix"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:attributeGroup name="head.attlist">
        <xsd:attribute name="profile" type="URI"/>
        <xsd:attributeGroup ref="I18n.attrib"/>
    </xsd:attributeGroup>
    <xsd:complexType name="head.type">
        <xsd:group ref="head.content"/>
        <xsd:attributeGroup ref="head.attlist"/>
    </xsd:complexType>
    <xsd:element name="head" type="head.type"/>
    <!-- body: Document Body  -->
    <xsd:attributeGroup name="body.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="body.type" mixed="true">
        <xsd:group ref="Block.mix" minOccurs="1"/>
        <xsd:attributeGroup ref="body.attlist"/>
    </xsd:complexType>
    <xsd:element name="body" type="body.type"/>
    <!-- html: XHTML Document Element  -->
    <!-- check value -->
    <xsd:attributeGroup name="html.attlist">
        <xsd:attribute name="version" type="FPI" value="XHTML1.1"/>
        <xsd:attributeGroup ref="I18n.attrib"/>
    </xsd:attributeGroup>
    <xsd:complexType name="html.type">
        <xsd:sequence>
            <xsd:element ref="head"/>
            <xsd:element ref="body"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="html.attlist"/>
    </xsd:complexType>
    <xsd:element name="html" type="html.type"/>
</xsd:schema>

D.4.1.2. Text

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified"
            version="1.1"
>

    <xsd:annotation>
        <xsd: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"
*
*/
        </xsd:documentation>

        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
        </xsd:documentation>

        <xsd: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
*
*/
        </xsd:documentation>

    <xsd:documentation source="xhtml-copyright-1.txt"/>
    
</xsd:annotation>

<xsd:annotation>
        <xsd:documentation>
/**
* Block Phrasal module
* Elements defined here:
*        address, blockquote, pre, h1, h2, h3, h4, h5, h6
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="text/xhtml-blkphras-1.xsd"/>
    
    <xsd:annotation>
        <xsd:documentation>
/**
* Block Structural module 
* Elements defined here:
*        div, p
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="text/xhtml-blkstruct-1.xsd"/>
    
    <xsd:annotation>
        <xsd:documentation>
/**
* Inline Phrasal module
* Elements defined here:
*        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="text/xhtml-inlphras-1.xsd"/>
    
    <xsd:annotation>
        <xsd:documentation>
/**
* Inline Structural module 
* Elements defined here:
*        br,span
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="text/xhtml-inlstruct-1.xsd"/>
    
</xsd:schema>

D.4.1.3. Hypertext

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>

    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>

        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

        <xsd: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.
*
*/
  </xsd:documentation>
  
<xsd:documentation source="xhtml-copyright-1.txt"/>

    </xsd:annotation>
    
    <!-- a -->
    <xsd:attributeGroup name="a.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="href" type="URI"/>
        <xsd:attribute name="charset" type="Charset"/>
        <xsd:attribute name="type" type="ContentType"/>
        <xsd:attribute name="hreflang" type="LanguageCode"/>
        <xsd:attribute name="rel" type="LinkTypes"/>
        <xsd:attribute name="rev" type="LinkTypes"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:attribute name="tabindex" type="Number"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="a.type" mixed="true">
        <xsd:group ref="InlNoAnchor.mix"/>
        <xsd:attributeGroup ref="a.attlist"/>
    </xsd:complexType>
    <xsd:element name="a" type="a.type"/>
</xsd:schema>

D.4.1.4. Lists

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

    <xsd:documentation>
/**
* Lists
*
*        dl, dt, dd, ol, ul, li
*
*     This module declares the list-oriented element types
*     and their attributes.
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

</xsd:annotation>

    <!-- definition lists -->
    <!-- dt: Definition Term  -->
    <xsd:attributeGroup name="dt.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:complexType name="dt.type" mixed="true">
        <xsd:group ref="Inline.mix"/>
        <xsd:attributeGroup ref="dt.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="dt" type="dt.type"/>
    
    <!-- dd: Definition Description  -->
    <xsd:attributeGroup name="dd.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:complexType name="dd.type" mixed="true">
        <xsd:group ref="Flow.mix"/>
        <xsd:attributeGroup ref="dd.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="dd" type="dd.type"/>

    <!-- dl: Definition List  --> 
    <xsd:attributeGroup name="dl.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <!-- content model? -->
    <xsd:group name="dl.content">
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <xsd:element ref="dt"/>
            <xsd:element ref="dd"/>
        </xsd:sequence>
    </xsd:group>
    
    <xsd:complexType name="dl.type" mixed="true">
        <xsd:group ref="dl.content"/>
        <xsd:attributeGroup ref="dl.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="dl" type="dl.type"/>
    
    <!-- li: List Item -->
    <xsd:attributeGroup name="li.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:complexType name="li.type" mixed="true">
        <xsd:group ref="Flow.mix"/>
        <xsd:attributeGroup ref="li.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="li" type="li.type"/>

    <!-- ol: Ordered List (numbered styles) -->
    <xsd:attributeGroup name="ol.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:complexType name="ol.type">
        <xsd:sequence minOccurs="1">
            <xsd:element ref="li"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="ol.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="ol" type="ol.type"/>
    
    <!-- ul: Unordered List -->
    <xsd:attributeGroup name="ul.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:complexType name="ul.type">
        <xsd:sequence minOccurs="1">
            <xsd:element ref="li"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="ul.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="ul" type="ul.type"/>

</xsd:schema>

D.4.2. Text Modules

D.4.2.1. Presentation

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified"
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
        </xsd:documentation>

        <xsd:documentation> 
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

        <xsd: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
*
*/
        </xsd:documentation>
    </xsd:annotation>
    
    <xsd:annotation>
        <xsd:documentation>
/**
* Block Presentational module
* Elements defined here:
*        hr
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="pres/xhtml-blkpres-1.xsd"/>
    
    <xsd:annotation>
        <xsd:documentation>
/**
* Inline Presentational module
* Elements defined here:
*        b, big, i, small, sub, sup, tt
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="pres/xhtml-inlpres-1.xsd"/>
</xsd:schema>

D.4.2.2. Edit

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified"
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd:documentation>
/** 
*   Editing Elements
*
*        ins, del
*
*     This module declares element types and attributes used to indicate
*     inserted and deleted content while editing a document.
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    <xsd:annotation>
        <xsd:documentation>
/**
* Both of these elements have the same content model and attribute list
*
*/
  </xsd:documentation>
    </xsd:annotation>
    <xsd:attributeGroup name="edit.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="cite" type="URI"/>
        <xsd:attribute name="datetime" type="Datetime"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="edit.content">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:group ref="Flow.mix"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="edit.type" mixed="true">
        <xsd:group ref="edit.content"/>
        <xsd:attributeGroup ref="edit.attlist"/>
    </xsd:complexType>
    <!-- ins: Inserted Text   -->
    <xsd:element name="ins" type="edit.type"/>
    <!-- del: Deleted Text   -->
    <xsd:element name="del" type="edit.type"/>
</xsd:schema>

D.4.2.3. Bi-directional Text

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd: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.
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    <xsd:attributeGroup name="bdo.attlist">
        <xsd:attribute name="xml:lang" type="LanguageCode"/>
        <xsd:attributeGroup ref="Core.attrib"/>
        <xsd:attribute name="dir" use="required">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="ltr"/>
                    <xsd:enumeration value="rtl"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="bdo.type" mixed="true">
        <xsd:group ref="Inline.mix"/>
        <xsd:attributeGroup ref="bdo.attlist"/>
    </xsd:complexType>
    <xsd:element name="bdo" type="bdo.type"/>
</xsd:schema>

D.4.3. Forms

D.4.3.1. Basic Forms

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

     <xsd: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
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

</xsd:annotation>
    <!-- 
        BlkNoForm.mix includes all non-form block elements,
        plus Misc.class
    -->
    <xsd:group name="BlkNoForm.mix">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:group ref="Heading.class"/>
            <xsd:group ref="List.class"/>
            <xsd:group ref="BlkStruct.class"/>
            <xsd:group ref="BlkPhras.class"/>
            <xsd:group ref="BlkPres.class"/>
            <xsd:group ref="Table.class"/>
            <xsd:group ref="Block.extra"/>
            <xsd:group ref="Misc.class"/>
        </xsd:choice>
    </xsd:group>
    <!-- form -->
    <xsd:attributeGroup name="form.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="action" type="URI"/>
        <xsd:attribute name="method" use="default" value="get">
            <xsd:simpleType>
                <xsd:restriction base="NMTOKEN">
                    <xsd:enumeration value="get"/>
                    <xsd:enumeration value="post"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="enctype" type="ContentType" use="fixed" value="application/x-www-form-urlencoded"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="form.type">
        <xsd:group ref="BlkNoForm.mix"/>
        <xsd:attributeGroup ref="form.attlist"/>
    </xsd:complexType>
    <xsd:element name="form" type="form.type"/>
    <!-- label: Form Field Label Text -->
    <!-- 
        Each label must not contain more than ONE field
    -->
    <xsd:group name="label.content">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="input"/>
            <xsd:element ref="select"/>
            <xsd:element ref="textarea"/>
            <xsd:group ref="InlStruct.class.class"/>
            <xsd:group ref="InlPhras.class"/>
            <xsd:group ref="I18n.class"/>
            <xsd:group ref="InlPres.class"/>
            <xsd:group ref="InlSpecial.class"/>
            <xsd:group ref="Misc.class"/>
        </xsd:choice>
    </xsd:group>
    <xsd:attributeGroup name="label.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="for" type="Text"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="label.type" mixed="true">
        <xsd:group ref="label.content"/>
        <xsd:attributeGroup ref="label.attlist"/>
    </xsd:complexType>
    <xsd:element name="label" type="label.type"/>
    <!-- input: Form Control -->
    <!-- 
        attribute name required for all but submit & reset
    -->
    <!-- 
        Basic Forms removes 'image' and 'file' input types.
    -->
    <xsd:attribute name="type" use="default" value="text">
        <xsd:simpleType>
            <xsd:restriction base="NMTOKEN">
                <xsd:enumeration value="text"/>
                <xsd:enumeration value="password"/>
                <xsd:enumeration value="checkbox"/>
                <xsd:enumeration value="radio"/>
                <xsd:enumeration value="submit"/>
                <xsd:enumeration value="reset"/>
                <xsd:enumeration value="hidden"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
    <xsd:attributeGroup name="input.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute ref="type"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="value" type="Text"/>
        <xsd:attribute name="checked" type="Text"/>
        <xsd:attribute name="size" type="Number"/>
        <xsd:attribute name="maxlength" type="Number"/>
        <xsd:attribute name="src" type="URI"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="input.type">
        <xsd:attributeGroup ref="input.attlist"/>
    </xsd:complexType>
    <xsd:element name="input" type="input.type"/>
    <!-- select: Option Selector  -->
    <xsd:attributeGroup name="select.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="size" type="Number"/>
        <xsd:attribute name="multiple" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="select.type">
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <xsd:element ref="option"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="select.attlist"/>
    </xsd:complexType>
    <xsd:element name="select" type="select.type"/>
    <!-- option: Selectable Choice  -->
    <xsd:attributeGroup name="option.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="selected" type="Text"/>
        <xsd:attribute name="value" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="option.type" mixed="true">
        <xsd:attributeGroup ref="option.attlist"/>
    </xsd:complexType>
    <xsd:element name="option" type="option.type"/>
    <!-- textarea: Multi-Line Text Field -->
    <xsd:attributeGroup name="textarea.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="rows" type="Number"/>
        <xsd:attribute name="cols" type="Number"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="textarea.type" mixed="true">
        <xsd:attributeGroup ref="textarea.attlist"/>
    </xsd:complexType>
    <xsd:element name="textarea" type="textarea.type"/>
</xsd:schema>

D.4.3.2. Forms

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd: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.
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    <!-- note that table.class was omitted from the DTD -->
    <xsd:group name="Table.class">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="table"/>
        </xsd:choice>
    </xsd:group>
    <!-- 
        BlkNoForm.mix includes all non-form block elements,
        plus Misc.class
    -->
    <xsd:group name="BlkNoForm.mix">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:group ref="Heading.class"/>
            <xsd:group ref="List.class"/>
            <xsd:group ref="BlkStruct.class"/>
            <xsd:group ref="BlkPhras.class"/>
            <xsd:group ref="BlkPres.class"/>
            <xsd:group ref="Table.class"/>
            <xsd:group ref="Block.extra"/>
            <xsd:group ref="Misc.class"/>
        </xsd:choice>
    </xsd:group>
    <!-- form: Form Element -->
    <xsd:attributeGroup name="form.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="action" type="URI"/>
        <xsd:attribute name="method" use="default" value="get">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="get"/>
                    <xsd:enumeration value="post"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="enctype" type="ContentType" use="fixed" value="application/x-www-form-urlencoded"/>
        <xsd:attribute name="accept-charset" type="Charsets"/>
        <xsd:attribute name="accept" type="ContentTypes"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="form.content">
        <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:group ref="BlkNoForm.mix"/>
            <xsd:element ref="fieldset"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="form.type">
        <xsd:group ref="form.content"/>
        <xsd:attributeGroup ref="form.attlist"/>
    </xsd:complexType>
    <xsd:element name="form" type="form.type"/>
    <!-- label: Form Field Label Text  -->
    <!-- 
        Each label must not contain more than ONE field
    -->
    <xsd:group name="label.content">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="input"/>
            <xsd:element ref="select"/>
            <xsd:element ref="textarea"/>
            <xsd:element ref="button"/>
            <xsd:group ref="InlStruct.class"/>
            <xsd:group ref="InlPhras.class"/>
            <xsd:group ref="I18n.class"/>
            <xsd:group ref="InlPres.class"/>
            <xsd:group ref="InlSpecial.class"/>
            <xsd:group ref="Inline.extra"/>
            <xsd:group ref="Misc.class"/>
        </xsd:choice>
    </xsd:group>
    <xsd:attributeGroup name="label.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="for" type="xsd:IDREF"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="label.type" mixed="true">
        <xsd:group ref="label.content"/>
        <xsd:attributeGroup ref="label.attlist"/>
    </xsd:complexType>
    <xsd:element name="label" type="label.type"/>
    <!-- input: Form Control -->
    <xsd:attribute name="type" use="default" value="text">
        <xsd:simpleType>
            <xsd:restriction base="xsd:NMTOKEN">
                <xsd:enumeration value="text"/>
                <xsd:enumeration value="password"/>
                <xsd:enumeration value="checkbox"/>
                <xsd:enumeration value="radio"/>
                <xsd:enumeration value="submit"/>
                <xsd:enumeration value="reset"/>
                <xsd:enumeration value="hidden"/>
                <xsd:enumeration value="image"/>
                <xsd:enumeration value="button"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
    <!-- 
        attribute 'name' required for all but submit & reset
    -->
    <xsd:attributeGroup name="input.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute ref="type"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="value" type="Text"/>
        <xsd:attribute name="checked" type="Text"/>
        <xsd:attribute name="disabled" type="Text"/>
        <xsd:attribute name="readonly" type="Text"/>
        <xsd:attribute name="size" type="Number"/>
        <xsd:attribute name="maxlength" type="Number"/>
        <xsd:attribute name="src" type="URI"/>
        <xsd:attribute name="alt" type="Text"/>
        <xsd:attribute name="tabindex" type="Number"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:attribute name="accept" type="ContentTypes"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <!-- input is EMPTY -->
    <xsd:complexType name="input.type">
        <xsd:attributeGroup ref="input.attlist"/>
    </xsd:complexType>
    <xsd:element name="input" type="input.type"/>
    <!-- select: Option Selector  -->
    <xsd:attributeGroup name="select.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="size" type="Number"/>
        <xsd:attribute name="multiple" type="Text"/>
        <xsd:attribute name="disabled" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="select.content">
        <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:element ref="optgroup"/>
            <xsd:element ref="option"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="select.type">
        <xsd:group ref="select.content"/>
        <xsd:attributeGroup ref="select.attlist"/>
    </xsd:complexType>
    <xsd:element name="select" type="select.type"/>
    <!-- optgroup: Option Group  -->
    <xsd:attributeGroup name="optgroup.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="disabled" type="Text"/>
        <xsd:attribute name="label" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="optgroup.content">
        <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:element ref="option"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="optgroup.type">
        <xsd:group ref="optgroup.content"/>
        <xsd:attributeGroup ref="select.attlist"/>
    </xsd:complexType>
    <xsd:element name="optgroup" type="optgroup.type"/>
    <!-- option: Selectable Choice  -->
    <xsd:attributeGroup name="option.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="selected" type="Text"/>
        <xsd:attribute name="disabled" type="Text"/>
        <xsd:attribute name="label" type="Text"/>
        <xsd:attribute name="value" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="option.type" mixed="true">
        <xsd:attributeGroup ref="option.attlist"/>
    </xsd:complexType>
    <xsd:element name="option" type="option.type"/>
    <!-- textarea: Multi-Line Text Field  -->
    <xsd:attributeGroup name="textarea.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="rows" type="Number"/>
        <xsd:attribute name="cols" type="Number"/>
        <xsd:attribute name="disabled" type="Text"/>
        <xsd:attribute name="readonly" type="Text"/>
        <xsd:attribute name="tabindex" type="Number"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="textarea.type" mixed="true">
        <xsd:attributeGroup ref="textarea.attlist"/>
    </xsd:complexType>
    <xsd:element name="textarea" type="textarea.type"/>
    <!-- fieldset: Form Control Group  -->
    <!-- 
        #PCDATA is to solve the mixed content problem,
        per specification only whitespace is allowed
    -->
    <xsd:attributeGroup name="fieldset.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="fieldset.type" mixed="true">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="legend"/>
            <xsd:group ref="Flow.mix"/>
        </xsd:choice>
        <xsd:attributeGroup ref="fieldset.attlist"/>
    </xsd:complexType>
    <xsd:element name="fieldset" type="fieldset.type"/>
    <!-- legend: Fieldset Legend  -->
    <xsd:attributeGroup name="legend.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="legend.type" mixed="true">
        <xsd:group ref="Inline.mix"/>
        <xsd:attributeGroup ref="legend.attlist"/>
    </xsd:complexType>
    <xsd:element name="legend" type="legend.type"/>
    <!-- button: Push Button  -->
    <xsd:attributeGroup name="button.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="value" type="Text"/>
        <xsd:attribute name="type" type="Number"/>
        <xsd:attribute name="type" use="default" value="submit">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="button"/>
                    <xsd:enumeration value="submit"/>
                    <xsd:enumeration value="reset"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="disabled" type="Text"/>
        <xsd:attribute name="tabindex" type="Number"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="button.content">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:group ref="BlkNoForm.mix"/>
            <xsd:group ref="InlStruct.class"/>
            <xsd:group ref="InlPhras.class"/>
            <xsd:group ref="InlPres.class"/>
            <xsd:group ref="BlkPres.class"/>
            <xsd:group ref="I18n.class"/>
            <xsd:group ref="InlSpecial.class"/>
            <xsd:group ref="Inline.extra"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="button.type" mixed="true">
        <xsd:group ref="button.content"/>
        <xsd:attributeGroup ref="button.attlist"/>
    </xsd:complexType>
    <xsd:element name="button" type="button.type"/>
</xsd:schema>

D.4.4. Tables

D.4.4.1. Basic Tables

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

     <xsd: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.
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

</xsd:annotation>
    
    <!-- 
        horizontal alignment attributes for cell contents
    -->

    <xsd:attributeGroup name="CellHAlign.attrib">
        <xsd:attribute name="align">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="left"/>
                    <xsd:enumeration value="center"/>
                    <xsd:enumeration value="right"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    
    <!-- 
        vertical alignment attributes for cell contents
    -->

    <xsd:attributeGroup name="CellVAlign.attrib">
        <xsd:attribute name="align">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="top"/>
                    <xsd:enumeration value="middle"/>
                    <xsd:enumeration value="bottom"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    
    <!-- 
        scope is simpler than axes attribute for common tables
    -->

    <xsd:attributeGroup name="scope.attrib">
        <xsd:attribute name="align">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="row"/>
                    <xsd:enumeration value="col"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    
    <!-- table: Table Element  -->

    <!-- table: Table Element  -->
    <xsd:attributeGroup name="table.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="summary" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:group name="table.content">
        <xsd:sequence>
            <xsd:element ref="caption" minOccurs="0" maxOccurs="1"/>
            <xsd:element ref="tr" minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
    </xsd:group>
    
    <xsd:complexType name="table.type" >
        <xsd:group ref="table.content"/>
        <xsd:attributeGroup ref="table.attlist"/>
    </xsd:complexType>
    <xsd:element name="table" type="table.type"/>

    <!-- caption: Table Caption -->

    <xsd:attributeGroup name="caption.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="summary" type="Text"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:complexType name="caption.type" mixed="true" >
        <xsd:group ref="Inline.mix"/>
        <xsd:attributeGroup ref="caption.attlist"/>
    </xsd:complexType>

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

    <!-- tr: Table Row  -->

    <xsd:attributeGroup name="tr.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="tr.content">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element ref="th"/>
            <xsd:element ref="td"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="tr.type">
        <xsd:group ref="tr.content"/>
        <xsd:attributeGroup ref="tr.attlist"/>
    </xsd:complexType>
    <xsd:element name="tr" type="tr.type"/>

    <!-- th: Table Header Cell  -->
    <!-- 
        th is for header cells, td for data,
        but for cells acting as both use td
    -->
    <xsd:attributeGroup name="th.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="abbr" type="Text"/>
        <xsd:attribute name="axis" type="Text"/>
        <xsd:attribute name="headers" type="xsd:IDREFS"/>
        <xsd:attributeGroup ref="scope.attrib"/>
        <xsd:attribute name="rowspan" type="Number" use="default" value="1"/>
        <xsd:attribute name="colspan" type="Number" use="default" value="1"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="th.type" mixed="true">
        <xsd:group ref="FlowNoTable.mix"/>
        <xsd:attributeGroup ref="th.attlist"/>
    </xsd:complexType>
    <xsd:element name="th" type="th.type"/>

    <!-- td: Table Data Cell ... -->

    <!-- td: Table Data Cell -->
    <xsd:attributeGroup name="td.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="abbr" type="Text"/>
        <xsd:attribute name="axis" type="Text"/>
        <xsd:attribute name="headers" type="xsd:IDREFS"/>
        <xsd:attributeGroup ref="scope.attrib"/>
        <xsd:attribute name="rowspan" type="Number" use="default" value="1"/>
        <xsd:attribute name="colspan" type="Number" use="default" value="1"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="td.type" mixed="true">
        <xsd:group ref="FlowNoTable.mix"/>
        <xsd:attributeGroup ref="td.attlist"/>
    </xsd:complexType>
    <xsd:element name="td" type="td.type"/>

</xsd:schema>

D.4.4.2. Tables

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block
* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd: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.
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    <!-- attribute groups -->
    <!-- 
        The frame attribute specifies which parts of the frame around
        the table should be rendered. The values are not the same as
        CALS to avoid a name clash with the valign attribute.
    -->
    <xsd:attributeGroup name="frame.attrib">
        <xsd:attribute name="frame">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="void"/>
                    <xsd:enumeration value="above"/>
                    <xsd:enumeration value="below"/>
                    <xsd:enumeration value="hsides"/>
                    <xsd:enumeration value="lhs"/>
                    <xsd:enumeration value="rhs"/>
                    <xsd:enumeration value="vsides"/>
                    <xsd:enumeration value="box"/>
                    <xsd:enumeration value="border"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    <!-- 
        The rules attribute defines which rules to draw between cells:
        If rules is absent then assume:
       "none" if border is absent or border="0" otherwise "all"
    -->
    <xsd:attributeGroup name="rules.attrib">
        <xsd:attribute name="rules">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="none"/>
                    <xsd:enumeration value="groups"/>
                    <xsd:enumeration value="rows"/>
                    <xsd:enumeration value="cols"/>
                    <xsd:enumeration value="all"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    <!-- 
        vertical alignment attribute for cell contents
    -->
    <xsd:attributeGroup name="CellVAlign.attrib">
        <xsd:attribute name="valign">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="top"/>
                    <xsd:enumeration value="middle"/>
                    <xsd:enumeration value="bottom"/>
                    <xsd:enumeration value="baseline"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    <!-- 
        horizontal alignment attributes for cell contents
    -->
    <xsd:attributeGroup name="CellHAlign.attrib">
        <xsd:attribute name="align">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="left"/>
                    <xsd:enumeration value="center"/>
                    <xsd:enumeration value="right"/>
                    <xsd:enumeration value="justify"/>
                    <xsd:enumeration value="char"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="char" type="Character"/>
        <xsd:attribute name="charoff" type="Length"/>
    </xsd:attributeGroup>
    <!-- 
        scope is simpler than axes attribute for common tables
    -->
    <xsd:attributeGroup name="scope.attrib">
        <xsd:attribute name="scope">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="row"/>
                    <xsd:enumeration value="col"/>
                    <xsd:enumeration value="rowgroup"/>
                    <xsd:enumeration value="colgroup"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
    <!-- 
        Note that these elements are not defined in the same order 
        as in the DTD
    -->
    <!-- td: Table Data Cell -->
    <xsd:attributeGroup name="td.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="abbr" type="Text"/>
        <xsd:attribute name="axis" type="Text"/>
        <xsd:attribute name="headers" type="xsd:IDREFS"/>
        <xsd:attributeGroup ref="scope.attrib"/>
        <xsd:attribute name="rowspan" type="Number" use="default" value="1"/>
        <xsd:attribute name="colspan" type="Number" use="default" value="1"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="td.type" mixed="true">
        <xsd:group ref="Flow.mix"/>
        <xsd:attributeGroup ref="td.attlist"/>
    </xsd:complexType>
    <xsd:element name="td" type="td.type"/>
    <!-- th: Table Header Cell  -->
    <!-- 
        th is for header cells, td for data,
        but for cells acting as both use td
    -->
    <xsd:attributeGroup name="th.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="abbr" type="Text"/>
        <xsd:attribute name="axis" type="Text"/>
        <xsd:attribute name="headers" type="xsd:IDREFS"/>
        <xsd:attributeGroup ref="scope.attrib"/>
        <xsd:attribute name="rowspan" type="Number" use="default" value="1"/>
        <xsd:attribute name="colspan" type="Number" use="default" value="1"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="th.type" mixed="true">
        <xsd:group ref="Flow.mix"/>
        <xsd:attributeGroup ref="th.attlist"/>
    </xsd:complexType>
    <xsd:element name="th" type="th.type"/>
    <!-- tr: Table Row  -->
    <xsd:attributeGroup name="tr.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="tr.content">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element ref="th"/>
            <xsd:element ref="td"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="tr.type">
        <xsd:group ref="tr.content"/>
        <xsd:attributeGroup ref="tr.attlist"/>
    </xsd:complexType>
    <xsd:element name="tr" type="tr.type"/>
    <!-- col: Table Column  -->
    <!-- 
        col elements define the alignment properties for
         cells in one or more columns.
    
         The width attribute specifies the width of the
         columns, e.g.
    
           width="64"        width in screen pixels
           width="0.5*"      relative width of 0.5
    
         The span attribute causes the attributes of one
         col element to apply to more than one column.
    -->
    <xsd:attributeGroup name="col.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="span" type="Number" use="default" value="1"/>
        <xsd:attribute name="width" type="MultiLength"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <!-- col is EMPTY -->
    <xsd:complexType name="col.type">
        <xsd:attributeGroup ref="col.attlist"/>
    </xsd:complexType>
    <xsd:element name="col" type="col.type"/>
    <!-- colgroup: Table Column Group -->
    <!-- 
        colgroup groups a set of col elements. It allows you
        to group several semantically-related columns together.
    -->
    <xsd:attributeGroup name="colgroup.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="span" type="Number" use="default" value="1"/>
        <xsd:attribute name="width" type="MultiLength"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="colgroup.content">
        <xsd:sequence minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="col"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="colgroup.type">
        <xsd:group ref="colgroup.content"/>
        <xsd:attributeGroup ref="colgroup.attlist"/>
    </xsd:complexType>
    <xsd:element name="colgroup" type="colgroup.type"/>
    <!-- tbody: Table Body  -->
    <!-- 
        Use multiple tbody sections when rules are needed
        between groups of table rows.
    -->
    <xsd:attributeGroup name="tbody.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="tbody.content">
        <xsd:sequence maxOccurs="unbounded">
            <xsd:element ref="tr"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="tbody.type">
        <xsd:group ref="tbody.content"/>
        <xsd:attributeGroup ref="tbody.attlist"/>
    </xsd:complexType>
    <xsd:element name="tbody" type="tbody.type"/>
    <!-- tfoot: Table Footer  -->
    <!-- 
        Use tfoot to duplicate footers when breaking table
        across page boundaries, or for static footers when
        tbody sections are rendered in scrolling panel.
    -->
    <xsd:attributeGroup name="tfoot.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="tfoot.content">
        <xsd:sequence maxOccurs="unbounded">
            <xsd:element ref="tr"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="tfoot.type">
        <xsd:group ref="tfoot.content"/>
        <xsd:attributeGroup ref="tfoot.attlist"/>
    </xsd:complexType>
    <xsd:element name="tfoot" type="tfoot.type"/>
    <!-- thead: Table Header  -->
    <!-- 
        Use thead to duplicate headers when breaking table
        across page boundaries, or for static headers when
        tbody sections are rendered in scrolling panel.
    -->
    <xsd:attributeGroup name="thead.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attributeGroup ref="CellHAlign.attrib"/>
        <xsd:attributeGroup ref="CellVAlign.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="thead.content">
        <xsd:sequence maxOccurs="unbounded">
            <xsd:element ref="tr"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="thead.type">
        <xsd:group ref="thead.content"/>
        <xsd:attributeGroup ref="thead.attlist"/>
    </xsd:complexType>
    <xsd:element name="thead" type="thead.type"/>
    <!-- caption: Table Caption  -->
    <xsd:attributeGroup name="caption.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="caption.content">
        <xsd:sequence maxOccurs="unbounded">
            <xsd:element ref="tr"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="caption.type" mixed="true">
        <xsd:group ref="Inline.mix"/>
        <xsd:attributeGroup ref="caption.attlist"/>
    </xsd:complexType>
    <xsd:element name="caption" type="caption.type"/>
    <!-- table: Table Element  -->
    <xsd:attributeGroup name="table.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="summary" type="Text"/>
        <xsd:attribute name="width" type="Length"/>
        <xsd:attribute name="border" type="Pixels"/>
        <xsd:attributeGroup ref="frame.attrib"/>
        <xsd:attributeGroup ref="rules.attrib"/>
        <xsd:attribute name="cellspacing" type="Length"/>
        <xsd:attribute name="cellpadding" type="Length"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="table.content">
        <xsd:sequence>
            <xsd:element ref="caption" minOccurs="0"/>
            <xsd:choice>
                <xsd:element ref="col" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="colgroup" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:choice>
            <xsd:choice>
                <xsd:sequence>
                    <xsd:element ref="thead" minOccurs="0"/>
                    <xsd:element ref="tfoot" minOccurs="0"/>
                    <xsd:element ref="tbody" maxOccurs="unbounded"/>
                </xsd:sequence>
                <xsd:choice>
                    <xsd:element ref="tr" maxOccurs="unbounded"/>
                </xsd:choice>
            </xsd:choice>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="table.type" mixed="true">
        <xsd:group ref="table.content"/>
        <xsd:attributeGroup ref="table.attlist"/>
    </xsd:complexType>
    <xsd:element name="table" type="table.type"/>
</xsd:schema>

D.4.5. Image

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

    <xsd:documentation>
/**
* Images
*
*        img
*
*     This module provides markup to support basic image embedding.
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

</xsd: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.
    -->
    <xsd:attributeGroup name="image.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="src" type="URI" use="required"/>
        <xsd:attribute name="alt" type="Text" use="required"/>
        <xsd:attribute name="longdesc" type="URI"/>
        <xsd:attribute name="height" type="Length"/>
        <xsd:attribute name="width" type="Length"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <!-- img is EMPTY -->
    <xsd:complexType name="image.type">
        <xsd:attributeGroup ref="image.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="img" type="image.type"/>
</xsd:schema>

D.4.6. Client-side Image Map

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" 
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd" 
            elementFormDefault="unqualified" 
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd: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
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    <!-- area -->
    <xsd:attribute name="shape" use="default" value="rect">
        <xsd:simpleType>
            <xsd:restriction base="xsd:NMTOKEN">
                <xsd:enumeration value="rect"/>
                <xsd:enumeration value="circle"/>
                <xsd:enumeration value="poly"/>
                <xsd:enumeration value="default"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
    <xsd:attributeGroup name="area.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="href" type="URI"/>
        <xsd:attribute ref="shape"/>
        <xsd:attribute name="coords" type="Text"/>
        <xsd:attribute name="nohref" type="Text"/>
        <xsd:attribute name="alt" type="Text"/>
        <xsd:attribute name="tabindex" type="Number"/>
        <xsd:attribute name="accesskey" type="Character"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <!-- area is EMPTY -->
    <xsd:complexType name="area.type">
        <xsd:attributeGroup ref="area.attlist"/>
    </xsd:complexType>
    <xsd:element name="area" type="area.type"/>
    <!-- map -->
    <xsd:attributeGroup name="map.attlist">
        <xsd:attributeGroup ref="id"/>
        <xsd:attributeGroup ref="class"/>
        <xsd:attributeGroup ref="title"/>
        <xsd:attributeGroup ref="Core.extra.attrib"/>
        <xsd:attributeGroup ref="I18n.attrib"/>
        <xsd:attributeGroup ref="Events.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="map.content">
        <xsd:choice maxOccurs="unbounded">
            <xsd:group ref="Block.mix"/>
            <xsd:element ref="area" maxOccurs="unbounded"/>
        </xsd:choice>
    </xsd:group>
    <xsd:complexType name="map.type">
        <xsd:group ref="map.content"/>
        <xsd:attributeGroup ref="area.attlist"/>
    </xsd:complexType>
    <xsd:element name="map" type="map.type"/>
    
        <!-- modify anchor attribute definition list -->
    <xsd:attributeGroup name="a.csim.attlist">
        <xsd:attribute name="shape" type="Text" use="default" value="rect"/>
        <xsd:attribute name="coords" type="Text"/>
    </xsd:attributeGroup>
    
    <xsd:redefine schemaLocation="../core/xhtml-hypertext-1.xsd">
        <xsd:attributeGroup name="a.attlist">
            <xsd:extension base="a.attlist">
                <xsd:attributeGroup ref="a.csim.attlist"/>
            </xsd:extension>
        </xsd:attributeGroup>
    </xsd:redefine>
    
    <!-- modify img attribute definition list -->
    <xsd:attributeGroup name="img.csim.attlist">
        <xsd:attribute name="usemap" type="xsd:IDREF"/>
    </xsd:attributeGroup>
    
    <xsd:redefine schemaLocation="xhtml-image-1.xsd">
        <xsd:attributeGroup name="img.attlist">
            <xsd:extension base="img.attlist">
                <xsd:attributeGroup ref="img.csim.attlist"/>
            </xsd:extension>
        </xsd:attributeGroup>
    </xsd:redefine>

    <!-- modify form input attribute definition list -->
    <xsd:attributeGroup name="input.csim.attlist">
        <xsd:attribute name="usemap" type="xsd:IDREF"/>
    </xsd:attributeGroup>
    
        
    <xsd:redefine schemaLocation="xhtml-form-1.xsd">
        <xsd:attributeGroup name="input.attlist">
            <xsd:extension base="input.attlist">
                <xsd:attributeGroup ref="input.csim.attlist"/>
            </xsd:extension>
        </xsd:attributeGroup>
    </xsd:redefine>
    
    <!-- modify object attribute definition list -->
    <xsd:attributeGroup name="object.csim.attlist">
        <xsd:attribute name="usemap" type="xsd:IDREF"/>
    </xsd:attributeGroup>
    
        
    <xsd:redefine schemaLocation="xhtml-object-1.xsd">
        <xsd:attributeGroup name="object.attlist">
            <xsd:extension base="object.attlist">
                <xsd:attributeGroup ref="object.csim.attlist"/>
            </xsd:extension>
        </xsd:attributeGroup>
    </xsd:redefine>
</xsd:schema>

D.4.7. Server-side Image Map

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
        </xsd:documentation>
        <xsd:documentation> 
/**
*
* Versioning block
* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>
        <xsd:documentation>
/**
* Server-side Image Maps
*
*     This adds the 'ismap' attribute to the img element to 
*     support server-side processing of a user selection.
*
*/
        </xsd:documentation>
    </xsd:annotation>
    <xsd:attributeGroup  name="img.ssimap.attlist" >
        <xsd:attribute name="ismap"/>
    </xsd:attributeGroup>
    <xsd:redefine schemaLocation="xhtml-image-1.xsd">
    
        <xsd:attributeGroup name="img.attlist">
        
            <xsd:extension base="img.attlist">
            
                <xsd:attributeGroup ref="img.ssimap.attlist" />
                
            </xsd:extension>
            
        </xsd:attributeGroup>
    
    </xsd:redefine>
</xsd:schema>

D.4.8. Applet

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified"
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

     <xsd: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.
*
*/
        </xsd:documentation>
    
<xsd:documentation source="xhtml-copyright-1.txt"/>

    </xsd:annotation>
    
    <xsd:attributeGroup name="applet.attlist">
        <xsd:attributeGroup ref="Core.attrib"/>
        <xsd:attribute name="alt" type="Text"/>
        <xsd:attribute name="archive" type="URI"/>
        <xsd:attribute name="code" type="URI"/>
        <xsd:attribute name="codebase" type="URI"/>
        <xsd:attribute name="object" type="URI"/>
        <xsd:attribute name="width" type="Length"/>
        <xsd:attribute name="height" type="Length"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    <xsd:group name="applet.content">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="param"/>
            <xsd:group ref="Flow.mix"/>
        </xsd:choice>
    </xsd:group>
    
    <xsd:complexType name="applet.type">
        <xsd:group ref="applet.content"/>
        <xsd:attributeGroup ref="applet.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="applet" type="applet.type"/>
</xsd:schema>

D.4.9. Object

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
<xsd:annotation>
     <xsd: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"
*
*/
  </xsd:documentation>

     <xsd:documentation>
/**
*
* Versioning block

* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>

    <xsd:documentation>
/**
* Embedded Objects
*
*        object
*
*     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.
*
*/
        </xsd:documentation>
        
<xsd:documentation source="xhtml-copyright-1.txt"/>

</xsd:annotation>

    <xsd:attributeGroup name="object.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:attribute name="declare" type="Text"/>
        <xsd:attribute name="classid" type="URI"/>
        <xsd:attribute name="codebase" type="URI"/>
        <xsd:attribute name="data" type="URI"/>
        <xsd:attribute name="type" type="ContentType"/>
        <xsd:attribute name="codetype" type="ContentType"/>
        <xsd:attribute name="archive" type="URIs"/>
        <xsd:attribute name="standby" type="Text"/>
        <xsd:attribute name="height" type="Length"/>
        <xsd:attribute name="width" type="Length"/>
        <xsd:attribute name="name" type="Text"/>
        <xsd:attribute name="tabindex" type="Number"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    
    
    <xsd:group name="object.content">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:group ref="Flow.mix"/>
            <xsd:element ref="param"/>
        </xsd:choice>
    </xsd:group>
    
    <xsd:complexType name="object.type" mixed="true">
        <xsd:group ref="object.content" />
        <xsd:attributeGroup ref="object.attlist"/>
    </xsd:complexType>
    
    <xsd:element name="object" type="object.type"/>
</xsd:schema>

D.4.10. Frames

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema 
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
elementFormDefault="unqualified" version="1.1">
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block
* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
* Frames 
*
*        frameset, frame, noframes
*
*     This module declares frame-related element types and attributes.
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    <!-- comma-separated list of MultiLength -->
    <xsd:simpleType name="MultiLengths">
        <xsd:restriction base="xsd:CDATA"/>
    </xsd:simpleType>
    <!-- 
        The content model for XHTML documents depends on whether 
        the <head> is followed by a <frameset> or <body> element. 
    -->
    <!-- frameset -->
    <xsd:attributeGroup name="frameset.attlist">
        <xsd:attributeGroup ref="Core.attrib"/>
        <xsd:attribute name="rows" type="MultiLengths"/>
        <xsd:attribute name="cols" type="MultiLengths"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:group name="frameset.content">
        <xsd:sequence>
            <xsd:choice minOccurs="1" maxOccurs="unbounded">
                <xsd:element ref="frameset"/>
                <xsd:element ref="frame"/>
            </xsd:choice>
            <xsd:element ref="noframes" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="frameset.type" mixed="true">
        <xsd:group ref="frameset.content"/>
        <xsd:attributeGroup ref="frameset.attlist"/>
    </xsd:complexType>
    <xsd:element name="frameset" type="frameset.type"/>
    <!-- frame -->
    <!-- 
        reserved frame names start with "_" 
        otherwise starts with letter 
    -->
    <xsd:attributeGroup name="frame.attlist">
        <xsd:attributeGroup ref="Core.attrib"/>
        <xsd:attribute name="longdesc" type="URI"/>
        <xsd:attribute name="src" type="URI"/>
        <xsd:attribute name="frameborder" use="default" value="1">
            <xsd:simpleType>
                <xsd:restriction base="xsd:nonNegativeInteger">
                    <xsd:enumeration value="1"/>
                    <xsd:enumeration value="0"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="marginwidth" type="Pixels"/>
        <xsd:attribute name="marginheight" type="Pixels"/>
        <xsd:attribute name="noresize" type="Text"/>
        <xsd:attribute name="scrolling" use="default" value="auto">
            <xsd:simpleType>
                <xsd:restriction base="xsd:NMTOKEN">
                    <xsd:enumeration value="yes"/>
                    <xsd:enumeration value="no"/>
                    <xsd:enumeration value="auto"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <!-- frame is EMPTY -->
    <xsd:complexType name="frame.type">
        <xsd:attributeGroup ref="frame.attlist"/>
    </xsd:complexType>
    <xsd:element name="frame" type="frame.type"/>
    <!-- changes to other declarations  -->
    <!-- redefine content model for html element,
     substituting frameset for body  -->
    <xsd:redefine schemaLocation="../../../core/xhtml-struct-1.xsd">
        <xsd:group name="html.content">
            <xsd:choice minOccurs="1" maxOccurs="unbounded">
                <xsd:element ref="head" minOccurs="0" maxOccurs="1"/>
                <xsd:element ref="frameset"/>
            </xsd:choice>
        </xsd:group>
    </xsd:redefine>
    <!-- noframes -->
    <!-- alternate content container for non frame-based rendering -->
    <xsd:group name="noframes.content">
        <xsd:sequence minOccurs="0" maxOccurs="1">
            <xsd:element ref="body"/>
        </xsd:sequence>
    </xsd:group>
    <xsd:attributeGroup name="noframes.attlist">
        <xsd:attributeGroup ref="Common.attrib"/>
        <xsd:anyAttribute namespace="##other"/>
    </xsd:attributeGroup>
    <xsd:complexType name="noframes.type" mixed="true">
        <xsd:group ref="noframes.content"/>
        <xsd:attributeGroup ref="noframes.attlist"/>
    </xsd:complexType>
    <xsd:element name="noframes" type="noframes.type"/>
</xsd:schema>

D.4.11. Target

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"  
            targetNamespace="http://www.w3.org/1999/xhtml" 
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
            xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema http://www.w3.org/2000/10/XMLSchema.xsd"
            elementFormDefault="unqualified" 
            version="1.1"
>
    <xsd:annotation>
        <xsd: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"
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
*
* Versioning block
* Author: Daniel Austin
* $RCSfile: schema_module_defs.html,v $
* $Revision: 1.1 $
* $Date: 2001/03/22 02:11:41 $
* $Author: shane $
* (remove the NO below to see the full revision log)
* Log: $NOLog: $
*
*/
  </xsd:documentation>
        <xsd:documentation>
/**
* Target 
*
*   target
*
*
*     This module declares the 'target' attribute used for opening windows
*
*/
        </xsd:documentation>
        <xsd:documentation source="xhtml-copyright-1.txt"/>
    </xsd:annotation>
    
    <!-- render in this frame -->
    <xsd:simpleType name="FrameTarget">
        <xsd:restriction base="xsd:CDATA"/>
    </xsd:simpleType>
    
    <!-- add 'target' attribute to 'a' element -->
    <xsd:attributeGroup name="a.target.attlist">
        <xsd:attribute name="target" type="FrameTarget"/>
    </xsd:attributeGroup>
    <xsd:redefine schemaLocation="../../req/core/xhtml-hypertext-1.xsd">
    
        <xsd:attributeGroup name="a.attlist">
        
            <xsd:extension base="a.attlist">
            
                <xsd:attributeGroup ref="a.target.attlist" />
                
            </xsd:extension>
            
        </xsd:attributeGroup>
    
    </xsd:redefine>
    <!-- add 'target' attribute to 'area' element -->
    <xsd:attributeGroup name="area.target.attlist">
        <xsd:attribute name="target" type="FrameTarget"/>
    </xsd:attributeGroup>
    <xsd:redefine schemaLocation="xhtml-csismap-1.xsd">
    
        <xsd:attributeGroup name="area.attlist">
        
            <xsd:extension base="area.attlist">
            
                <xsd:attributeGroup ref="area.target.attlist" />
                
            </xsd:extension>
            
        </xsd:attributeGroup>
    
    </xsd:redefine>
    
    <!-- add 'target' attribute to 'link' element -->
    <xsd:attributeGroup name="link.target.attlist">
        <xsd:attribute name="target" type="FrameTarget"/>
    </xsd:attributeGroup>
    <xsd:redefine schemaLocation="xhtml-link-1.xsd">
    
        <xsd:attributeGroup name="link.attlist">
        
            <xsd:extension base="link.attlist">
            
                <xsd:attributeGroup ref="link.target.attlist" /