Contents
This appendix is normative.
This section contains the driver for the XHTML 2 document type implementation as an XML Schema. Note that the structure and techniques in these driver files are as described in Modularization of XHTML [XHTMLMOD].
<?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: xhtml2.xsd,v 1.1.2.1 2009/01/16 17:50:25 ahby 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 XHTML2 Document Type This schema + imports external schemas (xml.xsd) + refedines (and include)s schema modules for XHTML2 Document Type. + includes Schema for Named content model for the XHTML2 Document Type XHTML2 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:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-2.xsd"/> <xs:include schemaLocation="xhtml2-modules-1.xsd"> <xs:annotation> <xs:documentation> Schema that includes all modules (and redefinitions) for XHTML2 Document Type. </xs:documentation> </xs:annotation> </xs:include> <xs:include schemaLocation="xhtml2-model-1.xsd"> <xs:annotation> <xs:documentation> Document Model module for the XHTML2 Document Type. This schema file defines all named models used by XHTML Modularization Framework for XHTML2 Document Type </xs:documentation> </xs:annotation> </xs:include> </xs:schema>
This section contains a driver that accumulates all of the attribute collections and defines the Common collection based upon them.
<?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-2.xsd" /> <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 module itself does not provide the schemaLocation and expects the driver schema to provide the actual SchemaLocation. </xs:documentation> </xs:annotation> </xs:import> <xs:include schemaLocation="xhtml-core-2.xsd"/> <xs:include schemaLocation="xhtml-bidi-2.xsd"/> <xs:include schemaLocation="xml-events-attribs-2.xsd"/> <xs:include schemaLocation="xhtml-edit-2.xsd"/> <xs:include schemaLocation="xhtml-embedding-2.xsd"/> <!-- forms common collection --> <xs:include schemaLocation="xhtml-hyperAttributes-2.xsd"/> <xs:include schemaLocation="xhtml-i18n-2.xsd"/> <xs:include schemaLocation="xhtml-csismap-2.xsd"/> <xs:include schemaLocation="xhtml-media-attrib-2.xsd"/> <xs:include schemaLocation="xhtml-metaAttributes-2.xsd"/> <xs:include schemaLocation="xhtml-role-attrib-2.xsd"/> <xs:include schemaLocation="xhtml-style-attrib-2.xsd"/> <xs:attributeGroup name="xhtml.Core.extra.attrib"/> <xs:attributeGroup name="xhtml.Bidi.extra.attrib"/> <xs:attributeGroup name="xmlEvents.extra.attrib"/> <xs:attributeGroup name="xhtml.Edit.extra.attrib"/> <xs:attributeGroup name="xhtml.Embedding.extra.attrib"/> <xs:attributeGroup name="xhtml.Hypertext.extra.attrib"/> <xs:attributeGroup name="xhtml.I18n.extra.attrib"/> <xs:attributeGroup name="xhtml.Csismap.extra.attrib"/> <xs:attributeGroup name="xhtml.Media.extra.attrib"/> <xs:attributeGroup name="xhtml.MetaAttributes.extra.attrib"/> <xs:attributeGroup name="xhtml.Role.extra.attrib"/> <xs:attributeGroup name="xhtml.Style.extra.attrib"/> <xs:attributeGroup name="xhtml.CommonNoEvents.attrib"> <xs:attributeGroup ref="xhtml.Core.attrib"/> <xs:attributeGroup ref="xhtml.Bidi.attrib"/> <xs:attributeGroup ref="xhtml.Edit.attrib"/> <xs:attributeGroup ref="xhtml.Embedding.attrib"/> <xs:attributeGroup ref="xhtml.Hypertext.attrib"/> <xs:attributeGroup ref="xhtml.I18n.attrib"/> <xs:attributeGroup ref="xhtml.ImageMap.attrib"/> <xs:attributeGroup ref="xhtml.Media.attrib"/> <xs:attributeGroup ref="xhtml.MetaAttributes.attrib"/> <xs:attributeGroup ref="xhtml.Role.attrib"/> <xs:attributeGroup ref="xhtml.Style.attrib"/> <xs:attributeGroup ref="xhtml.Common.extra"/> </xs:attributeGroup> <xs:attributeGroup name="xhtml.Common.attrib"> <xs:attributeGroup ref="xhtml.CommonNoEvents.attrib"/> <xs:attributeGroup ref="xmlEvents.attrib"/> </xs:attributeGroup> <xs:attributeGroup name="xhtml.Global.Core.extra.attrib"/> <xs:attributeGroup name="xhtml.Global.Edit.extra.attrib"/> <xs:attributeGroup name="xhtml.Global.Embedding.extra.attrib"/> <xs:attributeGroup name="xhtml.Global.Hypertext.extra.attrib"/> <xs:attributeGroup name="xhtml.Global.Media.extra.attrib"/> </xs:schema>
This section instantiates the XHTML 2 Content Model using XML Schema, including defining the various XHTML 2 Content Sets that are used by the modules.
<?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="xhtml-datatypes-2.xsd"/> <xs:annotation> <xs:documentation> This is the XML Schema module of common content models for XHTML11 $Id: xhtml2-model-1.xsd,v 1.1.2.2 2009/04/07 14:13:23 ahby 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.Text.mix; character-level elements xhtml.Structural.mix; block-like elements, e.g., paragraphs and lists xhtml.Flow.mix; any block or inline elements xhtml.HeadOpts.mix; Head Elements xhtml.StructuralPre.mix; Special class for pre content model 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.Common.extra"> <xs:annotation> <xs:documentation> Extended Common 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.head.content"> <xs:sequence> <xs:element name="title" minOccurs="1" maxOccurs="1" type="xhtml.title.type"/> <xs:choice> <xs:element name="access" type="xhtml.access.type"/> <xs:element name="action" type="xmlHandlers.action.type"/> <xs:element name="link" type="xhtml.link.type"/> <xs:element name="listener" type="xmlEvents.listener.type"/> <xs:element name="meta" type="xhtml.meta.type"/> <xs:element name="style" type="xhtml.style.type"/> <xs:group ref="xhtml.Head.extra"/> </xs:choice> </xs:sequence> </xs:group> <!-- Text Elements --> <xs:group name="xhtml.Text.extra"> <xs:sequence/> </xs:group> <xs:group name="xhtml.TextNoRuby.class"> <xs:choice> <xs:element name="abbr" type="xhtml.abbr.type"/> <xs:element name="caption" type="xhtml.caption.type"/> <xs:element name="cite" type="xhtml.cite.type"/> <xs:element name="code" type="xhtml.code.type"/> <xs:element name="dfn" type="xhtml.dfn.type"/> <xs:element name="em" type="xhtml.em.type"/> <xs:element name="kbd" type="xhtml.kbd.type"/> <xs:element name="l" type="xhtml.l.type"/> <xs:element name="q" type="xhtml.q.type"/> <xs:element name="samp" type="xhtml.samp.type"/> <xs:element name="span" type="xhtml.span.type"/> <xs:element name="strong" type="xhtml.strong.type"/> <xs:element name="sub" type="xhtml.sub.type"/> <xs:element name="sup" type="xhtml.sup.type"/> <xs:element name="var" type="xhtml.var.type"/> <xs:element name="img" type="xhtml.img.type"/> <xs:element name="link" type="xhtml.link.type"/> <xs:element name="meta" type="xhtml.meta.type"/> <xs:element name="object" type="xhtml.object.type"/> </xs:choice> </xs:group> <xs:group name="xhtml.Text.class"> <xs:choice> <xs:element name="ruby" type="xhtml.ruby.type"/> <xs:group ref="xhtml.TextNoRuby.class"/> </xs:choice> </xs:group> <xs:group name="xhtml.Text.mix"> <xs:choice> <xs:group ref="xhtml.Text.class"/> <xs:group ref="xhtml.Text.extra"/> </xs:choice> </xs:group> <xs:group name="xhtml.Heading.class"> <xs:choice> <xs:element name="h" type="xhtml.h.type"/> <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.List.extra"> <xs:sequence/> </xs:group> <xs:group name="xhtml.List.mix"> <xs:choice> <xs:group ref="xhtml.List.class"/> <xs:group ref="xhtml.List.extra"/> </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.Structural.class"> <xs:choice> <xs:element name="action" type="xmlHandlers.action.type"/> <xs:element name="address" type="xhtml.address.type"/> <xs:element name="blockcode" type="xhtml.blockcode.type"/> <xs:element name="blockquote" type="xhtml.blockquote.type"/> <xs:element name="div" type="xhtml.div.type"/> <xs:group ref="xhtml.List.class"/> <xs:element name="listener" type="xmlEvents.listener.type"/> <xs:element name="p" type="xhtml.p.type"/> <xs:element name="pre" type="xhtml.pre.type"/> <xs:element name="script" type="xmlScripting.script.type"/> <xs:element name="section" type="xhtml.section.type"/> <xs:element name="separator" type="xhtml.separator.type"/> <xs:element name="style" type="xhtml.style.type"/> <xs:element name="table" type="xhtml.table.type"/> </xs:choice> </xs:group> <xs:group name="xhtml.Structural.extra"> <xs:sequence/> </xs:group> <!-- Structural.mix includes all block elements plus %Misc.class; --> <xs:group name="xhtml.Structural.mix"> <xs:choice> <xs:group ref="xhtml.Structural.class"/> <xs:group ref="xhtml.Structural.extra"/> </xs:choice> </xs:group> <xs:group name="xhtml.Flow.class"> <xs:choice> <xs:group ref="xhtml.Heading.class"/> <xs:group ref="xhtml.Structural.class"/> <xs:group ref="xhtml.Text.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.extra"> <xs:sequence/> </xs:group> <xs:group name="xhtml.Flow.mix"> <xs:choice> <xs:group ref="xhtml.Flow.class"/> <xs:group ref="xhtml.Flow.extra"/> </xs:choice> </xs:group> <xs:element name="html" type="xhtml.html.type"/> </xs:schema>
This section loads all of the modules that are used in XHTML 2. The modules themselves are defined in the next Appendix.
<?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-2.xsd" /> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd" /> <xs:annotation> <xs:documentation> This schema includes all modules for XHTML1.1 Document Type. $Id: xhtml2-modules-1.xsd,v 1.1.2.5 2009/04/07 16:32:57 ahby Exp $ </xs:documentation> <xs:documentation source="xhtml-copyright-1.xsd"/> </xs:annotation> <xs:annotation> <xs:documentation> This schema includes all modules (and redefinitions) for XHTML2 Document Type. XHTML2 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="xhtml2-attribs-1.xsd"/> <xs:include schemaLocation="xhtml-framework-2.xsd"/> <xs:include schemaLocation="xhtml-structural-2.xsd"/> <xs:include schemaLocation="xhtml-text-2.xsd"/> <xs:include schemaLocation="xhtml-hypertext-2.xsd"/> <xs:include schemaLocation="xhtml-list-2.xsd"/> <xs:redefine schemaLocation="xhtml-document-2.xsd"> <xs:attributeGroup name="xhtml.version.attrib"> <xs:attribute name="version" type="xh11d:CDATA" fixed="xhtml2"/> </xs:attributeGroup> </xs:redefine> <xs:include schemaLocation="xhtml-edit-2.xsd"/> <xs:include schemaLocation="xhtml-i18n-2.xsd"/> <xs:include schemaLocation="xhtml-meta-2.xsd"/> <xs:include schemaLocation="xhtml-legacy-br-2.xsd"/> <xs:include schemaLocation="xhtml-legacy-edit-2.xsd"/> <xs:include schemaLocation="xhtml-legacy-heading-2.xsd"/> <xs:redefine schemaLocation="xhtml-access-2.xsd"> <xs:attributeGroup name="xhtmlAccess.Common.attrib"> <xs:attributeGroup ref="xhtml.Common.attrib"/> </xs:attributeGroup> </xs:redefine> <xs:redefine schemaLocation="xml-events-2.xsd"> <xs:attributeGroup name="xmlEvents.Common.attrib"> <xs:attributeGroup ref="xhtml.CommonNoEvents.attrib"/> </xs:attributeGroup> </xs:redefine> <xs:redefine schemaLocation="xml-handlers-2.xsd"> <xs:attributeGroup name="xmlHandlers.Common.attrib"> <xs:attributeGroup ref="xhtml.Common.attrib"/> </xs:attributeGroup> </xs:redefine> <xs:redefine schemaLocation="xml-script-2.xsd"> <xs:attributeGroup name="xmlScripting.Common.attrib"/> <xs:attributeGroup name="xmlScripting.script.attlist"> <xs:attributeGroup ref="xhtml.Common.attrib"/> <xs:attribute name="charset" type="xh11d:Charset"/> <xs:attribute name="defer" type="xs:NMTOKEN" fixed="defer"/> <xs:attribute name="implements" type="xh11d:URIorSafeCURIEs"/> </xs:attributeGroup> </xs:redefine> <xs:include schemaLocation="xhtml-style-2.xsd"/> <xs:include schemaLocation="xhtml-image-2.xsd"/> <xs:include schemaLocation="xhtml-csismap-2.xsd"/> <xs:include schemaLocation="xhtml-object-2.xsd"/> <xs:include schemaLocation="xhtml-param-2.xsd"/> <xs:include schemaLocation="xhtml-table-2.xsd"/> <xs:include schemaLocation="xhtml-ruby-2.xsd"/> <xs:include schemaLocation="xml-events-2.xsd"/> </xs:schema>