<?xml version=“1.0” encoding=“UTF-8”?> <xs:schema xmlns:xs=“www.w3.org/2001/XMLSchema” xmlns=“www.w3.org/1999/xhtml” targetNamespace=“www.w3.org/1999/xhtml” elementFormDefault=“qualified” version=“1.0” xml:lang=“en”>

<!--
FHIR XHTML Schema

This is a pared down modification of the XHTML schema published by the W3C. 
it does not allow any of the content that the FHIR specification bans. 

Note that you can replace this schema with the standard W3C schema - this 
will still work, but will allow XHTML that is not valid. You might want to 
do this if you already have the standard XHTML schema in your schema cache, 
for instance

The content that is restricted to not appear:
  - javascript attributes and the script element
  - head, body etc (FHIR just uses div)
  - forms, objects, and inserted and deleted text
-->
<!-- Note: When using this schema with some tools, it may also be necessary to declare xmlns:xml="http://www.w3.org/XML/1998/namespace", however this causes performance issues with other tools and thus is not in the base schemas. -->

<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>

<xs:simpleType name="ContentType">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="ContentTypes">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Charset">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Charsets">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="LanguageCode">

  <xs:restriction base="xs:language"/>
</xs:simpleType>
<xs:simpleType name="Character">

  <xs:restriction base="xs:string">
    <xs:length value="1" fixed="true"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="Number">

  <xs:restriction base="xs:nonNegativeInteger">
    <xs:pattern value="[0-9]+"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="tabindexNumber">

  <xs:restriction base="Number">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="32767"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="LinkTypes">

  <xs:restriction base="xs:NMTOKENS"/>
</xs:simpleType>
<xs:simpleType name="MediaDesc">

  <xs:restriction base="xs:string">
    <xs:pattern value="[^,]+(,\s*[^,]+)*"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="URI">

  <xs:restriction base="xs:anyURI"/>
</xs:simpleType>
<xs:simpleType name="UriList">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Datetime">

  <xs:restriction base="xs:dateTime"/>
</xs:simpleType>
<xs:simpleType name="Script">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="StyleSheet">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Text">

  <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Length">

  <xs:restriction base="xs:string">
    <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="MultiLength">

  <xs:restriction base="xs:string">
    <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="Pixels">

  <xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>

<xs:simpleType name="Shape">
  <xs:restriction base="xs:token">
    <xs:enumeration value="rect"/>
    <xs:enumeration value="circle"/>
    <xs:enumeration value="poly"/>
    <xs:enumeration value="default"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="Coords">

  <xs:restriction base="xs:string">
    <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*"/>
  </xs:restriction>
</xs:simpleType>

<xs:attributeGroup name="coreattrs">

  <xs:attribute name="id" type="xs:ID"/>
  <xs:attribute name="class" type="xs:NMTOKENS"/>
  <xs:attribute name="style" type="StyleSheet"/>
  <xs:attribute name="title" type="Text"/>
</xs:attributeGroup>
<xs:attributeGroup name="i18n">

  <xs:attribute name="lang" type="LanguageCode"/>
  <xs:attribute ref="xml:lang"/>
  <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>
<xs:attributeGroup name="events">

  <!--
FHIR: Active Content is not allowed:
  <xs:attribute name="onclick" type="Script"/>
  <xs:attribute name="ondblclick" type="Script"/>
  <xs:attribute name="onmousedown" type="Script"/>
  <xs:attribute name="onmouseup" type="Script"/>
  <xs:attribute name="onmouseover" type="Script"/>
  <xs:attribute name="onmousemove" type="Script"/>
  <xs:attribute name="onmouseout" type="Script"/>
  <xs:attribute name="onkeypress" type="Script"/>
  <xs:attribute name="onkeydown" type="Script"/>
  <xs:attribute name="onkeyup" type="Script"/>

–>

</xs:attributeGroup>
<xs:attributeGroup name="focus">

  <xs:attribute name="accesskey" type="Character"/>
  <xs:attribute name="tabindex" type="tabindexNumber"/>
  <!--
  <xs:attribute name="onfocus" type="Script"/>
  <xs:attribute name="onblur" type="Script"/>

–>

</xs:attributeGroup>
<xs:attributeGroup name="attrs">
  <xs:attributeGroup ref="coreattrs"/>
  <xs:attributeGroup ref="i18n"/>
  <xs:attributeGroup ref="events"/>
</xs:attributeGroup>

