Contents
This appendix is normative.
This section contains the driver for the XHTML 1.1 document type implementation as an XML Schema. It relies upon XHTML module implementations defined in [XHTMLMOD] and in [RUBY].
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
xmlns="http://www.w3.org/1999/xhtml"
blockDefault="#all">
<xs:annotation>
<xs:documentation>
This is the XML Schema driver for XHTML 1.1.
Please use this namespace for XHTML elements:
"http://www.w3.org/1999/xhtml"
$Id: xhtml11_schema.html,v 1.1 2007/02/15 23:14:55 jean-gui Exp $
</xs:documentation>
<xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<xs:annotation>
<xs:documentation>
This is XHTML, a reformulation of HTML as a modular XML application
The Extensible HyperText Markup Language (XHTML)
Copyright ©1998-2007 World Wide Web Consortium
(Massachusetts Institute of Technology, European Research Consortium
for Informatics and Mathematics, Keio University).
All Rights Reserved.
Permission to use, copy, modify and distribute the XHTML Schema
modules and their accompanying xs:documentation for any purpose
and without fee is hereby granted in perpetuity, provided that the above
copyright notice and this paragraph appear in all copies.
The copyright holders make no representation about the suitability of
these XML Schema modules for any purpose.
They are provided "as is" without expressed or implied warranty.
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>
This is the Schema Driver file for XHTML1.1
Document Type
This schema
+ imports external schemas (xml.xsd)
+ refedines (and include)s schema modules for XHTML1.1 Document Type.
+ includes Schema for Named content model for the
XHTML1.1 Document Type
XHTML1.1 Document Type includes the following Modules
XHTML Core modules (Required for XHTML Family Conformance)
+ text
+ hypertext
+ lists
+ structure
Other XHTML modules
+ Edit
+ Bdo
+ Presentational
+ Link
+ Meta
+ Base
+ Scripting
+ Style
+ Image
+ Applet
+ Object
+ Param (Applet/Object modules require Param Module)
+ Tables
+ Forms
+ Client side image maps
+ Server side image maps
+ Ruby
</xs:documentation>
</xs:annotation>
<xs:import
namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd">
<xs:annotation>
<xs:documentation>
This import brings in the XML namespace attributes
The XML attributes are used by various modules.
</xs:documentation>
</xs:annotation>
</xs:import>
<xs:include
schemaLocation="xhtml11-model-1.xsd">
<xs:annotation>
<xs:documentation>
Document Model module for the XHTML1.1 Document Type.
This schema file defines all named models used by XHTML
Modularization Framework for XHTML1.1 Document Type
</xs:documentation>
</xs:annotation>
</xs:include>
<xs:include
schemaLocation="xhtml11-modules-1.xsd">
<xs:annotation>
<xs:documentation>
Schema that includes all modules (and redefinitions)
for XHTML1.1 Document Type.
</xs:documentation>
</xs:annotation>
</xs:include>
</xs:schema>
XHTML Family implementations using XML Schema are required to provide their own schema module that imports the required modules from XHTML Modularization.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" >
<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
schemaLocation="xhtml-datatypes-1.xsd" />
<xs:annotation>
<xs:documentation>
This schema includes all modules for XHTML1.1 Document Type.
$Id: xhtml11_schema.html,v 1.1 2007/02/15 23:14:55 jean-gui Exp $
</xs:documentation>
<xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<xs:annotation>
<xs:documentation>
This schema includes all modules (and redefinitions)
for XHTML1.1 Document Type.
XHTML1.1 Document Type includes the following Modules
XHTML Core modules (Required for XHTML Family Conformance)
+ text
+ hypertext
+ lists
+ structure
Other XHTML modules
+ Edit
+ Bdo
+ Presentational
+ Link
+ Meta
+ Base
+ Scripting
+ Style
+ Image
+ Applet
+ Object
+ Param (Applet/Object modules require Param Module)
+ Tables
+ Forms
+ Client side image maps
+ Server side image maps
</xs:documentation>
</xs:annotation>
<xs:include schemaLocation="xhtml-framework-1.xsd">
<xs:annotation>
<xs:documentation>
Schema Framework Component Modules:
+ notations
+ datatypes
+ common attributes
+ character entities
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-text-1.xsd">
<xs:annotation>
<xs:documentation>
Text module
The Text module includes declarations for all core
text container elements and their attributes.
+ block phrasal
+ block structural
+ inline phrasal
+ inline structural
Elements defined here:
* address, blockquote, pre, h1, h2, h3, h4, h5, h6
* div, p
* abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
* br, span
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_textmodule"/>
</xs:annotation>
</xs:include>
<xs:redefine schemaLocation="xhtml-hypertext-1.xsd">
<xs:annotation>
<xs:documentation>
Hypertext module
Elements defined here:
* a
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_hypertextmodule"/>
</xs:annotation>
<xs:attributeGroup name="xhtml.a.attlist">
<xs:attributeGroup ref="xhtml.a.attlist"/>
<xs:attributeGroup ref="xhtml.a.csim.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Client Side Image Map Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.a.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by XHTML Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
</xs:redefine>
<xs:include schemaLocation="xhtml-list-1.xsd">
<xs:annotation>
<xs:documentation>
Lists module
Elements defined here:
* dt, dd, dl, ol, ul, li
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_listmodule"/>
</xs:annotation>
</xs:include>
<xs:redefine schemaLocation="xhtml-struct-1.xsd">
<xs:annotation>
<xs:documentation>
Structural module
Elements defined here:
* title, head, body, html
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_structuremodule"/>
</xs:annotation>
<xs:attributeGroup name="xhtml.version.attrib">
<xs:annotation>
<xs:documentation>
Redefinition by the XHTML11 Markup (for value of version attr)
</xs:documentation>
</xs:annotation>
<xs:attribute name="version" type="xh11d:FPI" fixed="-//W3C//DTD XHTML 1.1//EN"/>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.body.attlist">
<xs:attributeGroup ref="xhtml.body.attlist">
<xs:annotation>
<xs:documentation>
Original Body Attlist
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.body.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by XHTML Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
</xs:redefine>
<xs:include schemaLocation="xhtml-edit-1.xsd">
<xs:annotation>
<xs:documentation>
Edit module
Elements defined here:
* ins, del
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_editmodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-bdo-1.xsd">
<xs:annotation>
<xs:documentation>
Bidirectional element module
Elements defined here:
* bdo
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_bdomodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-pres-1.xsd">
<xs:annotation>
<xs:documentation>
Presentational module
Elements defined here:
* hr, b, big, i, small,sub, sup, tt
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_presentationmodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-link-1.xsd">
<xs:annotation>
<xs:documentation>
Link module
Elements defined here:
* link
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_linkmodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-meta-1.xsd">
<xs:annotation>
<xs:documentation>
Meta module
Elements defined here:
* meta
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_metamodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-base-1.xsd">
<xs:annotation>
<xs:documentation>
Base module
Elements defined here:
* base
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_basemodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-script-1.xsd">
<xs:annotation>
<xs:documentation>
Scripting module
Elements defined here:
* script, noscript
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_scriptmodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-style-1.xsd">
<xs:annotation>
<xs:documentation>
Style module
Elements defined here:
* style
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_stylemodule"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-inlstyle-1.xsd">
<xs:annotation>
<xs:documentation>
Style attribute module
Attribute defined here:
* style
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_styleattributemodule"/>
</xs:annotation>
</xs:include>
<xs:redefine schemaLocation="xhtml-image-1.xsd">
<xs:annotation>
<xs:documentation>
Image module
Elements defined here:
* img
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_imagemodule"/>
</xs:annotation>
<xs:attributeGroup name="xhtml.img.attlist">
<xs:attributeGroup ref="xhtml.img.attlist">
<xs:annotation>
<xs:documentation>
Original Image Attributes (in Image Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.img.csim.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Client Side Image Map Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.img.ssimap.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Server Side Image Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
</xs:redefine>
<xs:redefine schemaLocation="xhtml-csismap-1.xsd">
<xs:annotation>
<xs:documentation>
Client-side mage maps module
Elements defined here:
* area, map
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_imapmodule"/>
</xs:annotation>
<xs:attributeGroup name="xhtml.area.attlist">
<xs:attributeGroup ref="xhtml.area.attlist">
<xs:annotation>
<xs:documentation>
Original Area Attributes (in CSI Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.area.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Events Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
</xs:redefine>
<xs:include schemaLocation="xhtml-ssismap-1.xsd">
<xs:annotation>
<xs:documentation>
Server-side image maps module
Attributes defined here:
* ismap on img
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_servermapmodule"/>
</xs:annotation>
</xs:include>
<xs:redefine schemaLocation="xhtml-object-1.xsd">
<xs:annotation>
<xs:documentation>
Object module
Elements defined here:
* object
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_objectmodule"/>
</xs:annotation>
<xs:attributeGroup name="xhtml.object.attlist">
<xs:attributeGroup ref="xhtml.object.attlist">
<xs:annotation>
<xs:documentation>
Original Object Attlist
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.object.csim.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Client Image Map Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
</xs:redefine>
<xs:include schemaLocation="xhtml-param-1.xsd">
<xs:annotation>
<xs:documentation>
Param module
Elements defined here:
* param
</xs:documentation>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-table-1.xsd">
<xs:annotation>
<xs:documentation>
Tables module
Elements defined here:
* table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_tablemodule"/>
</xs:annotation>
</xs:include>
<xs:redefine schemaLocation="xhtml-form-1.xsd">
<xs:annotation>
<xs:documentation>
Forms module
Elements defined here:
* form, label, input, select, optgroup, option,
* textarea, fieldset, legend, button
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_extformsmodule"/>
</xs:annotation>
<xs:attributeGroup name="xhtml.form.attlist">
<xs:annotation>
<xs:documentation>
Changes to XHTML Form Attlist
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="xhtml.form.attlist">
<xs:annotation>
<xs:documentation>
Original Form Attributes (declared in Forms Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.form.events.attlist">
<xs:annotation>
<xs:documentation>
XHTML Events Module - Attribute additions
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.input.attlist">
<xs:annotation>
<xs:documentation>
Changes to XHTML Form Input Element
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="xhtml.input.attlist">
<xs:annotation>
<xs:documentation>
Original Input Attributes (in Forms Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.input.csim.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Client Side Image Map Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.input.ssimap.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Server Side Image Map Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.input.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.label.attlist">
<xs:attributeGroup ref="xhtml.label.attlist">
<xs:annotation>
<xs:documentation>
Original Label Attributes (in Forms Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.label.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.select.attlist">
<xs:attributeGroup ref="xhtml.select.attlist">
<xs:annotation>
<xs:documentation>
Original Select Attributes (in Forms Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.select.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.textarea.attlist">
<xs:attributeGroup ref="xhtml.textarea.attlist">
<xs:annotation>
<xs:documentation>
Original TextArea Attributes (in Forms Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.textarea.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.button.attlist">
<xs:attributeGroup ref="xhtml.button.attlist">
<xs:annotation>
<xs:documentation>
Original Button Attributes (in Forms Module)
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup ref="xhtml.button.events.attlist">
<xs:annotation>
<xs:documentation>
Redefinition by Event Attribute Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
</xs:redefine>
<xs:include schemaLocation="xhtml-ruby-basic-1.xsd">
<xs:annotation>
<xs:documentation>
Ruby module
Elements defined here:
* ruby, rbc, rtc, rb, rt, rp
Note that either Ruby or Basic Ruby should be used but not both
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/2001/REC-ruby-20010531/#simple-ruby1"/>
</xs:annotation>
</xs:include>
<xs:include schemaLocation="xhtml-events-1.xsd">
<xs:annotation>
<xs:documentation>
XHTML Events Modules
Attributes defined here:
XHTML Event Types
</xs:documentation>
<xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_intrinsiceventsmodule"/>
</xs:annotation>
</xs:include>
</xs:schema>
An XHTML Family Document Type (such as XHTML 1.1) must define the content model that it uses. This is done through a separate content model module that is instantiated by the XHTML Modular Framework. The content model module and the XHTML 1.1 Driver (above) work together to customize the module implementations to the document type's specific requirements. The content model module for XHTML 1.1 is defined below:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
<xs:import
namespace="http://www.w3.org/1999/xhtml/datatypes/"
schemaLocation="xhtml-datatypes-1.xsd"/>
<xs:annotation>
<xs:documentation>
This is the XML Schema module of common content models for XHTML11
$Id: xhtml11_schema.html,v 1.1 2007/02/15 23:14:55 jean-gui Exp $
</xs:documentation>
<xs:documentation source="xhtml-copyright-1.xsd"/>
</xs:annotation>
<xs:annotation>
<xs:documentation>
XHTML Document Model
This module describes the groupings of elements/attributes
that make up common content models for XHTML elements.
XHTML has following basic content models:
xhtml.Inline.mix; character-level elements
xhtml.Block.mix; block-like elements, e.g., paragraphs and lists
xhtml.Flow.mix; any block or inline elements
xhtml.HeadOpts.mix; Head Elements
xhtml.InlinePre.mix; Special class for pre content model
xhtml.InlineNoAnchor.mix; Content model for Anchor
Any groups declared in this module may be used to create
element content models, but the above are considered 'global'
(insofar as that term applies here). XHTML has the
following Attribute Groups
xhtml.Core.extra.attrib
xhtml.I18n.extra.attrib
xhtml.Common.extra
The above attribute Groups are considered Global
</xs:documentation>
</xs:annotation>
<xs:attributeGroup
name="xhtml.I18n.extra.attrib">
<xs:annotation>
<xs:documentation> Extended I18n attribute </xs:documentation>
</xs:annotation>
<xs:attributeGroup
ref="xhtml.dir.attrib">
<xs:annotation>
<xs:documentation>
"dir" Attribute from Bi Directional Text (bdo) Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup
name="xhtml.Common.extra">
<xs:annotation>
<xs:documentation> Extended Common Attributes </xs:documentation>
</xs:annotation>
<xs:attributeGroup
ref="xhtml.style.attrib">
<xs:annotation>
<xs:documentation>
"style" attribute from Inline Style Module
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:attributeGroup>
<xs:attributeGroup
name="xhtml.Core.extra.attrib">
<xs:annotation>
<xs:documentation> Extend Core Attributes </xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup
name="xhtml.Global.core.extra.attrib">
<xs:annotation>
<xs:documentation> Extended Global Core Attributes </xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup
name="xhtml.Global.I18n.extra.attrib">
<xs:annotation>
<xs:documentation> Extended Global I18n attributes </xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attributeGroup
name="xhtml.Global.Common.extra">
<xs:annotation>
<xs:documentation> Extended Global Common Attributes </xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:group
name="xhtml.Head.extra">
<xs:sequence/>
</xs:group>
<xs:group
name="xhtml.HeadOpts.mix">
<xs:choice>
<xs:element
name="script"
type="xhtml.script.type"/>
<xs:element
name="style"
type="xhtml.style.type"/>
<xs:element
name="meta"
type="xhtml.meta.type"/>
<xs:element
name="link"
type="xhtml.link.type"/>
<xs:element
name="object"
type="xhtml.object.type"/>
<xs:group
ref="xhtml.Head.extra"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.head.content">
<xs:sequence>
<xs:group
ref="xhtml.HeadOpts.mix"
minOccurs="0"
maxOccurs="unbounded"/>
<xs:choice>
<xs:sequence>
<xs:element
name="title"
minOccurs="1"
maxOccurs="1"
type="xhtml.title.type"/>
<xs:group
ref="xhtml.HeadOpts.mix"
minOccurs="0"
maxOccurs="unbounded"/>
<xs:sequence
minOccurs="0">
<xs:element
name="base"
type="xhtml.base.type"/>
<xs:group
ref="xhtml.HeadOpts.mix"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
<xs:sequence>
<xs:element
name="base"
type="xhtml.base.type"
minOccurs="1"
maxOccurs="1"/>
<xs:group
ref="xhtml.HeadOpts.mix"
minOccurs="0"
maxOccurs="unbounded"/>
<xs:element
name="title"
minOccurs="1"
maxOccurs="1"
type="xhtml.title.type"/>
<xs:group
ref="xhtml.HeadOpts.mix"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:group>
<!--
ins and del are used to denote editing changes
-->
<xs:group
name="xhtml.Edit.class">
<xs:choice>
<xs:element
name="ins"
type="xhtml.edit.type"/>
<xs:element
name="del"
type="xhtml.edit.type"/>
</xs:choice>
</xs:group>
<!--
script and noscript are used to contain scripts
and alternative content
-->
<xs:group
name="xhtml.Script.class">
<xs:choice>
<xs:element
name="script"
type="xhtml.script.type"/>
<xs:element
name="noscript"
type="xhtml.noscript.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.Misc.extra">
<xs:sequence/>
</xs:group>
<!--
These elements are neither block nor inline, and can
essentially be used anywhere in the document body.
-->
<xs:group
name="xhtml.Misc.class">
<xs:choice>
<xs:group
ref="xhtml.Edit.class"/>
<xs:group
ref="xhtml.Script.class"/>
<xs:group
ref="xhtml.Misc.extra"/>
</xs:choice>
</xs:group>
<!-- Inline Elements -->
<xs:group
name="xhtml.InlStruct.class">
<xs:choice>
<xs:element
name="br"
type="xhtml.br.type"/>
<xs:element
name="span"
type="xhtml.span.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.InlPhras.class">
<xs:choice>
<xs:element
name="em"
type="xhtml.em.type"/>
<xs:element
name="strong"
type="xhtml.strong.type"/>
<xs:element
name="dfn"
type="xhtml.dfn.type"/>
<xs:element
name="code"
type="xhtml.code.type"/>
<xs:element
name="samp"
type="xhtml.samp.type"/>
<xs:element
name="kbd"
type="xhtml.kbd.type"/>
<xs:element
name="var"
type="xhtml.var.type"/>
<xs:element
name="cite"
type="xhtml.cite.type"/>
<xs:element
name="abbr"
type="xhtml.abbr.type"/>
<xs:element
name="acronym"
type="xhtml.acronym.type"/>
<xs:element
name="q"
type="xhtml.q.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.InlPres.class">
<xs:choice>
<xs:element
name="tt"
type="xhtml.InlPres.type"/>
<xs:element
name="i"
type="xhtml.InlPres.type"/>
<xs:element
name="b"
type="xhtml.InlPres.type"/>
<xs:element
name="big"
type="xhtml.InlPres.type"/>
<xs:element
name="small"
type="xhtml.InlPres.type"/>
<xs:element
name="sub"
type="xhtml.InlPres.type"/>
<xs:element
name="sup"
type="xhtml.InlPres.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.I18n.class">
<xs:sequence>
<xs:element
name="bdo"
type="xhtml.bdo.type"/>
</xs:sequence>
</xs:group>
<xs:group
name="xhtml.Anchor.class">
<xs:sequence>
<xs:element
name="a"
type="xhtml.a.type"/>
</xs:sequence>
</xs:group>
<xs:group
name="xhtml.InlSpecial.class">
<xs:choice>
<xs:element
name="img"
type="xhtml.img.type"/>
<xs:element
name="map"
type="xhtml.map.type"/>
<xs:element
name="object"
type="xhtml.object.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.InlForm.class">
<xs:choice>
<xs:element
name="input"
type="xhtml.input.type"/>
<xs:element
name="select"
type="xhtml.select.type"/>
<xs:element
name="textarea"
type="xhtml.textarea.type"/>
<xs:element
name="label"
type="xhtml.label.type"/>
<xs:element
name="button"
type="xhtml.button.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.Inline.extra">
<xs:sequence/>
</xs:group>
<xs:group
name="xhtml.Ruby.class">
<xs:sequence>
<xs:element
name="ruby"
type="xhtml.ruby.type"/>
</xs:sequence>
</xs:group>
<!--
Inline.class includes all inline elements,
used as a component in mixes
-->
<xs:group
name="xhtml.Inline.class">
<xs:choice>
<xs:group
ref="xhtml.InlStruct.class"/>
<xs:group
ref="xhtml.InlPhras.class"/>
<xs:group
ref="xhtml.InlPres.class"/>
<xs:group
ref="xhtml.I18n.class"/>
<xs:group
ref="xhtml.Anchor.class"/>
<xs:group
ref="xhtml.InlSpecial.class"/>
<xs:group
ref="xhtml.InlForm.class"/>
<xs:group
ref="xhtml.Ruby.class"/>
<xs:group
ref="xhtml.Inline.extra"/>
</xs:choice>
</xs:group>
<!--
InlNoRuby.class includes all inline elements
except ruby
-->
<xs:group
name="xhtml.InlNoRuby.class">
<xs:choice>
<xs:group
ref="xhtml.InlStruct.class"/>
<xs:group
ref="xhtml.InlPhras.class"/>
<xs:group
ref="xhtml.InlPres.class"/>
<xs:group
ref="xhtml.I18n.class"/>
<xs:group
ref="xhtml.Anchor.class"/>
<xs:group
ref="xhtml.InlSpecial.class"/>
<xs:group
ref="xhtml.InlForm.class"/>
<xs:group
ref="xhtml.Inline.extra"/>
</xs:choice>
</xs:group>
<!--
InlinePre.mix
Used as a component in pre model
-->
<xs:group
name="xhtml.InlinePre.mix">
<xs:choice>
<xs:group
ref="xhtml.InlStruct.class"/>
<xs:group
ref="xhtml.InlPhras.class"/>
<xs:element
name="tt"
type="xhtml.InlPres.type"/>
<xs:element
name="i"
type="xhtml.InlPres.type"/>
<xs:element
name="b"
type="xhtml.InlPres.type"/>
<xs:group
ref="xhtml.I18n.class"/>
<xs:group
ref="xhtml.Anchor.class"/>
<xs:group
ref="xhtml.Misc.class"/>
<xs:element
name="map"
type="xhtml.map.type"/>
<xs:group
ref="xhtml.Inline.extra"/>
</xs:choice>
</xs:group>
<!--
InlNoAnchor.class includes all non-anchor inlines,
used as a component in mixes
-->
<xs:group
name="xhtml.InlNoAnchor.class">
<xs:choice>
<xs:group
ref="xhtml.InlStruct.class"/>
<xs:group
ref="xhtml.InlPhras.class"/>
<xs:group
ref="xhtml.InlPres.class"/>
<xs:group
ref="xhtml.I18n.class"/>
<xs:group
ref="xhtml.InlSpecial.class"/>
<xs:group
ref="xhtml.InlForm.class"/>
<xs:group
ref="xhtml.Ruby.class"/>
<xs:group
ref="xhtml.Inline.extra"/>
</xs:choice>
</xs:group>
<!--
InlNoAnchor.mix includes all non-anchor inlines
-->
<xs:group
name="xhtml.InlNoAnchor.mix">
<xs:choice>
<xs:group
ref="xhtml.InlNoAnchor.class"/>
<xs:group
ref="xhtml.Misc.class"/>
</xs:choice>
</xs:group>
<!--
Inline.mix includes all inline elements, including Misc.class
-->
<xs:group
name="xhtml.Inline.mix">
<xs:choice>
<xs:group
ref="xhtml.Inline.class"/>
<xs:group
ref="xhtml.Misc.class"/>
</xs:choice>
</xs:group>
<!--
InlNoRuby.mix includes all of inline.mix elements
except ruby
-->
<xs:group
name="xhtml.InlNoRuby.mix">
<xs:choice>
<xs:group
ref="xhtml.InlNoRuby.class"/>
<xs:group
ref="xhtml.Misc.class"/>
</xs:choice>
</xs:group>
<!--
In the HTML 4 DTD, heading and list elements were included
in the block group. The Heading.class and
List.class groups must now be included explicitly
on element declarations where desired.
-->
<xs:group
name="xhtml.Heading.class">
<xs:choice>
<xs:element
name="h1"
type="xhtml.h1.type"/>
<xs:element
name="h2"
type="xhtml.h2.type"/>
<xs:element
name="h3"
type="xhtml.h3.type"/>
<xs:element
name="h4"
type="xhtml.h4.type"/>
<xs:element
name="h5"
type="xhtml.h5.type"/>
<xs:element
name="h6"
type="xhtml.h6.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.List.class">
<xs:choice>
<xs:element
name="ul"
type="xhtml.ul.type"/>
<xs:element
name="ol"
type="xhtml.ol.type"/>
<xs:element
name="dl"
type="xhtml.dl.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.Table.class">
<xs:choice>
<xs:element
name="table"
type="xhtml.table.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.Form.class">
<xs:choice>
<xs:element
name="form"
type="xhtml.form.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.Fieldset.class">
<xs:choice>
<xs:element
name="fieldset"
type="xhtml.fieldset.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.BlkStruct.class">
<xs:choice>
<xs:element
name="p"
type="xhtml.p.type"/>
<xs:element
name="div"
type="xhtml.div.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.BlkPhras.class">
<xs:choice>
<xs:element
name="pre"
type="xhtml.pre.type"/>
<xs:element
name="blockquote"
type="xhtml.blockquote.type"/>
<xs:element
name="address"
type="xhtml.address.type"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.BlkPres.class">
<xs:sequence>
<xs:element
name="hr"
type="xhtml.hr.type"/>
</xs:sequence>
</xs:group>
<xs:group
name="xhtml.BlkSpecial.class">
<xs:choice>
<xs:group
ref="xhtml.Table.class"/>
<xs:group
ref="xhtml.Form.class"/>
<xs:group
ref="xhtml.Fieldset.class"/>
</xs:choice>
</xs:group>
<xs:group
name="xhtml.Block.extra">
<xs:sequence/>
</xs:group>
<!--
Block.class includes all block elements,
used as an component in mixes
-->
<xs:group
name="xhtml.Block.class">
<xs:choice>
<xs:group
ref="xhtml.BlkStruct.class"/>
<xs:group
ref="xhtml.BlkPhras.class"/>
<xs:group
ref="xhtml.BlkPres.class"/>
<xs:group
ref="xhtml.BlkSpecial.class"/>
<xs:group
ref="xhtml.Block.extra"/>
</xs:choice>
</xs:group>
<!--
Block.mix includes all block elements plus %Misc.class;
-->
<xs:group
name="xhtml.Block.mix">
<xs:choice>
<xs:group
ref="xhtml.Heading.class"/>
<xs:group
ref="xhtml.List.class"/>
<xs:group
ref="xhtml.Block.class"/>
<xs:group
ref="xhtml.Misc.class"/>
</xs:choice>
</xs:group>
<!--
All Content Elements
Flow.mix includes all text content, block and inline
Note that the "any" element included here allows us
to add data from any other namespace, a necessity
for compound document creation.
Note however that it is not possible to add
to any head level element without further
modification. To add RDF metadata to the head
of a document, modify the structure module.
-->
<xs:group
name="xhtml.Flow.mix">
<xs:choice>
<xs:group
ref="xhtml.Heading.class"/>
<xs:group
ref="xhtml.List.class"/>
<xs:group
ref="xhtml.Block.class"/>
<xs:group
ref="xhtml.Inline.class"/>
<xs:group
ref="xhtml.Misc.class"/>
</xs:choice>
</xs:group>
<!--
BlkNoForm.mix includes all non-form block elements,
plus Misc.class
-->
<xs:group
name="xhtml.BlkNoForm.mix">
<xs:choice>
<xs:group
ref="xhtml.Heading.class"/>
<xs:group
ref="xhtml.List.class"/>
<xs:group
ref="xhtml.BlkStruct.class"/>
<xs:group
ref="xhtml.BlkPhras.class"/>
<xs:group
ref="xhtml.BlkPres.class"/>
<xs:group
ref="xhtml.Table.class"/>
<xs:group
ref="xhtml.Block.extra"/>
<xs:group
ref="xhtml.Misc.class"/>
</xs:choice>
</xs:group>
<xs:element
name="html"
type="xhtml.html.type"/>
</xs:schema>