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" elementFormDefault="qualified" > <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 2010/11/24 20:56:19 bertails 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="http://www.w3.org/MarkUp/SCHEMA/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 2010/11/24 20:56:19 bertails 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 + Target + Forms + Client side image maps + Server side image maps </xs:documentation> </xs:annotation> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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 ref="xhtml.a.target.attlist"> <xs:annotation> <xs:documentation> Target Module - A Attribute Additions </xs:documentation> </xs:annotation> </xs:attributeGroup> </xs:attributeGroup> </xs:redefine> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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:CDATA" 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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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:attributeGroup name="xhtml.link.attlist"> <xs:annotation> <xs:documentation> Changes to XHTML Link Attlist </xs:documentation> </xs:annotation> <xs:attributeGroup ref="xhtml.link.attlist"> <xs:annotation> <xs:documentation> Original Link Attributes (declared in Link Module) </xs:documentation> </xs:annotation> </xs:attributeGroup> <xs:attributeGroup ref="xhtml.link.target.attlist"> <xs:annotation> <xs:documentation> XHTML Target Module - Attribute additions </xs:documentation> </xs:annotation> </xs:attributeGroup> </xs:attributeGroup> </xs:redefine> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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:attributeGroup name="xhtml.base.attlist"> <xs:annotation> <xs:documentation> Changes to XHTML base Attlist </xs:documentation> </xs:annotation> <xs:attributeGroup ref="xhtml.base.attlist"> <xs:annotation> <xs:documentation> Original Base Attributes (declared in Base Module) </xs:documentation> </xs:annotation> </xs:attributeGroup> <xs:attributeGroup ref="xhtml.base.target.attlist"> <xs:annotation> <xs:documentation> XHTML Target Module - Attribute additions </xs:documentation> </xs:annotation> </xs:attributeGroup> </xs:attributeGroup> </xs:redefine> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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 ref="xhtml.area.target.attlist"> <xs:annotation> <xs:documentation> Target Module - Area Attribute Additions </xs:documentation> </xs:annotation> </xs:attributeGroup> </xs:attributeGroup> </xs:redefine> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/xhtml-param-1.xsd"> <xs:annotation> <xs:documentation> Param module Elements defined here: * param </xs:documentation> </xs:annotation> </xs:include> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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="http://www.w3.org/MarkUp/SCHEMA/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 ref="xhtml.form.target.attlist"> <xs:annotation> <xs:documentation> XHTML Target 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="http://www.w3.org/MarkUp/SCHEMA/xhtml-ruby-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/#complex"/> </xs:annotation> </xs:include> <xs:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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:include schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml-target-1.xsd"> <xs:annotation> <xs:documentation> XHTML Target Attribute Module Attributes defined here: target </xs:documentation> <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_targetmodule"/> </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" xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" elementFormDefault="qualified" > <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="http://www.w3.org/MarkUp/SCHEMA/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 2010/11/24 20:56:19 bertails 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:attribute name="lang" type="xh11d:LanguageCode" /> </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 ref="xhtml.Events.attrib"> <xs:annotation> <xs:documentation> Attributes from Events 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>
The RUBY specification does not currently define an XHTML Module using XML Schema. One is defined here:
<?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 Ruby module for XHTML $Id: xhtml11_schema.html,v 1.1 2010/11/24 20:56:19 bertails Exp $ </xs:documentation> <xs:documentation source="xhtml-copyright-1.xsd"/> </xs:annotation> <xs:annotation> <xs:documentation> "Ruby" are short runs of text alongside the base text, typically used in East Asian documents to indicate pronunciation or to provide a short annotation. The full specification for Ruby is here: http://www.w3.org/TR/2001/REC-ruby-20010531/ This module defines "Ruby " or "complex Ruby" as described in the specification: http://www.w3.org/TR/2001/REC-ruby-20010531/#complex Simple or Basic Ruby are defined in a separate module. This module declares the elements and their attributes used to support complex ruby annotation markup. Elements defined here * ruby, rbc, rtc, rb, rt, rp This module expects the document model to define the following content models + InlNoRuby.mix </xs:documentation> <xs:documentation source="http://www.w3.org/TR/2001/REC-ruby-20010531/"/> </xs:annotation> <xs:group name="xhtml.ruby.content.simple"> <xs:sequence> <xs:element name="rb" type="xhtml.rb.type"/> <xs:choice> <xs:element name="rt" type="xhtml.rt.type"/> <xs:sequence> <xs:element name="rp" type="xhtml.rp.type"/> <xs:element name="rt" type="xhtml.rt.type"/> <xs:element name="rp" type="xhtml.rp.type"/> </xs:sequence> </xs:choice> </xs:sequence> </xs:group> <xs:group name="xhtml.ruby.content.complex"> <xs:sequence> <xs:element name="rbc" type="xhtml.rbc.type"/> <xs:element name="rtc" type="xhtml.rtc.type" maxOccurs="2"/> </xs:sequence> </xs:group> <!-- add to this group any common attributes for all Ruby elements --> <xs:attributeGroup name="xhtml.ruby.common.attrib"/> <xs:group name="xhtml.ruby.content"> <xs:choice> <xs:group ref="xhtml.ruby.content.simple"/> <xs:group ref="xhtml.ruby.content.complex"/> </xs:choice> </xs:group> <xs:complexType name="xhtml.ruby.type"> <xs:group ref="xhtml.ruby.content"/> <xs:attributeGroup ref="xhtml.ruby.common.attrib"/> </xs:complexType> <!-- rbc (ruby base component) element --> <xs:attributeGroup name="xhtml.rbc.attlist"> <xs:attributeGroup ref="xhtml.ruby.common.attrib"/> </xs:attributeGroup> <xs:group name="xhtml.rbc.content"> <xs:sequence> <xs:element name="rb" type="xhtml.rb.type" /> </xs:sequence> </xs:group> <xs:complexType name="xhtml.rbc.type"> <xs:group ref="xhtml.rbc.content"/> <xs:attributeGroup ref="xhtml.rbc.attlist"/> </xs:complexType> <!-- rtc (ruby text component) element --> <xs:attributeGroup name="xhtml.rtc.attlist"> <xs:attributeGroup ref="xhtml.ruby.common.attrib"/> </xs:attributeGroup> <xs:group name="xhtml.rtc.content"> <xs:sequence> <xs:element name="rt" type="xhtml.rt.type" maxOccurs="unbounded"/> </xs:sequence> </xs:group> <xs:complexType name="xhtml.rtc.type"> <xs:group ref="xhtml.rt.content"/> <xs:attributeGroup ref="xhtml.rtc.attlist"/> </xs:complexType> <!-- rb (ruby base) element --> <xs:attributeGroup name="xhtml.rb.attlist"> <xs:attributeGroup ref="xhtml.ruby.common.attrib"/> </xs:attributeGroup> <xs:group name="xhtml.rb.content"> <xs:sequence> <xs:group ref="xhtml.InlNoRuby.mix" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:group> <xs:complexType name="xhtml.rb.type" mixed="true"> <xs:group ref="xhtml.rb.content"/> <xs:attributeGroup ref="xhtml.rb.attlist"/> </xs:complexType> <!-- rt (ruby text) element --> <xs:attributeGroup name="xhtml.rt.attlist"> <xs:attributeGroup ref="xhtml.ruby.common.attrib"/> <xs:attribute name="rbspan" type="xh11d:Number" default="1"/> </xs:attributeGroup> <xs:group name="xhtml.rt.content"> <xs:sequence> <xs:group ref="xhtml.InlNoRuby.mix" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:group> <xs:complexType name="xhtml.rt.type" mixed="true"> <xs:group ref="xhtml.rt.content"/> <xs:attributeGroup ref="xhtml.rt.attlist"/> </xs:complexType> <!-- rp (ruby parenthesis) element --> <xs:attributeGroup name="xhtml.rp.attlist"> <xs:attributeGroup ref="xhtml.ruby.common.attrib"/> </xs:attributeGroup> <xs:group name="xhtml.rp.content"> <xs:sequence/> </xs:group> <xs:complexType name="xhtml.rp.type" mixed="true"> <xs:group ref="xhtml.rp.content"/> <xs:attributeGroup ref="xhtml.rp.attlist"/> </xs:complexType> </xs:schema>