<xs:group name="special.pre">
  <xs:choice>
    <xs:element ref="br"/>
    <xs:element ref="span"/>
    <xs:element ref="bdo"/>
    <xs:element ref="map"/>
  </xs:choice>
</xs:group>
<xs:group name="special">
  <xs:choice>
    <xs:group ref="special.pre"/>
    <!--
FHIR: active content is not allowed
    <xs:element ref="object"/>

–>

    <xs:element ref="img"/>
  </xs:choice>
</xs:group>
<xs:group name="fontstyle">
  <xs:choice>
    <xs:element ref="tt"/>
    <xs:element ref="i"/>
    <xs:element ref="b"/>
    <xs:element ref="big"/>
    <xs:element ref="small"/>
  </xs:choice>
</xs:group>
<xs:group name="phrase">
  <xs:choice>
    <xs:element ref="em"/>
    <xs:element ref="strong"/>
    <xs:element ref="dfn"/>
    <xs:element ref="code"/>
    <xs:element ref="q"/>
    <xs:element ref="samp"/>
    <xs:element ref="kbd"/>
    <xs:element ref="var"/>
    <xs:element ref="cite"/>
    <xs:element ref="abbr"/>
    <xs:element ref="acronym"/>
    <xs:element ref="sub"/>
    <xs:element ref="sup"/>
  </xs:choice>
</xs:group>
<!--
FHIR: forms are not allowed 
<xs:group name="inline.forms">
  <xs:choice>
    <xs:element ref="input"/>
    <xs:element ref="select"/>
    <xs:element ref="textarea"/>
    <xs:element ref="label"/>
    <xs:element ref="button"/>
  </xs:choice>
</xs:group>

–>

<!--
FHIR: specifically not allowed 
<xs:group name="misc.inline">
  <xs:choice>
    <xs:element ref="ins"/>
    <xs:element ref="del"/>
    <xs:element ref="script"/>
  </xs:choice>
</xs:group>
<xs:group name="misc">
  <xs:annotation>
    <xs:documentation>
    these can only occur at block level
    </xs:documentation>
  </xs:annotation>
  <xs:choice>
    <xs:element ref="noscript"/>
    <xs:group ref="misc.inline"/>
  </xs:choice>
</xs:group>

–>

 <xs:group name="inline">
   <xs:choice>
     <xs:element ref="a"/>
     <xs:group ref="special"/>
     <xs:group ref="fontstyle"/>
     <xs:group ref="phrase"/>
     <!--
     <xs:group ref="inline.forms"/>
-->
   </xs:choice>
 </xs:group>
 <xs:complexType name="Inline" mixed="true">

   <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:group ref="inline"/>
     <!--      <xs:group ref="misc.inline"/> -->
   </xs:choice>
 </xs:complexType>

 <xs:group name="heading">
   <xs:choice>
     <xs:element ref="h1"/>
     <xs:element ref="h2"/>
     <xs:element ref="h3"/>
     <xs:element ref="h4"/>
     <xs:element ref="h5"/>
     <xs:element ref="h6"/>
   </xs:choice>
 </xs:group>
 <xs:group name="lists">
   <xs:choice>
     <xs:element ref="ul"/>
     <xs:element ref="ol"/>
     <xs:element ref="dl"/>
   </xs:choice>
 </xs:group>
 <xs:group name="blocktext">
   <xs:choice>
     <xs:element ref="pre"/>
     <xs:element ref="hr"/>
     <xs:element ref="blockquote"/>
     <xs:element ref="address"/>
   </xs:choice>
 </xs:group>
 <xs:group name="block">
   <xs:choice>
     <xs:element ref="p"/>
     <xs:group ref="heading"/>
     <xs:element ref="div"/>
     <xs:group ref="lists"/>
     <xs:group ref="blocktext"/>
     <!--      <xs:element ref="fieldset"/> -->
     <xs:element ref="table"/>
   </xs:choice>
 </xs:group>
 <xs:complexType name="Block">
   <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:group ref="block"/>
     <!--
 FHIR: no forms
     <xs:element ref="form"/>
     <xs:group ref="misc"/>

–>

  </xs:choice>
</xs:complexType>
<xs:complexType name="Flow" mixed="true">

  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:group ref="block"/>
    <xs:group ref="inline"/>
    <!--
    <xs:element ref="form"/>
    <xs:group ref="misc"/>

–>

  </xs:choice>
</xs:complexType>

