+<?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-model-1.xsd,v 1.9 2009/02/03 15:14:49 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.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>