blob: 7158a7ec5f8f0a8ec5166d50f66cafd49c6a6ebc [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xs:schema [
<!ENTITY % HTMLlat1 PUBLIC
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
"../xhtml-lat1.ent">
%HTMLlat1;
<!ENTITY % HTMLsymbol PUBLIC
"-//W3C//ENTITIES Symbols for XHTML//EN"
"../xhtml-symbol.ent">
%HTMLsymbol;
<!ENTITY % HTMLspecial PUBLIC
"-//W3C//ENTITIES Special for XHTML//EN"
"../xhtml-special.ent">
%HTMLspecial;
]>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/1999/xhtml"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- ##################################################################### -->
<!--
(This only affects mixed-version modules; wholly HTML5
modules should simply be left out of the inclusion list.)
-->
<!-- (xml:base on elements other than <html>) -->
<!-- ##################################################################### -->
<xs:group name="common.elem.anything">
<xs:annotation>
<xs:documentation>Any element from any namespace</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any processContents="skip"/>
</xs:sequence>
</xs:group>
<xs:complexType name="common.inner.anything" mixed="true">
<xs:annotation>
<xs:documentation>Any content from any namespace</xs:documentation>
</xs:annotation>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="common.elem.anything"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:group name="common.elem.metadata">
<xs:annotation>
<xs:documentation>Common Element Classes #</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element ref="xhtml:link"/>
<xs:group ref="xhtml:style.elem"/>
<xs:group ref="xhtml:meta.name.elem"/>
<xs:group ref="xhtml:meta.http-equiv.refresh.elem"/>
<xs:group ref="xhtml:meta.http-equiv.default-style.elem"/>
<xs:group ref="xhtml:meta.http-equiv.content-language.elem"/>
<xs:group ref="xhtml:meta.charset.elem"/>
<xs:group ref="xhtml:script.elem"/>
<xs:group ref="xhtml:command.elem"/>
</xs:choice>
</xs:group>
<xs:group name="common.elem.phrasing">
<xs:annotation>
<xs:documentation>Phrase Elements</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:group ref="xhtml:a.elem.phrasing"/>
<xs:element ref="xhtml:em"/>
<xs:element ref="xhtml:strong"/>
<xs:element ref="xhtml:small"/>
<xs:element ref="xhtml:mark"/>
<xs:element ref="xhtml:abbr"/>
<xs:element ref="xhtml:dfn"/>
<xs:element ref="xhtml:i"/>
<xs:element ref="xhtml:b"/>
<xs:element ref="xhtml:code"/>
<xs:element ref="xhtml:var"/>
<xs:element ref="xhtml:samp"/>
<xs:element ref="xhtml:kbd"/>
<xs:element ref="xhtml:sup"/>
<xs:element ref="xhtml:sub"/>
<xs:element ref="xhtml:q"/>
<xs:element ref="xhtml:cite"/>
<xs:element ref="xhtml:span"/>
<xs:element ref="xhtml:bdo"/>
<xs:element ref="xhtml:br"/>
<xs:element ref="xhtml:wbr"/>
<xs:element ref="xhtml:s"/>
<xs:group ref="xhtml:ins.elem.phrasing"/>
<xs:group ref="xhtml:del.elem.phrasing"/>
<xs:element ref="xhtml:img"/>
<xs:element ref="xhtml:embed"/>
<xs:group ref="xhtml:object.elem.phrasing"/>
<xs:element ref="xhtml:iframe"/>
<xs:group ref="xhtml:map.elem.phrasing"/>
<xs:element ref="xhtml:area"/>
<xs:element ref="xhtml:ruby"/>
<xs:group ref="xhtml:video.elem.phrasing"/>
<xs:group ref="xhtml:audio.elem.phrasing"/>
<xs:group ref="xhtml:script.elem"/>
<xs:group ref="xhtml:input.elem"/>
<xs:element ref="xhtml:textarea"/>
<xs:element ref="xhtml:select"/>
<xs:group ref="xhtml:button.elem"/>
<xs:element ref="xhtml:label"/>
<xs:element ref="xhtml:output"/>
<xs:element ref="xhtml:datalist"/>
<xs:element ref="xhtml:keygen"/>
<xs:element ref="xhtml:progress"/>
<xs:group ref="xhtml:command.elem"/>
<xs:element ref="xhtml:bb"/>
<xs:group ref="xhtml:canvas.elem.phrasing"/>
<xs:element ref="xhtml:time"/>
<xs:element ref="xhtml:meter"/>
</xs:choice>
</xs:group>
<xs:group name="common.elem.flow">
<xs:annotation>
<xs:documentation>Prose Elements</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:group ref="common.elem.phrasing"/>
<xs:group ref="xhtml:a.elem.flow"/>
<xs:element ref="xhtml:p"/>
<xs:element ref="xhtml:hr"/>
<xs:element ref="xhtml:pre"/>
<xs:element ref="xhtml:ul"/>
<xs:element ref="xhtml:ol"/>
<xs:element ref="xhtml:dl"/>
<xs:element ref="xhtml:div"/>
<xs:element ref="xhtml:h1"/>
<xs:element ref="xhtml:h2"/>
<xs:element ref="xhtml:h3"/>
<xs:element ref="xhtml:h4"/>
<xs:element ref="xhtml:h5"/>
<xs:element ref="xhtml:h6"/>
<xs:element ref="xhtml:hgroup"/>
<xs:element ref="xhtml:address"/>
<xs:element ref="xhtml:blockquote"/>
<xs:element ref="xhtml:section"/>
<xs:element ref="xhtml:nav"/>
<xs:element ref="xhtml:article"/>
<xs:element ref="xhtml:aside"/>
<xs:element ref="xhtml:header"/>
<xs:element ref="xhtml:footer"/>
<xs:element ref="xhtml:dialog"/>
<xs:group ref="xhtml:ins.elem.flow"/>
<xs:group ref="xhtml:del.elem.flow"/>
<xs:group ref="xhtml:object.elem.flow"/>
<xs:group ref="xhtml:map.elem.flow"/>
<xs:group ref="xhtml:video.elem.flow"/>
<xs:group ref="xhtml:audio.elem.flow"/>
<xs:element ref="xhtml:figure"/>
<xs:element ref="xhtml:table"/>
<xs:element ref="xhtml:form"/>
<xs:element ref="xhtml:fieldset"/>
<xs:element ref="xhtml:datagrid"/>
<xs:element ref="xhtml:menu"/>
<xs:group ref="xhtml:canvas.elem.flow"/>
<xs:element ref="xhtml:details"/>
</xs:choice>
</xs:group>
<!-- ##################################################################### -->
<xs:group name="common.inner.metadata">
<xs:annotation>
<xs:documentation>Common Content Models #</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="common.elem.metadata"/>
</xs:sequence>
</xs:group>
<xs:group name="common.inner.phrasing">
<xs:annotation>
<xs:documentation>Phrase Content</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="common.elem.phrasing"/>
</xs:sequence>
</xs:group>
<xs:group name="common.inner.flow">
<xs:annotation>
<xs:documentation>Prose Content</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="common.elem.flow"/>
</xs:sequence>
</xs:group>
<!-- REVISIT <style scoped> -->
<!-- ##################################################################### -->
<!-- ##################################################################### -->
<!-- When updating, check <bdo> definition too -->
<xs:attributeGroup name="common.attrs">
<xs:annotation>
<xs:documentation>Common Attributes #</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="common.attrs.basic"/>
<xs:attributeGroup ref="common.attrs.i18n"/>
<xs:attributeGroup ref="common.attrs.present"/>
<xs:attributeGroup ref="common.attrs.other"/>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.basic">
<xs:attribute name="id" type="common.data.id"/>
<xs:attribute ref="xml:id"/>
<xs:attribute name="class" type="common.data.tokens"/>
<xs:attribute name="title"/>
<xs:attribute name="role"/>
<xs:attribute ref="xml:base"/>
<xs:attribute ref="xml:space"/>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.i18n">
<xs:attribute name="dir">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ltr"/>
<xs:enumeration value="rtl"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="common.attrs.language"/>
</xs:attributeGroup>
<!--
This lang definition is a hack for enviroments where
the HTML5 parser maps lang to xml:lang.
Sameness check left to Schematron
-->
<xs:attributeGroup name="common.attrs.language">
<xs:attribute ref="xml:lang"/>
<xs:attribute name="lang" type="common.data.langcode"/>
</xs:attributeGroup>
<!--
common.attrs.language =
( common.attrs.lang
| common.attrs.xmllang
)
common.attrs.lang =
attribute lang {
common.data.langcode
} & HTMLonly
common.attrs.xmllang =
attribute xml:lang {
common.data.langcode
} & XMLonly
-->
<xs:attributeGroup name="common.attrs.present">
<xs:attribute name="style" type="xs:string"/>
<xs:attribute name="tabindex" type="common.data.integer"/>
<xs:attribute name="accesskey" type="common.data.keylabellist"/>
</xs:attributeGroup>
<!-- REVISIT move style to a module and bundle tabindex with ARIA -->
<xs:attributeGroup name="common.attrs.other">
<xs:attributeGroup ref="xhtml:common.attrs.scripting"/>
<xs:attributeGroup ref="xhtml:common.attrs.interact"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:simpleType name="common.data.tokens">
<xs:annotation>
<xs:documentation>Common Datatypes #</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKENS"/>
</xs:simpleType>
<xs:simpleType name="common.data.browsing-context">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.browsing-context-or-keyword">
<xs:restriction base="xs:NMTOKEN">
<xs:pattern value="_(blank|self|parent|top)|[A-Za-z]\c*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="common.data.charset">
<xs:restriction base="xs:string">
<xs:pattern value="[uU][tT][fF]-8"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SandboxType">
<xs:union>
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="allow-same-origin"/>
<xs:enumeration value="allow-forms"/>
<xs:enumeration value="allow-scripts"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="allow-same-origin"/>
<xs:enumeration value="allow-scripts"/>
<xs:enumeration value="allow-forms"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="allow-forms"/>
<xs:enumeration value="allow-same-origin"/>
<xs:enumeration value="allow-scripts"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="allow-forms"/>
<xs:enumeration value="allow-scripts"/>
<xs:enumeration value="allow-same-origin"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="allow-scripts"/>
<xs:enumeration value="allow-same-origin"/>
<xs:enumeration value="allow-forms"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="allow-scripts"/>
<xs:enumeration value="allow-forms"/>
<xs:enumeration value="allow-same-origin"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<!--
xsd:string {
pattern = "()|([^_].*)|(_[bB][lL][aA][nN][kK])|(_[sS][eE][lL][fF])|(_[pP][aA][rR][eE][nN][tT])|(_[tT][oO][pP])"
}
-->
<xs:simpleType name="common.data.id">
<xs:annotation>
<xs:documentation>IDs and IDREFs</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:ID"/>
</xs:simpleType>
<!--
xsd:string {
pattern = "\S+"
}
-->
<xs:simpleType name="common.data.idref">
<xs:restriction base="xs:ID"/>
</xs:simpleType>
<xs:simpleType name="common.data.idrefs">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.name">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- FIXME -->
<xs:simpleType name="common.data.hash-name">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!--
xsd:string {
pattern = "#.+"
}
-->
<xs:simpleType name="common.data.integer">
<xs:annotation>
<xs:documentation>Numerical</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="-?[0-9]+"/>
</xs:restriction>
</xs:simpleType>
<!--
xsd:string {
pattern = "-?[0-9]+"
}
-->
<xs:simpleType name="common.data.integer.positive">
<xs:restriction base="xs:string">
<xs:pattern value="0*[1-9][0-9]*"/>
</xs:restriction>
</xs:simpleType>
<!--
xsd:string {
pattern = "0*[1-9][0-9]*"
}
-->
<xs:simpleType name="common.data.integer.non-negative">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+"/>
</xs:restriction>
</xs:simpleType>
<!--
xsd:string {
pattern = "[0-9]+"
}
-->
<!--
common.data.percent =
xsd:string {
pattern = "(100)|([1-9]?[0-9](\.[0-9]+)?)%"
}
-->
<xs:simpleType name="common.data.float">
<xs:restriction base="xs:float">
<xs:pattern value="-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>
<!--
xsd:string {
pattern = "-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"
}
-->
<xs:simpleType name="common.data.float.positive">
<xs:restriction base="xs:string">
<xs:pattern value="(0*[1-9][0-9]*(\.[0-9]+)?)|([0-9]+(\.0*[1-9][0-9]*)?)([eE]-?[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>
<!--
xsd:string {
pattern = "(0*[1-9][0-9]*(\.[0-9]+)?)|([0-9]+(\.0*[1-9][0-9]*)?)([eE]-?[0-9]+)?"
}
-->
<xs:simpleType name="common.data.float.non-negative">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>
<!--
xsd:string {
pattern = "[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"
}
-->
<xs:simpleType name="common.data.datetime">
<xs:annotation>
<xs:documentation>Temporal</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.date-or-time">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.uri">
<xs:annotation>
<xs:documentation>IRIs</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:anyURI"/>
</xs:simpleType>
<xs:simpleType name="common.data.uris">
<xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.uri.absolute">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.sizes">
<xs:annotation>
<xs:documentation>&lt;link type='icon'&gt; sizes</xs:documentation>
</xs:annotation>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[1-9][0-9]*x[1-9][0-9]*"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="common.data.mimetype">
<xs:annotation>
<xs:documentation>MIME types</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.meta-charset">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.refresh">
<xs:annotation>
<xs:documentation>Refresh</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.default-style">
<xs:annotation>
<xs:documentation>Default style</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- w:default-style -->
<xs:simpleType name="common.data.mediaquery">
<xs:annotation>
<xs:documentation>Media Queries</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.langcode">
<xs:annotation>
<xs:documentation>Language Codes</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:language"/>
</xs:simpleType>
<xs:simpleType name="common.data.keylabellist">
<xs:annotation>
<xs:documentation>List of Key Labels</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.microdata-identifier">
<xs:annotation>
<xs:documentation>Microdata Identifier</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="common.data.zero">
<xs:annotation>
<xs:documentation>Zero</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ##################################################################### -->
<!-- ##################################################################### -->
<xs:attributeGroup name="common-form.attrs.form">
<xs:annotation>
<xs:documentation>WF2 Module Hook #</xs:documentation>
</xs:annotation>
<xs:attribute name="form" type="common.data.idref"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<!-- ##################################################################### -->
<xs:element name="html">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:html.inner">
<xs:attributeGroup ref="xhtml:html.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="html.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="manifest" type="common.data.uri"/>
</xs:attributeGroup>
<xs:complexType name="html.inner">
<xs:sequence>
<xs:element ref="xhtml:head"/>
<xs:element ref="xhtml:body"/>
</xs:sequence>
</xs:complexType>
<xs:element name="head">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:head.inner">
<xs:attributeGroup ref="xhtml:head.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="head.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<!--
head.attrs.profile =
attribute profile {
common.data.uris #REVISIT should these be absolute (zero or more)
}
-->
<xs:complexType name="head.inner">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="xhtml:title"/>
<xs:element ref="xhtml:base"/>
<xs:group ref="common.inner.metadata"/>
</xs:choice>
</xs:complexType>
<!--
head.inner =
( meta.elem.encoding?
, ( title.elem
& base.elem? # REVISIT need a non-schema checker or Schematron
& common.inner.metadata
)
)
-->
<xs:element name="body">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:body.inner">
<xs:attributeGroup ref="xhtml:body.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="body.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="onafterprint" type="xs:string"/>
<xs:attribute name="onbeforeprint" type="xs:string"/>
<xs:attribute name="onbeforeunload" type="xs:string"/>
<xs:attribute name="onhashchange" type="xs:string"/>
<xs:attribute name="onmessage" type="xs:string"/>
<xs:attribute name="onoffline" type="xs:string"/>
<xs:attribute name="ononline" type="xs:string"/>
<xs:attribute name="onpopstate" type="xs:string"/>
<xs:attribute name="onredo" type="xs:string"/>
<xs:attribute name="onresize" type="xs:string"/>
<xs:attribute name="onstorage" type="xs:string"/>
<xs:attribute name="onundo" type="xs:string"/>
<xs:attribute name="onunload" type="xs:string"/>
</xs:attributeGroup>
<xs:complexType name="body.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="title">
<xs:complexType mixed="true">
<xs:attributeGroup ref="xhtml:title.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="title.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:element name="base">
<xs:complexType>
<xs:attributeGroup ref="xhtml:base.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="base.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="href" type="common.data.uri"/>
<xs:attribute name="target" type="common.data.browsing-context-or-keyword"/>
</xs:attributeGroup>
<xs:element name="link">
<xs:complexType>
<xs:attributeGroup ref="xhtml:link.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="link.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:shared-hyperlink.attrs.href"/>
<xs:attributeGroup ref="xhtml:shared-hyperlink.attrs.rel"/>
<xs:attribute name="hreflang" type="common.data.langcode"/>
<xs:attribute name="media" type="common.data.mediaquery"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="sizes">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="style.elem">
<xs:annotation>
<xs:documentation>Global Style: &lt;style&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="style">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:style.inner">
<xs:attributeGroup ref="xhtml:style.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="style.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="media" type="common.data.mediaquery"/>
</xs:attributeGroup>
<xs:complexType name="style.inner">
<xs:complexContent>
<xs:extension base="common.inner.anything"/>
</xs:complexContent>
</xs:complexType>
<xs:group name="style.elem.scoped">
<xs:annotation>
<xs:documentation>Scoped Style: &lt;style scoped&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="style">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:style.inner">
<xs:attributeGroup ref="xhtml:style.scoped.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="style.scoped.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="media" type="common.data.mediaquery"/>
<xs:attributeGroup ref="xhtml:style.attrs.scoped"/>
</xs:attributeGroup>
<xs:attributeGroup name="style.attrs.scoped">
<xs:attribute name="scoped" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="scoped"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="meta">
<xs:complexType>
<xs:attributeGroup ref="xhtml:common.attrs"/>
<xs:attributeGroup ref="xhtml:meta.name.attrs"/>
<xs:attributeGroup ref="xhtml:meta.http-equiv.refresh.attrs"/>
<xs:attributeGroup ref="xhtml:meta.charset.attrs"/>
</xs:complexType>
</xs:element>
<xs:group name="meta.name.elem">
<xs:annotation>
<xs:documentation>Name-Value Metadata: &lt;meta name&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="meta"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="meta.name.attrs">
<xs:attributeGroup ref="xhtml:meta.name.attrs.name"/>
<xs:attributeGroup ref="xhtml:meta.name.attrs.content"/>
</xs:attributeGroup>
<xs:attributeGroup name="meta.name.attrs.name">
<xs:attribute name="name" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="meta.name.attrs.content">
<xs:attribute name="content" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="meta.http-equiv.refresh.elem">
<xs:annotation>
<xs:documentation>"refresh" pragma directive: &lt;meta http-equiv='refresh'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="meta"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="meta.http-equiv.refresh.attrs">
<xs:attribute name="http-equiv" type="xs:string"/>
</xs:attributeGroup>
<!--
not quite right per spec
if the definition is
reused in another language
-->
<xs:group name="meta.http-equiv.default-style.elem">
<xs:annotation>
<xs:documentation>"default-style" pragma directive: &lt;meta http-equiv='default-style'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="meta"/>
</xs:sequence>
</xs:group>
<!--
not quite right per spec
if the definition is
reused in another language
-->
<xs:group name="meta.http-equiv.content-language.elem">
<xs:annotation>
<xs:documentation>"content-language" pragma directive: &lt;meta http-equiv='content-language'&gt; (obsolete)</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="meta"/>
</xs:sequence>
</xs:group>
<!--
not quite right per spec
if the definition is
reused in another language
-->
<xs:group name="meta.charset.elem">
<xs:annotation>
<xs:documentation>Inline Character Encoding Statement for HTML: &lt;meta charset&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="meta"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="meta.charset.attrs">
<xs:attributeGroup ref="xhtml:meta.charset.attrs.charset"/>
</xs:attributeGroup>
<xs:attributeGroup name="meta.charset.attrs.charset">
<xs:attribute name="charset" type="common.data.charset"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:group name="a.elem.phrasing">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Phrase Markup #</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="a">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:a.inner.phrasing">
<xs:attributeGroup ref="xhtml:a.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="a.elem.flow">
<xs:sequence>
<xs:element name="a">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:a.inner.flow">
<xs:attributeGroup ref="xhtml:a.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="a.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="name" type="common.data.id"/>
<xs:attribute name="href" type="common.data.uri"/>
<xs:attribute name="target" type="common.data.browsing-context-or-keyword"/>
<xs:attribute name="rel" type="common.data.tokens"/>
<xs:attribute name="hreflang" type="common.data.langcode"/>
<xs:attribute name="media" type="common.data.mediaquery"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="ping" type="common.data.uris"/>
</xs:attributeGroup>
<xs:complexType name="a.inner.phrasing" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:complexType name="a.inner.flow" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:attributeGroup name="shared-hyperlink.attrs.href">
<xs:annotation>
<xs:documentation>Shared hyperlink attributes</xs:documentation>
</xs:annotation>
<xs:attribute name="href" use="required" type="common.data.uri"/>
</xs:attributeGroup>
<xs:attributeGroup name="shared-hyperlink.attrs.rel">
<xs:attribute name="rel" use="required" type="common.data.tokens"/>
</xs:attributeGroup>
<xs:element name="em">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:em.inner">
<xs:attributeGroup ref="xhtml:em.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="em.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="em.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="strong">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:strong.inner">
<xs:attributeGroup ref="xhtml:strong.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="strong.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="strong.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="small">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:small.inner">
<xs:attributeGroup ref="xhtml:small.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="small.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="small.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="mark">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:mark.inner">
<xs:attributeGroup ref="xhtml:mark.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="mark.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="mark.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="abbr">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:abbr.inner">
<xs:attributeGroup ref="xhtml:abbr.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="abbr.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="abbr.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="dfn">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:dfn.inner">
<xs:attributeGroup ref="xhtml:dfn.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="dfn.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="dfn.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="i">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:i.inner">
<xs:attributeGroup ref="xhtml:i.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="i.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="i.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="b">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:b.inner">
<xs:attributeGroup ref="xhtml:b.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="b.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="b.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="code">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:code.inner">
<xs:attributeGroup ref="xhtml:code.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="code.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="code.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="var">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:var.inner">
<xs:attributeGroup ref="xhtml:var.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="var.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="var.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="samp">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:samp.inner">
<xs:attributeGroup ref="xhtml:samp.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="samp.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="samp.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="kbd">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:kbd.inner">
<xs:attributeGroup ref="xhtml:kbd.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="kbd.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="kbd.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="sup">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:sup.inner">
<xs:attributeGroup ref="xhtml:sup.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="sup.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="sup.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="sub">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:sub.inner">
<xs:attributeGroup ref="xhtml:sub.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="sub.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="sub.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="q">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:q.inner">
<xs:attributeGroup ref="xhtml:q.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="q.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="cite" type="common.data.uri"/>
</xs:attributeGroup>
<xs:complexType name="q.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="cite">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:cite.inner">
<xs:attributeGroup ref="xhtml:cite.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="cite.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="cite.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="span">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:span.inner">
<xs:attributeGroup ref="xhtml:span.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="span.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="span.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- REVISIT allow ol and ul? -->
<xs:element name="bdo">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:bdo.inner">
<xs:attributeGroup ref="xhtml:bdo.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="bdo.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<!-- dir required in Schematron -->
<xs:complexType name="bdo.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="br">
<xs:complexType>
<xs:attributeGroup ref="xhtml:br.attrs"/>
</xs:complexType>
</xs:element>
<xs:element name="wbr">
<xs:complexType>
<xs:attributeGroup ref="xhtml:common.attrs"/>
</xs:complexType>
</xs:element>
<xs:element name="s">
<xs:complexType>
<xs:attributeGroup ref="xhtml:common.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="br.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:element name="p">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:p.inner">
<xs:attributeGroup ref="xhtml:p.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="p.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="p.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- REVISIT lists in span? -->
<xs:element name="hr">
<xs:complexType>
<xs:attributeGroup ref="xhtml:hr.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="hr.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:element name="pre">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:pre.inner">
<xs:attributeGroup ref="xhtml:pre.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="pre.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="pre.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="ul">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:ul.inner">
<xs:attributeGroup ref="xhtml:ul.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="ul.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="ul.inner">
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:li.elem"/>
</xs:complexType>
<xs:group name="li.elem">
<xs:annotation>
<xs:documentation>Unordered List Item: &lt;li&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="li">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:li.inner">
<xs:attributeGroup ref="xhtml:li.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="li.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="li.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="ol">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:ol.inner">
<xs:attributeGroup ref="xhtml:ol.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="ol.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="start" type="common.data.integer"/>
<xs:attribute name="reversed">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="reversed"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="ol.attrs.reversed">
<xs:attribute name="reversed" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="reversed"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="ol.inner">
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:oli.elem"/>
</xs:complexType>
<xs:group name="oli.elem">
<xs:annotation>
<xs:documentation>Ordered List Item: &lt;li&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="li">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:oli.inner">
<xs:attributeGroup ref="xhtml:oli.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="oli.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="value" type="common.data.integer"/>
</xs:attributeGroup>
<xs:complexType name="oli.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="dl">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:dl.inner">
<xs:attributeGroup ref="xhtml:dl.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="dl.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="dl.inner">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element maxOccurs="unbounded" ref="xhtml:dt"/>
<xs:group maxOccurs="unbounded" ref="xhtml:dd.elem"/>
</xs:sequence>
</xs:complexType>
<xs:element name="dt">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:dt.inner">
<xs:attributeGroup ref="xhtml:dt.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="dt.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="dt.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:group name="dd.elem">
<xs:annotation>
<xs:documentation>Definition Description: &lt;dd&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="dd">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:dd.inner">
<xs:attributeGroup ref="xhtml:dd.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="dd.elem.phrasing">
<xs:sequence>
<xs:element name="dd">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:dd.inner.phrasing">
<xs:attributeGroup ref="xhtml:dd.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="dd.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="dd.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:complexType name="dd.inner.phrasing" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="div">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:div.inner">
<xs:attributeGroup ref="xhtml:div.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="div.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="div.inner" mixed="true">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:style.elem.scoped"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:element name="legend">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:legend.inner">
<xs:attributeGroup ref="xhtml:legend.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="figcaption">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:figcaption.inner">
<xs:attributeGroup ref="xhtml:figcaption.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="legend.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="legend.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="h1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:h1.inner">
<xs:attributeGroup ref="xhtml:h1.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="h1.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="h1.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="h2">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:h2.inner">
<xs:attributeGroup ref="xhtml:h2.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="h2.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="h2.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="h3">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:h3.inner">
<xs:attributeGroup ref="xhtml:h3.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="h3.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="h3.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="h4">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:h4.inner">
<xs:attributeGroup ref="xhtml:h4.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="h4.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="h4.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="h5">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:h5.inner">
<xs:attributeGroup ref="xhtml:h5.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="h5.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="h5.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="h6">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:h6.inner">
<xs:attributeGroup ref="xhtml:h6.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="h6.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="h6.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="hgroup">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:hgroup.inner">
<xs:attributeGroup ref="xhtml:hgroup.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="hgroup.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="hgroup.inner">
<xs:choice maxOccurs="unbounded">
<xs:element ref="xhtml:h1"/>
<xs:element ref="xhtml:h2"/>
<xs:element ref="xhtml:h3"/>
<xs:element ref="xhtml:h4"/>
<xs:element ref="xhtml:h5"/>
<xs:element ref="xhtml:h6"/>
</xs:choice>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="address">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:address.inner">
<xs:attributeGroup ref="xhtml:address.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="address.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="address.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="blockquote">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:blockquote.inner">
<xs:attributeGroup ref="xhtml:blockquote.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="blockquote.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="cite" type="common.data.uri"/>
</xs:attributeGroup>
<xs:complexType name="blockquote.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:complexType name="figcaption.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:attributeGroup name="figcaption.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:element name="section">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:section.inner">
<xs:attributeGroup ref="xhtml:section.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="section.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="section.inner" mixed="true">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:style.elem.scoped"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:element name="nav">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:nav.inner">
<xs:attributeGroup ref="xhtml:nav.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="nav.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="nav.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="article">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:article.inner">
<xs:attributeGroup ref="xhtml:article.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="article.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="pubdate" type="common.data.datetime"/>
</xs:attributeGroup>
<xs:complexType name="article.inner" mixed="true">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:style.elem"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:element name="aside">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:aside.inner">
<xs:attributeGroup ref="xhtml:aside.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="aside.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="aside.inner" mixed="true">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:style.elem"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:element name="header">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:header.inner">
<xs:attributeGroup ref="xhtml:header.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="header.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="header.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="footer">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:footer.inner">
<xs:attributeGroup ref="xhtml:footer.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="footer.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="footer.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="dialog">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:dialog.inner">
<xs:attributeGroup ref="xhtml:dialog.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="dialog.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="dialog.inner">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="xhtml:dt"/>
<xs:group ref="xhtml:dd.elem"/>
</xs:sequence>
</xs:complexType>
<!-- ##################################################################### -->
<xs:attributeGroup name="edit.attrs.cite">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Revision Annotations #</xs:documentation>
</xs:annotation>
<xs:attribute name="cite" use="required" type="common.data.uri"/>
</xs:attributeGroup>
<xs:group name="ins.elem.flow">
<xs:annotation>
<xs:documentation>Inserts: &lt;ins&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ins">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:ins.inner.flow">
<xs:attributeGroup ref="xhtml:ins.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="ins.elem.phrasing">
<xs:sequence>
<xs:element name="ins">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:ins.inner.phrasing">
<xs:attributeGroup ref="xhtml:ins.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="ins.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="cite" type="common.data.uri"/>
<xs:attribute name="datetime" type="common.data.datetime"/>
</xs:attributeGroup>
<xs:complexType name="ins.inner.flow" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:complexType name="ins.inner.phrasing" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:group name="del.elem.flow">
<xs:annotation>
<xs:documentation>Deletions: &lt;del&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="del">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:del.inner.flow">
<xs:attributeGroup ref="xhtml:del.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="del.elem.phrasing">
<xs:sequence>
<xs:element name="del">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:del.inner.phrasing">
<xs:attributeGroup ref="xhtml:del.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="del.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="cite" type="common.data.uri"/>
<xs:attribute name="datetime" type="common.data.datetime"/>
</xs:attributeGroup>
<xs:complexType name="del.inner.flow" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:complexType name="del.inner.phrasing" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="img">
<xs:complexType>
<xs:attributeGroup ref="xhtml:img.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="img.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:img.attrs.src"/>
<xs:attribute name="alt"/>
<xs:attribute name="height" type="common.data.integer.non-negative"/>
<xs:attribute name="width" type="common.data.integer.non-negative"/>
<xs:attribute name="usemap" type="common.data.hash-name"/>
<xs:attribute name="ismap">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ismap"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="border" type="common.data.zero"/>
</xs:attributeGroup>
<xs:attributeGroup name="img.attrs.src">
<xs:attribute name="src" use="required" type="common.data.uri"/>
</xs:attributeGroup>
<xs:element name="embed">
<xs:complexType>
<xs:attributeGroup ref="xhtml:embed.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="embed.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="src" type="common.data.uri"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="height" type="common.data.integer.positive"/>
<xs:attribute name="width" type="common.data.integer.positive"/>
<xs:attributeGroup ref="xhtml:embed.attrs.other"/>
</xs:attributeGroup>
<xs:attributeGroup name="embed.attrs.other">
<xs:anyAttribute namespace="##local" processContents="skip"/>
</xs:attributeGroup>
<xs:group name="object.elem.flow">
<xs:annotation>
<xs:documentation>Generic Objects: &lt;object&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="object">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:object.inner.flow">
<xs:attributeGroup ref="xhtml:object.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="object.elem.phrasing">
<xs:sequence>
<xs:element name="object">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:object.inner.phrasing">
<xs:attributeGroup ref="xhtml:object.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="object.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="data" type="common.data.uri"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="height" type="common.data.integer.positive"/>
<xs:attribute name="width" type="common.data.integer.positive"/>
<xs:attribute name="usemap" type="common.data.hash-name"/>
<xs:attribute name="name" type="common.data.browsing-context"/>
<xs:attributeGroup ref="common-form.attrs.form"/>
</xs:attributeGroup>
<xs:complexType name="object.inner.flow" mixed="true">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:param"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="object.inner.phrasing" mixed="true">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:param"/>
<xs:group ref="common.inner.phrasing"/>
</xs:sequence>
</xs:complexType>
<xs:element name="param">
<xs:complexType>
<xs:attributeGroup ref="xhtml:param.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="param.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:param.attrs.name"/>
<xs:attributeGroup ref="xhtml:param.attrs.value"/>
</xs:attributeGroup>
<xs:attributeGroup name="param.attrs.name">
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="param.attrs.value">
<xs:attribute name="value" use="required" type="xs:string"/>
</xs:attributeGroup>
<xs:element name="iframe">
<xs:complexType mixed="true">
<xs:attributeGroup ref="xhtml:iframe.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="iframe.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="src" type="common.data.uri"/>
<xs:attribute name="name" type="common.data.browsing-context"/>
<xs:attribute name="width" type="common.data.integer.positive"/>
<xs:attribute name="height" type="common.data.integer.positive"/>
<xs:attribute name="sandbox" type="SandboxType"/>
<xs:attribute name="seamless">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="seamless"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="srcdoc" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="map.elem.flow">
<xs:annotation>
<xs:documentation>Map Definition: &lt;map&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="map">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:map.inner.flow">
<xs:attributeGroup ref="xhtml:map.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="map.elem.phrasing">
<xs:sequence>
<xs:element name="map">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:map.inner.phrasing">
<xs:attributeGroup ref="xhtml:map.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="map.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:map.attrs.name"/>
</xs:attributeGroup>
<!-- REVISIT make id required in Schematron -->
<xs:attributeGroup name="map.attrs.name">
<xs:attribute name="name" use="required" type="common.data.name"/>
</xs:attributeGroup>
<xs:complexType name="map.inner.flow" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:complexType name="map.inner.phrasing" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="area">
<xs:complexType>
<xs:attributeGroup ref="xhtml:area.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="area.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="alt"/>
<xs:attribute name="href" type="common.data.uri"/>
<xs:attribute name="target" type="common.data.browsing-context-or-keyword"/>
<xs:attribute name="ping" type="common.data.uris"/>
<xs:attribute name="rel" type="common.data.tokens"/>
<xs:attribute name="media" type="common.data.mediaquery"/>
<xs:attribute name="hreflang" type="common.data.langcode"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attributeGroup ref="xhtml:area.attrs.shape"/>
</xs:attributeGroup>
<xs:attributeGroup name="area.attrs.shape">
<xs:attribute name="shape" type="xs:string"/>
<xs:attribute name="coords" type="xs:string"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:element name="ruby">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:ruby.inner">
<xs:attributeGroup ref="xhtml:ruby.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="ruby.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="ruby.inner" mixed="true">
<xs:sequence maxOccurs="unbounded">
<xs:group ref="common.inner.phrasing"/>
<xs:choice>
<xs:element ref="xhtml:rt"/>
<xs:sequence>
<xs:group ref="xhtml:rp.elem.start"/>
<xs:element ref="xhtml:rt"/>
<xs:group ref="xhtml:rp.elem.end"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="rt">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:rt.inner">
<xs:attributeGroup ref="xhtml:rt.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="rt.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="rt.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:group name="rp.elem.start">
<xs:annotation>
<xs:documentation>Ruby Parenthesis: &lt;rp&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="rp">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xhtml:rp.inner.start">
<xs:attributeGroup ref="xhtml:rp.attrs"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="rp.elem.end">
<xs:sequence>
<xs:element name="rp">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xhtml:rp.inner.end">
<xs:attributeGroup ref="xhtml:rp.attrs"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="rp.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:simpleType name="rp.inner.start">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="rp.inner.end">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ##################################################################### -->
<!-- src not included -->
<xs:attributeGroup name="media.attrs">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Advanced Embedded Content #</xs:documentation>
</xs:annotation>
<xs:attribute name="autoplay">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autoplay"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autobuffer">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autobuffer"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="controls">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="controls"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="loop">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="loop"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="source">
<xs:complexType>
<xs:attributeGroup ref="xhtml:source.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="source.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:source.attrs.src"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="media" type="common.data.mediaquery"/>
</xs:attributeGroup>
<xs:attributeGroup name="source.attrs.src">
<xs:attribute name="src" use="required" type="common.data.uri"/>
</xs:attributeGroup>
<xs:complexType name="media.source" mixed="true">
<xs:annotation>
<xs:documentation>Media Source</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:source"/>
</xs:sequence>
<xs:attribute name="src" type="common.data.uri"/>
</xs:complexType>
<xs:attributeGroup name="media.attrs.src">
<xs:attribute name="src" use="required" type="common.data.uri"/>
</xs:attributeGroup>
<xs:group name="video.elem.flow">
<xs:annotation>
<xs:documentation>Video: &lt;video&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="video">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:video.inner.flow">
<xs:attributeGroup ref="xhtml:video.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="video.elem.phrasing">
<xs:sequence>
<xs:element name="video">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:video.inner.phrasing">
<xs:attributeGroup ref="xhtml:video.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="video.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:media.attrs"/>
<xs:attribute name="poster" type="common.data.uri"/>
<xs:attribute name="height" type="common.data.integer.positive"/>
<xs:attribute name="width" type="common.data.integer.positive"/>
</xs:attributeGroup>
<xs:complexType name="video.inner.flow" mixed="true">
<xs:complexContent>
<xs:extension base="xhtml:media.source">
<xs:group ref="common.inner.flow"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="video.inner.phrasing" mixed="true">
<xs:complexContent>
<xs:extension base="xhtml:media.source">
<xs:group ref="common.inner.phrasing"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:group name="audio.elem.flow">
<xs:annotation>
<xs:documentation>Audio: &lt;audio&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="audio">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:audio.inner.flow">
<xs:attributeGroup ref="xhtml:audio.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="audio.elem.phrasing">
<xs:sequence>
<xs:element name="audio">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:audio.inner.phrasing">
<xs:attributeGroup ref="xhtml:audio.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="audio.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:media.attrs"/>
</xs:attributeGroup>
<xs:complexType name="audio.inner.flow" mixed="true">
<xs:complexContent>
<xs:extension base="xhtml:media.source">
<xs:group ref="common.inner.flow"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="audio.inner.phrasing" mixed="true">
<xs:complexContent>
<xs:extension base="xhtml:media.source">
<xs:group ref="common.inner.phrasing"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="figure">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:figure.inner">
<xs:attributeGroup ref="xhtml:figure.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="figure.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="figure.inner" mixed="true">
<xs:choice>
<xs:sequence>
<xs:element ref="xhtml:legend"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
<xs:sequence>
<xs:group ref="common.inner.flow"/>
<xs:element minOccurs="0" ref="xhtml:legend"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="xhtml:figcaption"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
<xs:sequence>
<xs:group ref="common.inner.flow"/>
<xs:element minOccurs="0" ref="xhtml:figcaption"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
<xs:element name="script">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:script.inner.embedded">
<xs:attributeGroup ref="xhtml:script.attrs.embedded"/>
<xs:attributeGroup ref="xhtml:script.attrs.imported"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ##################################################################### -->
<xs:group name="script.elem.embedded">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Core Scripting #</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="script"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="script.attrs.embedded">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="language" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="script.elem.imported">
<xs:sequence>
<xs:element ref="script"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="script.attrs.imported">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:script.attrs.src"/>
<xs:attribute name="defer">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="defer"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="async">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="async"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="type" type="common.data.mimetype"/>
<xs:attribute name="charset" type="common.data.charset"/>
<xs:attribute name="language" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="script.attrs.src">
<xs:attribute name="src" use="optional" type="common.data.uri"/>
</xs:attributeGroup>
<xs:complexType name="script.inner.embedded">
<xs:complexContent>
<xs:extension base="common.inner.anything"/>
</xs:complexContent>
</xs:complexType>
<xs:group name="script.elem">
<xs:choice>
<xs:group ref="xhtml:script.elem.embedded"/>
<xs:group ref="xhtml:script.elem.imported"/>
</xs:choice>
</xs:group>
<xs:group name="noscript.inner.head">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="xhtml:link"/>
<xs:group ref="xhtml:meta.http-equiv.default-style.elem"/>
<xs:group ref="xhtml:meta.http-equiv.refresh.elem"/>
<xs:group ref="xhtml:style.elem"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:group name="noscript.inner.phrasing">
<xs:sequence>
<xs:group ref="common.inner.phrasing"/>
</xs:sequence>
</xs:group>
<xs:group name="noscript.inner.flow">
<xs:sequence>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="noscript.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:attributeGroup name="common.attrs.scripting">
<xs:annotation>
<xs:documentation>Event Handler Attribute Definitions</xs:documentation>
</xs:annotation>
<xs:attribute name="onabort" type="xs:string"/>
<xs:attribute name="onblur" type="xs:string"/>
<xs:attribute name="oncanplay" type="xs:string"/>
<xs:attribute name="oncanplaythrough" type="xs:string"/>
<xs:attribute name="onchange" type="xs:string"/>
<xs:attribute name="onclick" type="xs:string"/>
<xs:attribute name="oncontextmenu" type="xs:string"/>
<xs:attribute name="ondblclick" type="xs:string"/>
<xs:attribute name="ondrag" type="xs:string"/>
<xs:attribute name="ondragend" type="xs:string"/>
<xs:attribute name="ondragenter" type="xs:string"/>
<xs:attribute name="ondragleave" type="xs:string"/>
<xs:attribute name="ondragover" type="xs:string"/>
<xs:attribute name="ondragstart" type="xs:string"/>
<xs:attribute name="ondrop" type="xs:string"/>
<xs:attribute name="ondurationchange" type="xs:string"/>
<xs:attribute name="onemptied" type="xs:string"/>
<xs:attribute name="onended" type="xs:string"/>
<xs:attribute name="onerror" type="xs:string"/>
<xs:attribute name="onfocus" type="xs:string"/>
<xs:attribute name="onformchange" type="xs:string"/>
<xs:attribute name="onforminput" type="xs:string"/>
<xs:attribute name="oninput" type="xs:string"/>
<xs:attribute name="oninvalid" type="xs:string"/>
<xs:attribute name="onkeydown" type="xs:string"/>
<xs:attribute name="onkeypress" type="xs:string"/>
<xs:attribute name="onkeyup" type="xs:string"/>
<xs:attribute name="onload" type="xs:string"/>
<xs:attribute name="onloadeddata" type="xs:string"/>
<xs:attribute name="onloadedmetadata" type="xs:string"/>
<xs:attribute name="onloadstart" type="xs:string"/>
<xs:attribute name="onmousedown" type="xs:string"/>
<xs:attribute name="onmousemove" type="xs:string"/>
<xs:attribute name="onmouseout" type="xs:string"/>
<xs:attribute name="onmouseover" type="xs:string"/>
<xs:attribute name="onmouseup" type="xs:string"/>
<xs:attribute name="onmousewheel" type="xs:string"/>
<xs:attribute name="onpause" type="xs:string"/>
<xs:attribute name="onplay" type="xs:string"/>
<xs:attribute name="onplaying" type="xs:string"/>
<xs:attribute name="onprogress" type="xs:string"/>
<xs:attribute name="onratechange" type="xs:string"/>
<xs:attribute name="onreadystatechange" type="xs:string"/>
<xs:attribute name="onscroll" type="xs:string"/>
<xs:attribute name="onseeked" type="xs:string"/>
<xs:attribute name="onseeking" type="xs:string"/>
<xs:attribute name="onselect" type="xs:string"/>
<xs:attribute name="onshow" type="xs:string"/>
<xs:attribute name="onstalled" type="xs:string"/>
<xs:attribute name="onsubmit" type="xs:string"/>
<xs:attribute name="onsuspend" type="xs:string"/>
<xs:attribute name="ontimeupdate" type="xs:string"/>
<xs:attribute name="onvolumechange" type="xs:string"/>
<xs:attribute name="onwaiting" type="xs:string"/>
</xs:attributeGroup>
<!-- ##################################################################### -->
<xs:attributeGroup name="tables.attrs.alignment">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Tables #</xs:documentation>
</xs:annotation>
<xs:attribute name="align">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="left"/>
<xs:enumeration value="center"/>
<xs:enumeration value="right"/>
<xs:enumeration value="justify"/>
<xs:enumeration value="char"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="char">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="."/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="valign">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="top"/>
<xs:enumeration value="middle"/>
<xs:enumeration value="bottom"/>
<xs:enumeration value="baseline"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="table">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:table.inner">
<xs:attributeGroup ref="xhtml:table.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="table.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="summary" type="xs:string"/>
</xs:attributeGroup>
<xs:complexType name="table.inner">
<xs:sequence>
<xs:element minOccurs="0" ref="xhtml:caption"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:colgroup"/>
<xs:element minOccurs="0" ref="xhtml:thead"/>
<xs:choice>
<xs:sequence>
<xs:element ref="xhtml:tfoot"/>
<xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:tbody"/>
<xs:element maxOccurs="unbounded" ref="xhtml:tr"/>
</xs:choice>
</xs:sequence>
<xs:sequence>
<xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:tbody"/>
<xs:element maxOccurs="unbounded" ref="xhtml:tr"/>
</xs:choice>
<xs:element minOccurs="0" ref="xhtml:tfoot"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="caption">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:caption.inner">
<xs:attributeGroup ref="xhtml:caption.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="caption.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="caption.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="colgroup">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:colgroup.inner">
<xs:attributeGroup ref="xhtml:colgroup.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="colgroup.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="colgroup.inner">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:col"/>
</xs:sequence>
<xs:attribute name="span" type="common.data.integer.positive"/>
</xs:complexType>
<xs:element name="col">
<xs:complexType>
<xs:attributeGroup ref="xhtml:col.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="col.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="span" type="common.data.integer.positive"/>
</xs:attributeGroup>
<xs:element name="thead">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:thead.inner">
<xs:attributeGroup ref="xhtml:thead.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="thead.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="thead.inner">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:tr"/>
</xs:sequence>
</xs:complexType>
<xs:element name="tfoot">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:tfoot.inner">
<xs:attributeGroup ref="xhtml:tfoot.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="tfoot.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="tfoot.inner">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:tr"/>
</xs:sequence>
</xs:complexType>
<xs:element name="tbody">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:tbody.inner">
<xs:attributeGroup ref="xhtml:tbody.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="tbody.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="tbody.inner">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:tr"/>
</xs:sequence>
</xs:complexType>
<!-- ##################################################################### -->
<xs:element name="tr">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:tr.inner">
<xs:attributeGroup ref="xhtml:tr.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="tr.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="tr.inner">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="xhtml:td"/>
<xs:element ref="xhtml:th"/>
</xs:choice>
</xs:complexType>
<xs:attributeGroup name="tables.attrs.cell-structure">
<xs:annotation>
<xs:documentation>Common Table Cell Attributes</xs:documentation>
</xs:annotation>
<xs:attribute name="colspan" type="common.data.integer.positive"/>
<xs:attribute name="rowspan" type="common.data.integer.non-negative"/>
</xs:attributeGroup>
<xs:attributeGroup name="tables.attrs.define-headers">
<xs:attribute name="scope">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="row"/>
<xs:enumeration value="col"/>
<xs:enumeration value="rowgroup"/>
<xs:enumeration value="colgroup"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="td">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:td.inner">
<xs:attributeGroup ref="xhtml:td.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="td.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:tables.attrs.cell-structure"/>
<xs:attribute name="headers" type="common.data.idrefs"/>
</xs:attributeGroup>
<xs:complexType name="td.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="th">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:th.inner">
<xs:attributeGroup ref="xhtml:th.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="th.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:tables.attrs.cell-structure"/>
<xs:attribute name="scope">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="row"/>
<xs:enumeration value="col"/>
<xs:enumeration value="rowgroup"/>
<xs:enumeration value="colgroup"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="headers" type="common.data.idrefs"/>
</xs:attributeGroup>
<xs:complexType name="th.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<!-- ##################################################################### -->
<xs:simpleType name="form.data.mimetypelist">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Datatypes related to forms #</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.charsetlist">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!--
FIXME should be a "a space- and/or comma-delimited
list of charset values"
-->
<xs:simpleType name="form.data.pattern">
<xs:annotation>
<xs:documentation>ECMAScript Regular Expression</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.datetime-local">
<xs:annotation>
<xs:documentation>Temporal</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.date">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.month">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.week">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.time">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.emailaddress">
<xs:annotation>
<xs:documentation>Email</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.emailaddresslist">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="form.data.color">
<xs:annotation>
<xs:documentation>Color</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ##################################################################### -->
<xs:attributeGroup name="common-form.attrs">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Web Forms 1.0 markup #</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="disabled">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="disabled"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="common-form.attrs.form"/>
</xs:attributeGroup>
<!-- REVISIT tabindex goes in common.attrs -->
<xs:attributeGroup name="input.attrs.checked">
<xs:annotation>
<xs:documentation>Shared attributes for &lt;input&gt;</xs:documentation>
</xs:annotation>
<xs:attribute name="checked">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="checked"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="input">
<xs:complexType>
<xs:attributeGroup ref="xhtml:input.text.attrs"/>
<xs:attributeGroup ref="xhtml:input.password.attrs"/>
<xs:attributeGroup ref="xhtml:input.checkbox.attrs"/>
<xs:attributeGroup ref="xhtml:input.radio.attrs"/>
<xs:attributeGroup ref="xhtml:input.button.attrs"/>
<xs:attributeGroup ref="xhtml:input.submit.attrs"/>
<xs:attributeGroup ref="xhtml:input.reset.attrs"/>
<xs:attributeGroup ref="xhtml:input.file.attrs"/>
<xs:attributeGroup ref="xhtml:input.hidden.attrs"/>
<xs:attributeGroup ref="xhtml:input.image.attrs"/>
<xs:attributeGroup ref="xhtml:input.datetime.attrs"/>
<xs:attributeGroup ref="xhtml:input.datetime-local.attrs"/>
<xs:attributeGroup ref="xhtml:input.date.attrs"/>
<xs:attributeGroup ref="xhtml:input.month.attrs"/>
<xs:attributeGroup ref="xhtml:input.time.attrs"/>
<xs:attributeGroup ref="xhtml:input.week.attrs"/>
<xs:attributeGroup ref="xhtml:input.number.attrs"/>
<xs:attributeGroup ref="xhtml:input.range.attrs"/>
<xs:attributeGroup ref="xhtml:input.email.attrs"/>
<xs:attributeGroup ref="xhtml:input.url.attrs"/>
<xs:attributeGroup ref="xhtml:input.search.attrs"/>
<xs:attributeGroup ref="xhtml:input.tel.attrs"/>
<xs:attributeGroup ref="xhtml:input.color.attrs"/>
</xs:complexType>
</xs:element>
<xs:group name="input.text.elem">
<xs:annotation>
<xs:documentation>Text Field: &lt;input type='text'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.text.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="pattern" type="xhtml:form.data.pattern"/>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="placeholder" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="input.elem">
<xs:choice>
<xs:group ref="xhtml:input.text.elem"/>
<xs:group ref="xhtml:input.password.elem"/>
<xs:group ref="xhtml:input.checkbox.elem"/>
<xs:group ref="xhtml:input.radio.elem"/>
<xs:group ref="xhtml:input.button.elem"/>
<xs:group ref="xhtml:input.submit.elem"/>
<xs:group ref="xhtml:input.reset.elem"/>
<xs:group ref="xhtml:input.file.elem"/>
<xs:group ref="xhtml:input.hidden.elem"/>
<xs:group ref="xhtml:input.image.elem"/>
<xs:group ref="xhtml:input.datetime.elem"/>
<xs:group ref="xhtml:input.datetime-local.elem"/>
<xs:group ref="xhtml:input.date.elem"/>
<xs:group ref="xhtml:input.month.elem"/>
<xs:group ref="xhtml:input.time.elem"/>
<xs:group ref="xhtml:input.week.elem"/>
<xs:group ref="xhtml:input.number.elem"/>
<xs:group ref="xhtml:input.range.elem"/>
<xs:group ref="xhtml:input.email.elem"/>
<xs:group ref="xhtml:input.url.elem"/>
<xs:group ref="xhtml:input.search.elem"/>
<xs:group ref="xhtml:input.tel.elem"/>
<xs:group ref="xhtml:input.color.elem"/>
</xs:choice>
</xs:group>
<xs:group name="input.password.elem">
<xs:annotation>
<xs:documentation>Password Field: &lt;input type='password'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.password.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="pattern" type="xhtml:form.data.pattern"/>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="placeholder" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="input.attrs.type">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="text"/>
<xs:enumeration value="password"/>
<xs:enumeration value="checkbox"/>
<xs:enumeration value="radio"/>
<xs:enumeration value="button"/>
<xs:enumeration value="submit"/>
<xs:enumeration value="reset"/>
<xs:enumeration value="file"/>
<xs:enumeration value="hidden"/>
<xs:enumeration value="image"/>
<xs:enumeration value="datetime"/>
<xs:enumeration value="datetime-local"/>
<xs:enumeration value="date"/>
<xs:enumeration value="month"/>
<xs:enumeration value="time"/>
<xs:enumeration value="week"/>
<xs:enumeration value="number"/>
<xs:enumeration value="range"/>
<xs:enumeration value="email"/>
<xs:enumeration value="url"/>
<xs:enumeration value="search"/>
<xs:enumeration value="tel"/>
<xs:enumeration value="color"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.checkbox.elem">
<xs:annotation>
<xs:documentation>Checkbox: &lt;input type='checkbox'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.checkbox.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="checked">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="checked"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.radio.elem">
<xs:annotation>
<xs:documentation>Radiobutton: &lt;input type='radio'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.radio.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="checked">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="checked"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.button.elem">
<xs:annotation>
<xs:documentation>Scripting Hook Button: &lt;input type='button'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.button.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<!-- REVISIT should this be enabled by a scripting module only? -->
<xs:group name="input.submit.elem">
<xs:annotation>
<xs:documentation>Submit Button: &lt;input type='submit'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.submit.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="formaction" type="common.data.uri"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="formenctype" type="xhtml:shared-form.attrs.formenctype.data"/>
<xs:attribute name="formmethod" type="xhtml:shared-form.attrs.formmethod.data"/>
<xs:attribute name="formtarget" type="common.data.browsing-context-or-keyword"/>
<xs:attribute name="formnovalidate">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="formnovalidate"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.reset.elem">
<xs:annotation>
<xs:documentation>Reset Button: &lt;input type='reset'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.reset.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<!-- REVISIT does reset make sense outside a form? -->
<xs:group name="input.file.elem">
<xs:annotation>
<xs:documentation>File Upload: &lt;input type='file'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.file.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="accept" type="xhtml:form.data.mimetypelist"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="multiple">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="multiple"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.hidden.elem">
<xs:annotation>
<xs:documentation>Hidden String: &lt;input type='hidden'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.hidden.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="input.image.elem">
<xs:annotation>
<xs:documentation>Image Submit Button: &lt;input type='image'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.image.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attributeGroup ref="xhtml:input.image.attrs.alt"/>
<xs:attribute name="src" type="common.data.uri"/>
<xs:attribute name="formaction" type="common.data.uri"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="formenctype" type="xhtml:shared-form.attrs.formenctype.data"/>
<xs:attribute name="formmethod" type="xhtml:shared-form.attrs.formmethod.data"/>
<xs:attribute name="formtarget" type="common.data.browsing-context-or-keyword"/>
<xs:attribute name="formnovalidate">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="formnovalidate"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="height" type="common.data.integer.positive"/>
<xs:attribute name="width" type="common.data.integer.positive"/>
</xs:attributeGroup>
<xs:attributeGroup name="input.image.attrs.alt">
<xs:attribute name="alt" type="xs:string"/>
</xs:attributeGroup>
<xs:element name="textarea">
<xs:complexType mixed="true">
<xs:attributeGroup ref="xhtml:textarea.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="textarea.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="placeholder" type="xs:string"/>
<xs:attribute name="rows" type="common.data.integer.positive"/>
<xs:attribute name="wrap" type="xs:string"/>
<xs:attribute name="cols" type="common.data.integer.positive"/>
</xs:attributeGroup>
<!-- This is ugly. -->
<!--
Due to limitations with interleave, handling single/multiple selection
enforcement in RELAX NG seems to be possible but really awkward.
Tried it. Leaving it to Schematron.
-->
<xs:element name="option">
<xs:complexType mixed="true">
<xs:attributeGroup ref="xhtml:option.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="option.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="disabled">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="disabled"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="selected">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="selected"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="label" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:attributeGroup>
<xs:element name="optgroup">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:optgroup.inner">
<xs:attributeGroup ref="xhtml:optgroup.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="optgroup.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:optgroup.attrs.label"/>
<xs:attribute name="disabled">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="disabled"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="optgroup.attrs.label">
<xs:attribute name="label" use="required" type="xs:string"/>
</xs:attributeGroup>
<xs:complexType name="optgroup.inner">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="xhtml:option"/>
</xs:sequence>
</xs:complexType>
<xs:element name="select">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:select.inner">
<xs:attributeGroup ref="xhtml:select.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="select.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="multiple">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="multiple"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="select.inner">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="xhtml:optgroup"/>
<xs:element ref="xhtml:option"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="button.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="button">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:button.inner">
<xs:attributeGroup ref="xhtml:button.submit.attrs"/>
<xs:attributeGroup ref="xhtml:button.reset.attrs"/>
<xs:attributeGroup ref="xhtml:button.button.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:group name="button.submit.elem">
<xs:annotation>
<xs:documentation>Complex Submit Button: &lt;button type='submit'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="button"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="button.submit.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="button.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="formaction" type="common.data.uri"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="formenctype" type="xhtml:shared-form.attrs.formenctype.data"/>
<xs:attribute name="formmethod" type="xhtml:shared-form.attrs.formmethod.data"/>
<xs:attribute name="formtarget" type="common.data.browsing-context-or-keyword"/>
<xs:attribute name="formnovalidate">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="formnovalidate"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="button.elem">
<xs:choice>
<xs:group ref="xhtml:button.submit.elem"/>
<xs:group ref="xhtml:button.reset.elem"/>
<xs:group ref="xhtml:button.button.elem"/>
</xs:choice>
</xs:group>
<xs:group name="button.reset.elem">
<xs:annotation>
<xs:documentation>Complex Reset Button: &lt;button type='reset'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="button"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="button.reset.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:button.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="button.attrs.type">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="submit"/>
<xs:enumeration value="reset"/>
<xs:enumeration value="button"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="button.button.elem">
<xs:annotation>
<xs:documentation>Complex Push Button: &lt;button type='button'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="button"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="button.button.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:button.attrs.type"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="form">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:form.inner">
<xs:attributeGroup ref="xhtml:form.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="form.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="action" type="common.data.uri"/>
<xs:attribute name="method" type="xhtml:form.attrs.method.data"/>
<xs:attribute name="enctype" type="xhtml:form.attrs.enctype.data"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="accept-charset" type="xhtml:form.data.charsetlist"/>
<xs:attribute name="novalidate">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="novalidate"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="target" type="common.data.browsing-context-or-keyword"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:simpleType name="form.attrs.method.data">
<xs:union>
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="form.attrs.enctype.data">
<xs:union memberTypes="xs:string">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:complexType name="form.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="fieldset">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:fieldset.inner">
<xs:attributeGroup ref="xhtml:fieldset.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="fieldset.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
</xs:attributeGroup>
<xs:complexType name="fieldset.inner" mixed="true">
<xs:sequence>
<xs:element minOccurs="0" ref="xhtml:legend"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:element name="label">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:label.inner">
<xs:attributeGroup ref="xhtml:label.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="label.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="for" type="common.data.idref"/>
<xs:attributeGroup ref="common-form.attrs.form"/>
</xs:attributeGroup>
<xs:complexType name="label.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:simpleType name="shared-form.attrs.formenctype.data">
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
<xs:simpleType name="shared-form.attrs.formmethod.data">
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
<xs:group name="input.datetime.elem">
<xs:annotation>
<xs:documentation>Global Date and Time: &lt;input type='datetime'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.datetime.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="common.data.datetime"/>
<xs:attribute name="max" type="common.data.datetime"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="common.data.datetime"/>
</xs:attributeGroup>
<xs:group name="input.datetime-local.elem">
<xs:annotation>
<xs:documentation>Date and Time with No Time Zone Information: &lt;input type='datetime-local'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.datetime-local.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="xhtml:form.data.datetime-local"/>
<xs:attribute name="max" type="xhtml:form.data.datetime-local"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xhtml:form.data.datetime-local"/>
</xs:attributeGroup>
<xs:group name="input.date.elem">
<xs:annotation>
<xs:documentation>Date: &lt;input type='date'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.date.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="xhtml:form.data.date"/>
<xs:attribute name="max" type="xhtml:form.data.date"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xhtml:form.data.date"/>
</xs:attributeGroup>
<xs:group name="input.month.elem">
<xs:annotation>
<xs:documentation>Year and Month: &lt;input type='month'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.month.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="xhtml:form.data.month"/>
<xs:attribute name="max" type="xhtml:form.data.month"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xhtml:form.data.month"/>
</xs:attributeGroup>
<xs:group name="input.time.elem">
<xs:annotation>
<xs:documentation>Time without Time Zone Information: &lt;input type='time'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.time.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="xhtml:form.data.time"/>
<xs:attribute name="max" type="xhtml:form.data.time"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xhtml:form.data.time"/>
</xs:attributeGroup>
<xs:group name="input.week.elem">
<xs:annotation>
<xs:documentation>Year and Week: &lt;input type='week'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.week.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="xhtml:form.data.week"/>
<xs:attribute name="max" type="xhtml:form.data.week"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="xhtml:form.data.week"/>
</xs:attributeGroup>
<xs:group name="input.number.elem">
<xs:annotation>
<xs:documentation>Number: &lt;input type='number'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.number.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="common.data.float"/>
<xs:attribute name="max" type="common.data.float"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="common.data.float"/>
</xs:attributeGroup>
<xs:group name="input.range.elem">
<xs:annotation>
<xs:documentation>Imprecise Number: &lt;input type='range'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.range.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="min" type="common.data.float"/>
<xs:attribute name="max" type="common.data.float"/>
<xs:attribute name="step">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="value" type="common.data.float"/>
</xs:attributeGroup>
<xs:group name="input.email.elem">
<xs:annotation>
<xs:documentation>Email Address: &lt;input type='email'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.email.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="pattern" type="xhtml:form.data.pattern"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="placeholder" type="xs:string"/>
<xs:attribute name="value">
<xs:simpleType>
<xs:union memberTypes="xhtml:form.data.emailaddresslist xhtml:form.data.emailaddress"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="multiple">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="multiple"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.url.elem">
<xs:annotation>
<xs:documentation>IRI: &lt;input type='url'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.url.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="pattern" type="xhtml:form.data.pattern"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="placeholder" type="xs:string"/>
<xs:attribute name="value">
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="input.search.elem">
<xs:annotation>
<xs:documentation>Search: &lt;input type='search'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.search.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="pattern" type="xhtml:form.data.pattern"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="placeholder" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="input.tel.elem">
<xs:annotation>
<xs:documentation>Telephone Number: &lt;input type='tel'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.tel.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="maxlength" type="common.data.integer.positive"/>
<xs:attribute name="pattern" type="xhtml:form.data.pattern"/>
<xs:attribute name="readonly">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="readonly"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="required"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="size" type="common.data.integer.positive"/>
<xs:attribute name="placeholder" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="input.color.elem">
<xs:annotation>
<xs:documentation>Color: &lt;input type='color'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="input"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="input.color.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
<xs:attributeGroup ref="xhtml:input.attrs.type"/>
<xs:attribute name="autocomplete">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="on"/>
<xs:enumeration value="off"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="list" type="common.data.idref"/>
<xs:attribute name="value" type="xhtml:form.data.color"/>
</xs:attributeGroup>
<xs:element name="output">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:output.inner">
<xs:attributeGroup ref="xhtml:output.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="output.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attributeGroup ref="common-form.attrs.form"/>
<xs:attribute name="for" type="common.data.idrefs"/>
</xs:attributeGroup>
<xs:complexType name="output.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="datalist">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:datalist.inner">
<xs:attributeGroup ref="xhtml:datalist.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="datalist.inner" mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="xhtml:option"/>
<xs:group ref="common.inner.phrasing"/>
</xs:choice>
</xs:complexType>
<xs:attributeGroup name="datalist.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:element name="keygen">
<xs:complexType>
<xs:attributeGroup ref="xhtml:keygen.attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="keygen.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="challenge" type="xs:string"/>
<xs:attribute name="keytype" type="xs:string"/>
<xs:attribute name="autofocus">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="autofocus"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="xhtml:common-form.attrs"/>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.interact">
<xs:annotation>
<xs:documentation>RELAX NG Schema for HTML 5: Web Application Features #</xs:documentation>
</xs:annotation>
<xs:attribute name="contextmenu" type="common.data.idref"/>
<xs:attribute name="contenteditable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="draggable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="hidden">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="hidden"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="spellcheck">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.contenteditable">
<xs:annotation>
<xs:documentation>Editable Content: contenteditable</xs:documentation>
</xs:annotation>
<xs:attribute name="contenteditable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.draggable">
<xs:annotation>
<xs:documentation>Draggable Element: draggable</xs:documentation>
</xs:annotation>
<xs:attribute name="draggable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.hidden">
<xs:annotation>
<xs:documentation>Hidden Element: hidden</xs:documentation>
</xs:annotation>
<xs:attribute name="hidden">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="hidden"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="common.attrs.spellcheck">
<xs:annotation>
<xs:documentation>Spellchecking and grammar checking: spellcheck</xs:documentation>
</xs:annotation>
<xs:attribute name="spellcheck">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="progress">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:progress.inner">
<xs:attributeGroup ref="xhtml:progress.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="progress.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="value" type="common.data.float.non-negative"/>
<xs:attribute name="max" type="common.data.float.positive"/>
</xs:attributeGroup>
<xs:complexType name="progress.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- Cannot enforce textContent format here -->
<xs:element name="datagrid">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:datagrid.inner">
<xs:attributeGroup ref="xhtml:datagrid.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="datagrid.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="multiple">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="multiple"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="disabled">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="disabled"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="datagrid.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:element name="command">
<xs:complexType>
<xs:attributeGroup ref="xhtml:command.command.attrs"/>
<xs:attributeGroup ref="xhtml:command.radio.attrs"/>
<xs:attributeGroup ref="xhtml:command.checkbox.attrs"/>
</xs:complexType>
</xs:element>
<xs:group name="command.command.elem">
<xs:annotation>
<xs:documentation>Command with an associated action: &lt;command type='command'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="command"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="command.command.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="command.attrs.type"/>
<xs:attributeGroup ref="xhtml:common-command.attrs"/>
</xs:attributeGroup>
<xs:attributeGroup name="command.attrs.type">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="radio"/>
<xs:enumeration value="command"/>
<xs:enumeration value="checkbox"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="command.elem">
<xs:choice>
<xs:group ref="xhtml:command.command.elem"/>
<xs:group ref="xhtml:command.radio.elem"/>
<xs:group ref="xhtml:command.checkbox.elem"/>
</xs:choice>
</xs:group>
<xs:group name="command.radio.elem">
<xs:annotation>
<xs:documentation>Selection of one item from a list of items: &lt;command type='radio'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="command"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="command.radio.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:command.attrs.type"/>
<xs:attributeGroup ref="xhtml:command.radio.attrs.radiogroup"/>
<xs:attribute name="checked">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="checked"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="xhtml:common-command.attrs"/>
</xs:attributeGroup>
<xs:attributeGroup name="command.radio.attrs.radiogroup">
<xs:attribute name="radiogroup" type="xs:string"/>
</xs:attributeGroup>
<xs:group name="command.checkbox.elem">
<xs:annotation>
<xs:documentation>State or option that can be toggled: &lt;command type='checkbox'&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="command"/>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="command.checkbox.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attributeGroup ref="xhtml:command.attrs.type"/>
<xs:attribute name="checked">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="checked"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="xhtml:common-command.attrs"/>
</xs:attributeGroup>
<xs:attributeGroup name="common-command.attrs">
<xs:attribute name="label" type="xs:string"/>
<xs:attribute name="icon" type="common.data.uri"/>
<xs:attribute name="disabled">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="disabled"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:element name="bb">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:bb.inner">
<xs:attributeGroup ref="xhtml:bb.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="bb.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="type" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="bb.attrs.type">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="makeapp"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="bb.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="menu">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:menu.inner">
<xs:attributeGroup ref="xhtml:menu.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="menu.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="toolbar"/>
<xs:enumeration value="context"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="label" type="xs:string"/>
</xs:attributeGroup>
<xs:attributeGroup name="menu.attrs.type">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="toolbar"/>
<xs:enumeration value="context"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="menu.inner" mixed="true">
<xs:choice>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="xhtml:mli.elem"/>
<xs:group ref="common.inner.flow"/>
</xs:choice>
</xs:complexType>
<!-- REVISIT allow nested menus -->
<xs:group name="mli.elem">
<xs:annotation>
<xs:documentation>Menu Item: &lt;li&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="li">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:mli.inner">
<xs:attributeGroup ref="xhtml:mli.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="mli.attrs">
<xs:attributeGroup ref="common.attrs"/>
</xs:attributeGroup>
<xs:complexType name="mli.inner" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:group name="canvas.elem.flow">
<xs:annotation>
<xs:documentation>Canvas for Dynamic Graphics: &lt;canvas&gt;</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="canvas">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:canvas.inner.flow">
<xs:attributeGroup ref="xhtml:canvas.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="canvas.elem.phrasing">
<xs:sequence>
<xs:element name="canvas">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:canvas.inner.phrasing">
<xs:attributeGroup ref="xhtml:canvas.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="canvas.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="height" type="common.data.integer.non-negative"/>
<xs:attribute name="width" type="common.data.integer.non-negative"/>
</xs:attributeGroup>
<xs:complexType name="canvas.inner.flow" mixed="true">
<xs:group ref="common.inner.flow"/>
</xs:complexType>
<xs:complexType name="canvas.inner.phrasing" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:element name="details">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:details.inner">
<xs:attributeGroup ref="xhtml:details.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="details.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="open">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="open"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="details.attrs.open">
<xs:attribute name="open">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="open"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="details.inner" mixed="true">
<xs:sequence>
<xs:element ref="xhtml:legend"/>
<xs:group ref="common.inner.flow"/>
</xs:sequence>
</xs:complexType>
<xs:element name="time">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:time.inner">
<xs:attributeGroup ref="xhtml:time.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="time.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="datetime" type="common.data.date-or-time"/>
</xs:attributeGroup>
<xs:complexType name="time.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<!-- Cannot enforce textContent format here -->
<xs:element name="meter">
<xs:complexType>
<xs:complexContent>
<xs:extension base="xhtml:meter.inner">
<xs:attributeGroup ref="xhtml:meter.attrs"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="meter.attrs">
<xs:attributeGroup ref="common.attrs"/>
<xs:attribute name="value" type="common.data.float"/>
<xs:attribute name="min" type="common.data.float"/>
<xs:attribute name="low" type="common.data.float"/>
<xs:attribute name="high" type="common.data.float"/>
<xs:attribute name="max" type="common.data.float"/>
<xs:attribute name="optimum" type="common.data.float"/>
</xs:attributeGroup>
<xs:complexType name="meter.inner" mixed="true">
<xs:group ref="common.inner.phrasing"/>
</xs:complexType>
<xs:attribute name="id" type="xs:NCName"/>
<xs:attribute name="base" type="common.data.uri"/>
<xs:attribute name="space">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="lang" type="common.data.langcode"/>
</xs:schema>