<xs:complexType name="a.content" mixed="true">

  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:group ref="special"/>
    <xs:group ref="fontstyle"/>
    <xs:group ref="phrase"/>
    <!--
    <xs:group ref="inline.forms"/>
    <xs:group ref="misc.inline"/>

–>

  </xs:choice>
</xs:complexType>
<xs:complexType name="pre.content" mixed="true">

  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element ref="a"/>
    <xs:group ref="fontstyle"/>
    <xs:group ref="phrase"/>
    <xs:group ref="special.pre"/>
    <!--
    <xs:group ref="misc.inline"/>
    <xs:group ref="inline.forms"/>

–>

  </xs:choice>
</xs:complexType>
<!-- 
<xs:complexType name="form.content">
  <xs:annotation>
    <xs:documentation>
    form uses "Block" excluding form
    </xs:documentation>
  </xs:annotation>
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:group ref="block"/>
    <xs:group ref="misc"/>
    </xs:choice>
</xs:complexType>
<xs:complexType name="button.content" mixed="true">
  <xs:annotation>
    <xs:documentation>
    button uses "Flow" but excludes a, form and form controls
    </xs:documentation>
  </xs:annotation>
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element ref="p"/>
    <xs:group ref="heading"/>
    <xs:element ref="div"/>
    <xs:group ref="lists"/>
    <xs:group ref="blocktext"/>
    <xs:element ref="table"/>
    <xs:group ref="special"/>
    <xs:group ref="fontstyle"/>
    <xs:group ref="phrase"/>
    <xs:group ref="misc"/> 
  </xs:choice>
</xs:complexType>

–>

<!--
FHIR: doesn't use the structure of <html> / <body> - jump straight into div instead
<xs:element name="html">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="head"/>
      <xs:element ref="body"/>
    </xs:sequence>
    <xs:attributeGroup ref="i18n"/>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>
</xs:element>
<xs:annotation>
  <xs:documentation>
  ================ Document Head =======================================
  </xs:documentation>
</xs:annotation>
<xs:group name="head.misc">
  <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="script"/>
      <xs:element ref="style"/>
      <xs:element ref="meta"/>
      <xs:element ref="link"/>
      <xs:element ref="object"/>
    </xs:choice>
  </xs:sequence>
</xs:group>
<xs:element name="head">
  <xs:annotation>
    <xs:documentation>
    content model is "head.misc" combined with a single
    title and an optional base element in any order
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:sequence>
      <xs:group ref="head.misc"/>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="title"/>
          <xs:group ref="head.misc"/>
          <xs:sequence minOccurs="0">
            <xs:element ref="base"/>
            <xs:group ref="head.misc"/>
          </xs:sequence>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="base"/>
          <xs:group ref="head.misc"/>
          <xs:element ref="title"/>
          <xs:group ref="head.misc"/>
        </xs:sequence>
      </xs:choice>
    </xs:sequence>
    <xs:attributeGroup ref="i18n"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="profile" type="URI"/>
  </xs:complexType>
</xs:element>
<xs:element name="title">
  <xs:annotation>
    <xs:documentation>
    The title element is not considered part of the flow of text.
    It should be displayed, for example as the page header or
    window title. Exactly one title is required per document.
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:attributeGroup ref="i18n"/>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>
</xs:element>
<xs:element name="base">
  <xs:annotation>
    <xs:documentation>
    document base URI
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:attribute name="href" type="URI" use="required"/>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>
</xs:element>
<xs:element name="meta">
  <xs:annotation>
    <xs:documentation>
    generic metainformation
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:attributeGroup ref="i18n"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="http-equiv"/>
    <xs:attribute name="name"/>
    <xs:attribute name="content" use="required"/>
    <xs:attribute name="scheme"/>
  </xs:complexType>
</xs:element>
<xs:element name="link">
  <xs:annotation>
    <xs:documentation>
    Relationship values can be used in principle:

    a) for document specific toolbars/menus when used
       with the link element in document head e.g.
         start, contents, previous, next, index, end, help
    b) to link to a separate style sheet (rel="stylesheet")
    c) to make a link to a script (rel="script")
    d) by stylesheets to control how collections of
       html nodes are rendered into printed documents
    e) to make a link to a printable version of this document
       e.g. a PostScript or PDF version (rel="alternate" media="print")
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="charset" type="Charset"/>
    <xs:attribute name="href" type="URI"/>
    <xs:attribute name="hreflang" type="LanguageCode"/>
    <xs:attribute name="type" type="ContentType"/>
    <xs:attribute name="rel" type="LinkTypes"/>
    <xs:attribute name="rev" type="LinkTypes"/>
    <xs:attribute name="media" type="MediaDesc"/>
  </xs:complexType>
</xs:element>
<xs:element name="style">
  <xs:annotation>
    <xs:documentation>
    style info, which may include CDATA sections
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:attributeGroup ref="i18n"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="type" type="ContentType" use="required"/>
    <xs:attribute name="media" type="MediaDesc"/>
    <xs:attribute name="title" type="Text"/>
    <xs:attribute ref="xml:space" fixed="preserve"/>
  </xs:complexType>
</xs:element>
<xs:element name="script">
  <xs:annotation>
    <xs:documentation>
    script statements, which may include CDATA sections
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="charset" type="Charset"/>
    <xs:attribute name="type" type="ContentType" use="required"/>
    <xs:attribute name="src" type="URI"/>
    <xs:attribute name="defer">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="defer"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute ref="xml:space" fixed="preserve"/>
  </xs:complexType>
</xs:element>
<xs:element name="noscript">
  <xs:annotation>
    <xs:documentation>
    alternate content container for non script-based rendering
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="Block">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:annotation>
  <xs:documentation>
  =================== Document Body ====================================
  </xs:documentation>
</xs:annotation>
<xs:element name="body">
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="Block">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="onload" type="Script"/>
        <xs:attribute name="onunload" type="Script"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

–>

<xs:element name="div">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="p">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="h1">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="h2">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="h3">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="h4">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="h5">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="h6">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="ul">

  <xs:complexType>
    <xs:sequence>
      <xs:element ref="li" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
  </xs:complexType>
</xs:element>
<xs:element name="ol">

  <xs:complexType>
    <xs:sequence>
      <xs:element ref="li" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
  </xs:complexType>
</xs:element>
<xs:element name="li">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="dl">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="dt"/>
      <xs:element ref="dd"/>
    </xs:choice>
    <xs:attributeGroup ref="attrs"/>
  </xs:complexType>
</xs:element>
<xs:element name="dt">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="dd">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="address">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="hr">
  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
  </xs:complexType>
</xs:element>

<xs:element name="pre">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="pre.content">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute ref="xml:space" fixed="preserve"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="blockquote">
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="Block">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="cite" type="URI"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<!--
<xs:annotation>
  <xs:documentation>
  =================== Inserted/Deleted Text ============================

  ins/del are allowed in block and inline content, but its
  inappropriate to include block content within an ins element
  occurring in inline content.
  </xs:documentation>
</xs:annotation>
<xs:element name="ins">
  <xs:complexType mixed="true">
    <xs:complexContent mixed="true">
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="cite" type="URI"/>
        <xs:attribute name="datetime" type="Datetime"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="del">
  <xs:complexType mixed="true">
    <xs:complexContent mixed="true">
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="cite" type="URI"/>
        <xs:attribute name="datetime" type="Datetime"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

–>

<xs:element name="a">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="a.content">
        <xs:attributeGroup ref="attrs"/>
        <xs:attributeGroup ref="focus"/>
        <xs:attribute name="charset" type="Charset"/>
        <xs:attribute name="type" type="ContentType"/>
        <xs:attribute name="name" type="xs:NMTOKEN"/>
        <xs:attribute name="href" type="URI"/>
        <xs:attribute name="hreflang" type="LanguageCode"/>
        <xs:attribute name="rel" type="LinkTypes"/>
        <xs:attribute name="rev" type="LinkTypes"/>
        <xs:attribute name="shape" type="Shape" default="rect"/>
        <xs:attribute name="coords" type="Coords"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="span">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="bdo">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="coreattrs"/>
        <xs:attributeGroup ref="events"/>
        <xs:attribute name="lang" type="LanguageCode"/>
        <xs:attribute ref="xml:lang"/>
        <xs:attribute name="dir" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="ltr"/>
              <xs:enumeration value="rtl"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="br">

  <xs:complexType>
    <xs:attributeGroup ref="coreattrs"/>
  </xs:complexType>
</xs:element>
<xs:element name="em">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="strong">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="dfn">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="code">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="samp">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="kbd">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="var">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="cite">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="abbr">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="acronym">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="q">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="cite" type="URI"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="sub">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="sup">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="tt">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="i">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="b">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="big">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="small">

  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<!--
FHIR: no objects in FHIR
<xs:annotation>
  <xs:documentation>
  ==================== Object ======================================

  object is used to embed objects as part of HTML pages.
  param elements should precede other content. Parameters
  can also be expressed as attribute/value pairs on the
  object element itself when brevity is desired.
  </xs:documentation>
</xs:annotation>
<xs:element name="object">
  <xs:complexType mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="param"/>
      <xs:group ref="block"/>
      <xs:element ref="form"/>
      <xs:group ref="inline"/>
      <xs:group ref="misc"/>
    </xs:choice>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="declare">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="declare"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="classid" type="URI"/>
    <xs:attribute name="codebase" type="URI"/>
    <xs:attribute name="data" type="URI"/>
    <xs:attribute name="type" type="ContentType"/>
    <xs:attribute name="codetype" type="ContentType"/>
    <xs:attribute name="archive" type="UriList"/>
    <xs:attribute name="standby" type="Text"/>
    <xs:attribute name="height" type="Length"/>
    <xs:attribute name="width" type="Length"/>
    <xs:attribute name="usemap" type="URI"/>
    <xs:attribute name="name" type="xs:NMTOKEN"/>
    <xs:attribute name="tabindex" type="tabindexNumber"/>
  </xs:complexType>
</xs:element>
<xs:element name="param">
  <xs:annotation>
    <xs:documentation>
    param is used to supply a named property value.
    In XML it would seem natural to follow RDF and support an
    abbreviated syntax where the param elements are replaced
    by attribute value pairs on the object start tag.
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="name"/>
    <xs:attribute name="value"/>
    <xs:attribute name="valuetype" default="data">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="data"/>
          <xs:enumeration value="ref"/>
          <xs:enumeration value="object"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="type" type="ContentType"/>
  </xs:complexType>
</xs:element>

–>

<xs:element name="img">
  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="src" type="URI" use="required"/>
    <xs:attribute name="alt" type="Text" use="required"/>
    <xs:attribute name="longdesc" type="URI"/>
    <xs:attribute name="height" type="Length"/>
    <xs:attribute name="width" type="Length"/>
    <xs:attribute name="usemap" type="URI">

    </xs:attribute>
    <xs:attribute name="ismap">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="ismap"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:element>

<xs:element name="map">
  <xs:complexType>
    <xs:choice>
      <xs:choice maxOccurs="unbounded">
        <xs:group ref="block"/>

<!–

FHIR: no forms
        <xs:element ref="form"/>
        <xs:group ref="misc"/>

–>

      </xs:choice>
      <xs:element ref="area" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:attributeGroup ref="i18n"/>
    <xs:attributeGroup ref="events"/>
    <xs:attribute name="id" type="xs:ID" use="required"/>
    <xs:attribute name="class"/>
    <xs:attribute name="style" type="StyleSheet"/>
    <xs:attribute name="title" type="Text"/>
    <xs:attribute name="name" type="xs:NMTOKEN"/>
  </xs:complexType>
</xs:element>
<xs:element name="area">
  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="focus"/>
    <xs:attribute name="shape" type="Shape" default="rect"/>
    <xs:attribute name="coords" type="Coords"/>
    <xs:attribute name="href" type="URI"/>
    <xs:attribute name="nohref">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="nohref"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="alt" type="Text" use="required"/>
  </xs:complexType>
</xs:element>
<!--
FHIR: no forms in FHIR
<xs:annotation>
  <xs:documentation>
  ================ Forms ===============================================
  </xs:documentation>
</xs:annotation>
<xs:element name="form">
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="form.content">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="action" type="URI" use="required"/>
        <xs:attribute name="method" default="get">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="get"/>
              <xs:enumeration value="post"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="enctype" type="ContentType" default="application/x-www-form-urlencoded"/>
        <xs:attribute name="onsubmit" type="Script"/>
        <xs:attribute name="onreset" type="Script"/>
        <xs:attribute name="accept" type="ContentTypes"/>
        <xs:attribute name="accept-charset" type="Charsets"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="label">
  <xs:annotation>
    <xs:documentation>
    Each label must not contain more than ONE field
    Label elements shouldn't be nested.
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:complexContent mixed="true">
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="for" type="xs:IDREF"/>
        <xs:attribute name="accesskey" type="Character"/>
        <xs:attribute name="onfocus" type="Script"/>
        <xs:attribute name="onblur" type="Script"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:simpleType name="InputType">
  <xs:restriction base="xs:token">
    <xs:enumeration value="text"/>
    <xs:enumeration value="password"/>
    <xs:enumeration value="checkbox"/>
    <xs:enumeration value="radio"/>
    <xs:enumeration value="submit"/>
    <xs:enumeration value="reset"/>
    <xs:enumeration value="file"/>
    <xs:enumeration value="hidden"/>
    <xs:enumeration value="image"/>
    <xs:enumeration value="button"/>
  </xs:restriction>
</xs:simpleType>
<xs:element name="input">
  <xs:annotation>
    <xs:documentation>
    form control
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="focus"/>
    <xs:attribute name="type" type="InputType" default="text"/>
    <xs:attribute name="name">
      <xs:annotation>
        <xs:documentation>
        the name attribute is required for all but submit &amp; reset
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value"/>
    <xs:attribute name="checked">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="checked"/>
        </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:attribute name="readonly">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="readonly"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="size"/>
    <xs:attribute name="maxlength" type="Number"/>
    <xs:attribute name="src" type="URI"/>
    <xs:attribute name="alt"/>
    <xs:attribute name="usemap" type="URI"/>
    <xs:attribute name="onselect" type="Script"/>
    <xs:attribute name="onchange" type="Script"/>
    <xs:attribute name="accept" type="ContentTypes"/>
  </xs:complexType>
</xs:element>
<xs:element name="select">
  <xs:annotation>
    <xs:documentation>
    option selector
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="optgroup"/>
      <xs:element ref="option"/>
    </xs:choice>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="name"/>
    <xs:attribute name="size" type="Number"/>
    <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:attribute name="tabindex" type="tabindexNumber"/>
    <xs:attribute name="onfocus" type="Script"/>
    <xs:attribute name="onblur" type="Script"/>
    <xs:attribute name="onchange" type="Script"/>
  </xs:complexType>
</xs:element>
<xs:element name="optgroup">
  <xs:annotation>
    <xs:documentation>
    option group
    </xs:documentation>
  </xs:annotation>
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="option" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="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="label" type="Text" use="required"/>
  </xs:complexType>
</xs:element>
<xs:element name="option">
  <xs:annotation>
    <xs:documentation>
    selectable choice
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="selected">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="selected"/>
        </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:attribute name="label" type="Text"/>
    <xs:attribute name="value"/>
  </xs:complexType>
</xs:element>
<xs:element name="textarea">
  <xs:annotation>
    <xs:documentation>
    multi-line text field
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="focus"/>
    <xs:attribute name="name"/>
    <xs:attribute name="rows" type="Number" use="required"/>
    <xs:attribute name="cols" type="Number" use="required"/>
    <xs:attribute name="disabled">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="disabled"/>
        </xs:restriction>
      </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="onselect" type="Script"/>
    <xs:attribute name="onchange" type="Script"/>
  </xs:complexType>
</xs:element>
<xs:element name="fieldset">
  <xs:annotation>
    <xs:documentation>
    The fieldset element is used to group form fields.
    Only one legend element should occur in the content
    and if present should only be preceded by whitespace.

    NOTE: this content model is different from the XHTML 1.0 DTD,
    closer to the intended content model in HTML4 DTD
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:element ref="legend"/>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="block"/>
        <xs:element ref="form"/>
        <xs:group ref="inline"/>
        <xs:group ref="misc"/>
      </xs:choice>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
  </xs:complexType>
</xs:element>
<xs:element name="legend">
  <xs:annotation>
    <xs:documentation>
    fieldset label
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:complexContent mixed="true">
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="accesskey" type="Character"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="button">
  <xs:annotation>
    <xs:documentation>
    Content is "Flow" excluding a, form and form controls
    </xs:documentation>
  </xs:annotation>
  <xs:complexType mixed="true">
    <xs:complexContent mixed="true">
      <xs:extension base="button.content">
        <xs:attributeGroup ref="attrs"/>
        <xs:attributeGroup ref="focus"/>
        <xs:attribute name="name"/>
        <xs:attribute name="value"/>
        <xs:attribute name="type" default="submit">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="button"/>
              <xs:enumeration value="submit"/>
              <xs:enumeration value="reset"/>
            </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:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

–>

<xs:simpleType name="TFrame">

  <xs:restriction base="xs:token">
    <xs:enumeration value="void"/>
    <xs:enumeration value="above"/>
    <xs:enumeration value="below"/>
    <xs:enumeration value="hsides"/>
    <xs:enumeration value="lhs"/>
    <xs:enumeration value="rhs"/>
    <xs:enumeration value="vsides"/>
    <xs:enumeration value="box"/>
    <xs:enumeration value="border"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="TRules">

  <xs:restriction base="xs:token">
    <xs:enumeration value="none"/>
    <xs:enumeration value="groups"/>
    <xs:enumeration value="rows"/>
    <xs:enumeration value="cols"/>
    <xs:enumeration value="all"/>
  </xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="cellhalign">

  <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" type="Character"/>
  <xs:attribute name="charoff" type="Length"/>
</xs:attributeGroup>
<xs:attributeGroup name="cellvalign">

  <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:sequence>
      <xs:element ref="caption" minOccurs="0"/>
      <xs:choice>
        <xs:element ref="col" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="colgroup" minOccurs="0" maxOccurs="unbounded"/>
      </xs:choice>
      <xs:element ref="thead" minOccurs="0"/>
      <xs:element ref="tfoot" minOccurs="0"/>
      <xs:choice>
        <xs:element ref="tbody" maxOccurs="unbounded"/>
        <xs:element ref="tr" maxOccurs="unbounded"/>
      </xs:choice>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="summary" type="Text"/>
    <xs:attribute name="width" type="Length"/>
    <xs:attribute name="border" type="Pixels"/>
    <xs:attribute name="frame" type="TFrame"/>
    <xs:attribute name="rules" type="TRules"/>
    <xs:attribute name="cellspacing" type="Length"/>
    <xs:attribute name="cellpadding" type="Length"/>
  </xs:complexType>
</xs:element>
<xs:element name="caption">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Inline">
        <xs:attributeGroup ref="attrs"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:element name="thead">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="tr" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="cellhalign"/>
    <xs:attributeGroup ref="cellvalign"/>
  </xs:complexType>
</xs:element>
<xs:element name="tfoot">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="tr" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="cellhalign"/>
    <xs:attributeGroup ref="cellvalign"/>
  </xs:complexType>
</xs:element>
<xs:element name="tbody">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="tr" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="cellhalign"/>
    <xs:attributeGroup ref="cellvalign"/>
  </xs:complexType>
</xs:element>
<xs:element name="colgroup">

  <xs:complexType>
    <xs:sequence>
      <xs:element ref="col" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="span" type="Number" default="1"/>
    <xs:attribute name="width" type="MultiLength"/>
    <xs:attributeGroup ref="cellhalign"/>
    <xs:attributeGroup ref="cellvalign"/>
  </xs:complexType>
</xs:element>
<xs:element name="col">

  <xs:complexType>
    <xs:attributeGroup ref="attrs"/>
    <xs:attribute name="span" type="Number" default="1"/>
    <xs:attribute name="width" type="MultiLength"/>
    <xs:attributeGroup ref="cellhalign"/>
    <xs:attributeGroup ref="cellvalign"/>
  </xs:complexType>
</xs:element>
<xs:element name="tr">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="th"/>
      <xs:element ref="td"/>
    </xs:choice>
    <xs:attributeGroup ref="attrs"/>
    <xs:attributeGroup ref="cellhalign"/>
    <xs:attributeGroup ref="cellvalign"/>
  </xs:complexType>
</xs:element>
<xs:simpleType name="Scope">

  <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:element name="th">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="abbr" type="Text"/>
        <xs:attribute name="axis"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attribute name="scope" type="Scope"/>
        <xs:attribute name="rowspan" type="Number" default="1"/>
        <xs:attribute name="colspan" type="Number" default="1"/>
        <xs:attributeGroup ref="cellhalign"/>
        <xs:attributeGroup ref="cellvalign"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>
<xs:element name="td">
  <xs:complexType mixed="true">
    <xs:complexContent>
      <xs:extension base="Flow">
        <xs:attributeGroup ref="attrs"/>
        <xs:attribute name="abbr" type="Text"/>
        <xs:attribute name="axis"/>
        <xs:attribute name="headers" type="xs:IDREFS"/>
        <xs:attribute name="scope" type="Scope"/>
        <xs:attribute name="rowspan" type="Number" default="1"/>
        <xs:attribute name="colspan" type="Number" default="1"/>
        <xs:attributeGroup ref="cellhalign"/>
        <xs:attributeGroup ref="cellvalign"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

</xs:schema>