<?xml version="1.0"?>
<!DOCTYPE xsd:schema SYSTEM "http://www.w3.org/1999/XMLSchema.dtd"[
<!ENTITY % p "xsd:" >
<!ENTITY % s ":xsd" >
<!-- keep this schema XML 1.0 valid -->
<!ATTLIST xsd:schema
    xmlns:html CDATA #FIXED "http://www.w3.org/1999/xhtml"
>

<!--================ Character mnemonic entities =========================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols for XHTML//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special for XHTML//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
%HTMLspecial;
]>
<xsd:schema
  xmlns:xsd="http://www.w3.org/1999/XMLSchema"
  targetNamespace="http://www.w3.org/1999/xhtml"
  xmlns:html="http://www.w3.org/1999/xhtml"
  elementFormDefault="unqualified"
  attributeFormDefault="unqualified">

  <xsd:annotation>
    <xsd:documentation>
	Extensible HTML version 1.0 Strict, reformulated in XML Schema

	Author: Masayasu Ishikawa (mimasa@w3.org)
	$Id: xhtml1-strict.xsd,v 1.12 2000/07/11 13:39:56 mimasa Exp $

	DISCLAIMER: This schema is at the moment merely an author's
	  personal experiment.  Author doesn't guarantee at all whether
	  this schema properly reformulate XHTML 1.0 Strict in XML Schema.

	This is the same as HTML 4 Strict except for
	changes due to the differences between XML and SGML.

	Namespace = http://www.w3.org/1999/xhtml

	For further information, see: http://www.w3.org/TR/xhtml1

	Original copyright of DTD:

	  Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
	  All Rights Reserved. 

	This is a reformulation of the DTD version of XHTML 1.0 Strict.
	The DTD version is identified by the PUBLIC and SYSTEM identifiers:

	  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	  SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    </xsd:documentation>
  </xsd:annotation>

  <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
              schemaLocation="http://www.w3.org/XML/1998/xml.xsd">
    <xsd:annotation>
      <xsd:documentation>
	Get access to the xml: attribute groups for xml:lang
      </xsd:documentation>
    </xsd:annotation>
  </xsd:import>

  <xsd:annotation>
    <xsd:documentation>
	Character mnemonic entities

	XML Schema doesn't directly support character mnemonic entities.
	To use them, use ENTITY declarations (whether in internal or
	external DTD subsets)

	ISO Latin 1 Character Entity Set for XHTML

	  PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
	  SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"

	ISO Math, Greek and Symbolic Character Entity Set for XHTML
	
	  PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
	  SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"

	ISO Special Character Entity Set for XHTML

	  PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
	  SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>Imported Names</xsd:documentation>
  </xsd:annotation>

  <xsd:simpleType name="ContentType" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	media type, as per [RFC2045]
	% ContentType "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="ContentTypes" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	comma-separated list of media types, as per [RFC2045]
	% ContentTypes "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Charset" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	a character encoding, as per [RFC2045]
	% Charset "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Charsets" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	a space separated list of character encodings, as per [RFC2045]
	% Charsets "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="LanguageCode" base="xsd:language">
    <xsd:annotation>
      <xsd:documentation>
	a language code, as per [RFC1766]
	% LanguageCode "NMTOKEN"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Character" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	a single character from [ISO10646]
	% Character "CDATA"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:length value="1"/>
  </xsd:simpleType>

  <xsd:simpleType name="Number" base="xsd:nonNegativeInteger">
    <xsd:annotation>
      <xsd:documentation>
	one or more digits
	% Number "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="tabindexNumber" base="xsd:nonNegativeInteger">
    <xsd:annotation>
      <xsd:documentation>
	tabindex attribute specifies the position of the current element
	in the tabbing order for the current document. This value must be
	a number between 0 and 32767. User agents should ignore leading zeros. 
      </xsd:documentation>
    </xsd:annotation>

    <xsd:minInclusive value="0"/>
    <xsd:maxInclusive value="32767"/>
  </xsd:simpleType>

  <xsd:simpleType name="LinkTypes" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	space-separated list of link types
	% LinkTypes "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="MediaDesc" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	single or comma-separated list of media descriptors
	% MediaDesc "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="URI" base="xsd:uriReference">
    <xsd:annotation>
      <xsd:documentation>
	a Uniform Resource Identifier, see [RFC2396]
	% URI "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="UriList" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	a space separated list of Uniform Resource Identifiers
	% UriList "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Datetime" base="xsd:timeInstant">
    <xsd:annotation>
      <xsd:documentation>
	date and time information. ISO date format
	Datetime "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Script" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	script expression
	% Script "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="StyleSheet" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	style sheet data
	% StyleSheet "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Text" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	used for titles etc.
	% Text "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="FrameTarget" base="xsd:NMTOKEN">
    <xsd:annotation>
      <xsd:documentation>
	render in this frame (not used in XHTML 1.0 Strict)
	% FrameTarget "NMTOKEN"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:pattern value="_(blank|self|parent|top)|[A-Za-z].*"/>
  </xsd:simpleType>

  <xsd:simpleType name="Length" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	nn for pixels or nn% for percentage length
	% Length "CDATA"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:pattern value="\d+|(100|[1-9]?\d(\.\d+)?)%"/>
  </xsd:simpleType>

  <xsd:simpleType name="MultiLength" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	pixel, percentage, or relative
	% MultiLength "CDATA"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:pattern value="\d+|(100|[1-9]?\d(\.\d+)?)%|[1-9]?(\d+)?\*"/>
  </xsd:simpleType>

  <xsd:simpleType name="MultiLengths" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	comma-separated list of MultiLength
	% MultiLengths "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:simpleType name="Pixels" base="xsd:nonNegativeInteger">
    <xsd:annotation>
      <xsd:documentation>
	integer representing length in pixels
	% Pixels "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:annotation>
    <xsd:documentation>
	these are used for image maps
    </xsd:documentation>
  </xsd:annotation>

  <xsd:simpleType name="Shape" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	% Shape "(rect|circle|poly|default)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="rect"/>
    <xsd:enumeration value="circle"/>
    <xsd:enumeration value="poly"/>
    <xsd:enumeration value="default"/>
  </xsd:simpleType>

  <xsd:simpleType name="Coords" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	comma separated list of lengths
	% Coords "CDATA"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:simpleType>

  <xsd:annotation>
    <xsd:documentation>Generic Attributes</xsd:documentation>
  </xsd:annotation>

  <xsd:attributeGroup name="coreattrs">
    <xsd:annotation>
      <xsd:documentation>
	core attributes common to most elements
	  id       document-wide unique id
	  class    space separated list of classes
	  style    associated style info
	  title    advisory title/amplification
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attribute name="id" type="xsd:ID" use="optional"/>
    <xsd:attribute name="class" type="xsd:string" use="optional"/>
    <xsd:attribute name="style" type="html:StyleSheet" use="optional"/>
    <xsd:attribute name="title" type="html:Text" use="optional"/>
  </xsd:attributeGroup>

  <xsd:attributeGroup name="i18n">
    <xsd:annotation>
      <xsd:documentation>
	internationalization attributes
	  lang        language code (backwards compatible)
	  xml:lang    language code (as per XML 1.0 spec)
	  dir         direction for weak/neutral text
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attribute name="lang" type="html:LanguageCode" use="optional"/>
    <xsd:attribute ref="xml:lang"/>
    <xsd:attribute name="dir" use="optional">
      <xsd:simpleType base="xsd:string">
        <xsd:enumeration value="ltr"/>
        <xsd:enumeration value="rtl"/>
      </xsd:simpleType>
    </xsd:attribute>
  </xsd:attributeGroup>

  <xsd:attributeGroup name="events">
    <xsd:annotation>
      <xsd:documentation>
	attributes for common UI events
	  onclick     a pointer button was clicked
	  ondblclick  a pointer button was double clicked
	  onmousedown a pointer button was pressed down
	  onmouseup   a pointer button was released
	  onmousemove a pointer was moved onto the element
	  onmouseout  a pointer was moved away from the element
	  onkeypress  a key was pressed and released
	  onkeydown   a key was pressed down
	  onkeyup     a key was released
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attribute name="onclick" type="html:Script" use="optional"/>
    <xsd:attribute name="ondblclick" type="html:Script" use="optional"/>
    <xsd:attribute name="onmousedown" type="html:Script" use="optional"/>
    <xsd:attribute name="onmouseup" type="html:Script" use="optional"/>
    <xsd:attribute name="onmouseover" type="html:Script" use="optional"/>
    <xsd:attribute name="onmousemove" type="html:Script" use="optional"/>
    <xsd:attribute name="onmouseout" type="html:Script" use="optional"/>
    <xsd:attribute name="onkeypress" type="html:Script" use="optional"/>
    <xsd:attribute name="onkeydown" type="html:Script" use="optional"/>
    <xsd:attribute name="onkeyup" type="html:Script" use="optional"/>
  </xsd:attributeGroup>

  <xsd:attributeGroup name="focus">
    <xsd:annotation>
      <xsd:documentation>
	attributes for elements that can get the focus
	  accesskey   accessibility key character
	  tabindex    position in tabbing order (0-32767)
	  onfocus     the element got the focus
	  onblur      the element lost the focus
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attribute name="accesskey" type="html:Character" use="optional"/>
    <xsd:attribute name="tabindex" type="html:tabindexNumber" use="optional"/>
    <xsd:attribute name="onfocus" type="html:Script" use="optional"/>
    <xsd:attribute name="onblur" type="html:Script" use="optional"/>
  </xsd:attributeGroup>

  <xsd:complexType name="common">
    <xsd:annotation>
      <xsd:documentation>
	Common attribute sets (in DTD, %attrs;)
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attributeGroup ref="html:coreattrs"/>
    <xsd:attributeGroup ref="html:i18n"/>
    <xsd:attributeGroup ref="html:events"/>
  </xsd:complexType>

  <xsd:annotation>
    <xsd:documentation>Text Elements</xsd:documentation>
  </xsd:annotation>

  <xsd:element name="special" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	"br | span | bdo | object | img | map"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="fontstyle" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	"tt | i | b | big | small"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="phrase" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	"em | strong | dfn | code | q | sub | sup |
	samp | kbd | var | cite | abbr | acronym"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="inline.forms" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	"input | select | textarea | label | button"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="misc" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	these can occur at block or inline level
	"ins | del | script | noscript"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:complexType name="inlineType" content="mixed"
                   base="html:common" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	% inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;"

	For convenience, this is defined to have "mixed" content rather than
	"elementOnly".
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:a"/>
      <xsd:element ref="html:special"/>
      <xsd:element ref="html:fontstyle"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="InlineType" content="mixed"
                   base="html:common" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	%Inline; covers inline or "text-level" elements
	% Inline "(#PCDATA | %inline; | %misc;)*"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:a"/>
      <xsd:element ref="html:special"/>
      <xsd:element ref="html:fontstyle"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:annotation>
    <xsd:documentation>Block level elements</xsd:documentation>
  </xsd:annotation>

  <xsd:element name="heading" abstract="true" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>
	% heading "h1|h2|h3|h4|h5|h6"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:complexType name="listType" content="elementOnly"
                   base="html:common" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	define a complexType for lists (suitable for ul and ol)
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence minOccurs="1" maxOccurs="unbounded">
      <xsd:element ref="html:li"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:element name="lists" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	"ul | ol | dl"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="blocktext" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	"pre | hr | blockquote | address"
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:complexType name="BlockType" content="elementOnly"
                   base="html:common" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	define a complexType for Block elements

	% block
	"p | %heading; | div | %lists; | %blocktext; | fieldset | table"

	% Block "(%block; | form | %misc;)*"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:p"/>
      <xsd:element ref="html:heading"/>
      <xsd:element ref="html:div"/>
      <xsd:element ref="html:lists"/>
      <xsd:element ref="html:blocktext"/>
      <xsd:element ref="html:fieldset"/>
      <xsd:element ref="html:table"/>
      <xsd:element ref="html:form"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="FlowType" content="mixed"
                   base="html:common" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	define a complexType for Flow

	%Flow; mixes Block and Inline and is used for list items etc.
	% Flow "(#PCDATA | %block; | form | %inline; | %misc;)*"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:p"/>
      <xsd:element ref="html:heading"/>
      <xsd:element ref="html:div"/>
      <xsd:element ref="html:lists"/>
      <xsd:element ref="html:blocktext"/>
      <xsd:element ref="html:fieldset"/>
      <xsd:element ref="html:table"/>
      <xsd:element ref="html:form"/>
      <xsd:element ref="html:a"/>
      <xsd:element ref="html:special"/>
      <xsd:element ref="html:fontstyle"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:annotation>
    <xsd:documentation>
	Content models for exclusions
    </xsd:documentation>
  </xsd:annotation>

  <xsd:complexType name="a.contentType"
                   base="html:InlineType" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	a elements use %Inline; excluding a

	% a.content
	   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; |
	   %misc;)*"

	This complexType can be just a deriving type of "html:common",
	but here it is defined as a deriving type (by restriction) of
	"html:InlineType", so that people can understand that this is
	a restricted type of "html:InlineType".
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:a" maxOccurs="0"/>
      <xsd:element ref="html:special"/>
      <xsd:element ref="html:fontstyle"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="pre.contentType" content="mixed"
                   base="html:inlineType" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	pre uses %inline excluding img, object, big, small, sup or sup

	% pre.content
	   "(#PCDATA | a | br | span | bdo | map | tt | i | b |
	   %phrase; | %inline.forms;)*"

	This complexType can be just a deriving type of "html:common",
	but here it is defined as a deriving type (by restriction) of
	"html:InlineType", so that people can understand that this is
	a restricted type of "html:InlineType".
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:a"/>
      <xsd:element ref="html:br"/>
      <xsd:element ref="html:span"/>
      <xsd:element ref="html:bdo"/>
      <xsd:element ref="html:map"/>
      <xsd:element ref="html:tt"/>
      <xsd:element ref="html:i"/>
      <xsd:element ref="html:b"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="form.contentType"
                   base="html:BlockType" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	form uses %Block; excluding form

	% form.content "(%block; | %misc;)*"

	This complexType can be just a deriving type of "html:common",
	but here it is defined as a deriving type (by restriction) of
	"html:BlockType", so that people can understand that this is
	a restricted type of "html:BlockType".
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:p"/>
      <xsd:element ref="html:heading"/>
      <xsd:element ref="html:div"/>
      <xsd:element ref="html:lists"/>
      <xsd:element ref="html:blocktext"/>
      <xsd:element ref="html:fieldset"/>
      <xsd:element ref="html:table"/>
      <xsd:element ref="html:form" maxOccurs="0"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="button.contentType"
                   base="html:FlowType" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	button uses %Flow; but excludes a, form and form controls

	% button.content
	   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
	    table | %special; | %fontstyle; | %phrase; | %misc;)*"

	This complexType can be just a deriving type of "html:common",
	but here it is defined as a deriving type (by restriction) of
	"html:FlowType", so that people can understand that this is
	a restricted type of "html:FlowType".
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:p"/>
      <xsd:element ref="html:heading"/>
      <xsd:element ref="html:div"/>
      <xsd:element ref="html:lists"/>
      <xsd:element ref="html:blocktext"/>
      <xsd:element ref="html:fieldset" maxOccurs="0"/>
      <xsd:element ref="html:table"/>
      <xsd:element ref="html:form" maxOccurs="0"/>
      <xsd:element ref="html:a" maxOccurs="0"/>
      <xsd:element ref="html:special"/>
      <xsd:element ref="html:fontstyle"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms" maxOccurs="0"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:annotation>
    <xsd:documentation>Document Structure</xsd:documentation>
  </xsd:annotation>

  <xsd:element name="html">
    <xsd:complexType content="elementOnly">
      <xsd:element ref="html:head"/>
      <xsd:element ref="html:body"/>
      <xsd:attributeGroup ref="html:i18n"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="head.misc" abstract="true">
    <xsd:annotation>
      <xsd:documentation>
	style, meta and link elements are defined as equivalent class of
	head.misc. script and object elements are not included (for now).
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

 <xsd:element name="head">
    <xsd:annotation>
      <xsd:documentation>
	Document Head

	% head.misc "(script|style|meta|link|object)*"

	content model is %head.misc; combined with a single
	title and an optional base element in any order
	content model is %head.misc; combined with a single
	title and an optional base element in any order

	<!--ELEMENT head (%head.misc;,
	     ((title, %head.misc;, (base, %head.misc;)?) |
	      (base, %head.misc;, (title, %head.misc;))))-->
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="elementOnly">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="html:head.misc"/>
        <xsd:element ref="html:script"/>
        <xsd:element ref="html:object"/>
      </xsd:choice>
      <xsd:choice>
        <xsd:sequence>
          <xsd:element ref="html:title"/>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="html:head.misc"/>
            <xsd:element ref="html:script"/>
            <xsd:element ref="html:object"/>
          </xsd:choice>
          <xsd:sequence minOccurs="0" maxOccurs="1">
            <xsd:element ref="html:base"/>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
              <xsd:element ref="html:head.misc"/>
              <xsd:element ref="html:script"/>
              <xsd:element ref="html:object"/>
            </xsd:choice>
          </xsd:sequence>
        </xsd:sequence>
        <xsd:sequence>
          <xsd:element ref="html:base"/>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="html:head.misc"/>
            <xsd:element ref="html:script"/>
            <xsd:element ref="html:object"/>
          </xsd:choice>
          <xsd:sequence>
            <xsd:element ref="html:title"/>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
              <xsd:element ref="html:head.misc"/>
              <xsd:element ref="html:script"/>
              <xsd:element ref="html:object"/>
            </xsd:choice>
          </xsd:sequence>
        </xsd:sequence>
      </xsd:choice>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attribute name="profile" type="html:URI" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="title">
    <xsd:annotation>
      <xsd: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.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="textOnly">
      <xsd:attributeGroup ref="html:i18n"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="base">
    <xsd:annotation>
      <xsd:documentation>document base URI</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attribute name="href" type="html:URI" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="meta" equivClass="html:head.misc">
    <xsd:annotation>
      <xsd:documentation>generic metainformation</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attribute name="http-equiv" type="xsd:string" use="optional"/>
      <xsd:attribute name="name" type="xsd:string" use="optional"/>
      <xsd:attribute name="content" type="xsd:string" use="required"/>
      <xsd:attribute name="scheme" type="xsd:string" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="link" equivClass="html:head.misc">
    <xsd:annotation>
      <xsd: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")
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="charset" type="html:Charset" use="optional"/>
      <xsd:attribute name="href" type="html:URI" use="optional"/>
      <xsd:attribute name="hreflang" type="html:LanguageCode" use="optional"/>
      <xsd:attribute name="type" type="html:ContentType" use="optional"/>
      <xsd:attribute name="rel" type="html:LinkTypes" use="optional"/>
      <xsd:attribute name="rev" type="html:LinkTypes" use="optional"/>
      <xsd:attribute name="media" type="html:MediaDesc" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="style" equivClass="html:head.misc">
    <xsd:annotation>
      <xsd:documentation>style information</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="textOnly">
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attribute name="type" type="html:ContentType" use="required"/>
      <xsd:attribute name="media" type="html:MediaDesc" use="optional"/>
      <xsd:attribute name="title" type="html:Text" use="optional"/>
      <xsd:attribute ref="xml:space" use="fixed" value="preserve"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="script">
    <xsd:annotation>
      <xsd:documentation>script statements</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="textOnly">
      <xsd:attribute name="charset" type="html:Charset" use="optional"/>
      <xsd:attribute name="type" type="html:ContentType" use="required"/>
      <xsd:attribute name="src" type="html:URI" use="optional"/>
      <xsd:attribute name="defer" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="defer"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute ref="xml:space" use="fixed" value="preserve"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="noscript" type="html:BlockType">
    <xsd:annotation>
      <xsd:documentation>
	alternate content container for non script-based rendering
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="body">
    <xsd:annotation>
      <xsd:documentation>Document Body</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:BlockType" derivedBy="extension">
      <xsd:attribute name="onload" type="html:Script" use="optional"/>
      <xsd:attribute name="onunload" type="html:Script" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="div" type="html:FlowType">
    <xsd:annotation>
      <xsd:documentation>generic language/style container</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="p" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>Paragraphs</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:annotation>
    <xsd:documentation>
	Headings

	There are six levels of headings from h1 (the most important)
	to h6 (the least important).
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="h1" equivClass="html:heading" type="html:InlineType"/>
  <xsd:element name="h2" equivClass="html:heading" type="html:InlineType"/>
  <xsd:element name="h3" equivClass="html:heading" type="html:InlineType"/>
  <xsd:element name="h4" equivClass="html:heading" type="html:InlineType"/>
  <xsd:element name="h5" equivClass="html:heading" type="html:InlineType"/>
  <xsd:element name="h6" equivClass="html:heading" type="html:InlineType"/>

  <xsd:annotation>
    <xsd:documentation>Lists</xsd:documentation>
  </xsd:annotation>

  <xsd:element name="ul" type="html:listType" equivClass="html:lists">
    <xsd:annotation>
      <xsd:documentation>Unordered list</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="ol" type="html:listType" equivClass="html:lists">
    <xsd:annotation>
      <xsd:documentation>Ordered (numbered) list</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="li" type="html:FlowType">
    <xsd:annotation>
      <xsd:documentation>list item</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="dl" equivClass="html:lists">
    <xsd:annotation>
      <xsd:documentation>
	definition lists - dt for term, dd for its definition
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="elementOnly"
                     base="html:common" derivedBy="restriction">
      <xsd:choice maxOccurs="unbounded">
        <xsd:element ref="html:dt"/>
        <xsd:element ref="html:dd"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="dt" type="html:InlineType"/>
  <xsd:element name="dd" type="html:FlowType"/>

  <xsd:element name="address" equivClass="html:blocktext" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>Address - information on author</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="hr" equivClass="html:blocktext">
    <xsd:annotation>
      <xsd:documentation>Horizontal Rule</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="pre" equivClass="html:blocktext">
    <xsd:annotation>
      <xsd:documentation>
	Preformatted Text

	content is %Inline; excluding "img|object|big|small|sub|sup"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:pre.contentType" derivedBy="extension">
      <xsd:attribute ref="xml:space" use="fixed" value="preserve"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="blockquote" equivClass="html:blocktext">
    <xsd:annotation>
      <xsd:documentation>Block-like Quotes</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:BlockType" derivedBy="extension">
      <xsd:attribute name="cite" type="html:URI" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:annotation>
    <xsd: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.
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="ins" equivClass="html:misc">
    <xsd:complexType base="html:FlowType" derivedBy="extension">
      <xsd:attribute name="cite" type="html:URI" use="optional"/>
      <xsd:attribute name="datetime" type="html:Datetime" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="del" equivClass="html:misc">
    <xsd:complexType base="html:FlowType" derivedBy="extension">
      <xsd:attribute name="cite" type="html:URI" use="optional"/>
      <xsd:attribute name="datetime" type="html:Datetime" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="a">
    <xsd:annotation>
      <xsd:documentation>
	The Anchor Element

	content is %Inline; except that anchors shouldn't be nested
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:a.contentType" derivedBy="extension">
      <xsd:attributeGroup ref="html:focus"/>
      <xsd:attribute name="charset" type="html:Charset" use="optional"/>
      <xsd:attribute name="type" type="html:ContentType" use="optional"/>
      <xsd:attribute name="name" type="xsd:NMTOKEN" use="optional"/>
      <xsd:attribute name="href" type="html:URI" use="optional"/>
      <xsd:attribute name="hreflang" type="html:LanguageCode" use="optional"/>
      <xsd:attribute name="rel" type="html:LinkTypes" use="optional"/>
      <xsd:attribute name="rev" type="html:LinkTypes" use="optional"/>
      <xsd:attribute name="shape" type="html:Shape" use="default" value="rect"/>
      <xsd:attribute name="coords" type="html:Coords" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:annotation>
    <xsd:documentation>Inline Elements</xsd:documentation>
  </xsd:annotation>

  <xsd:element name="span" equivClass="html:special" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>generic language/style container</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="bdo" equivClass="html:special">
    <xsd:annotation>
      <xsd:documentation>I18N BiDi over-ride</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="mixed">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="html:a"/>
	<xsd:element ref="html:special"/>
	<xsd:element ref="html:fontstyle"/>
	<xsd:element ref="html:phrase"/>
	<xsd:element ref="html:inline.forms"/>
	<xsd:element ref="html:misc"/>
      </xsd:choice>
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="lang" type="xsd:language" use="optional"/>
      <xsd:attribute ref="xml:lang"/>
      <xsd:attribute name="dir" use="required">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="ltr"/>
          <xsd:enumeration value="rtl"/>
        </xsd:simpleType>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="br" equivClass="html:special">
    <xsd:annotation>
      <xsd:documentation>forced line break</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="em" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>emphasis</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="strong" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>strong emphasis</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="dfn" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>definitional</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="code" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>program code</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="samp" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>sample</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="kbd" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>something user would type</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="var" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>variable</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="cite" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>citation</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="abbr" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>abbreviation</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="acronym" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>acronym</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="q" equivClass="html:phrase">
    <xsd:annotation>
      <xsd:documentation>inlined quote</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:InlineType" derivedBy="extension">
      <xsd:attribute name="cite" type="html:URI" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="sub" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>subscript</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="sup" equivClass="html:phrase" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>superscript</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="tt" equivClass="html:fontstyle" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>fixed pitch font</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="i" equivClass="html:fontstyle" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>italic font</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="b" equivClass="html:fontstyle" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>bold font</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="big" equivClass="html:fontstyle" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>bigger font</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="small" equivClass="html:fontstyle" type="html:InlineType">
    <xsd:annotation>
      <xsd:documentation>smaller font</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="object" equivClass="html:special">
    <xsd:annotation>
      <xsd: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.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="mixed"
                     base="html:common" derivedBy="extension">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="html:param"/>
        <xsd:element ref="html:p"/>
        <xsd:element ref="html:heading"/>
        <xsd:element ref="html:div"/>
        <xsd:element ref="html:lists"/>
        <xsd:element ref="html:blocktext"/>
        <xsd:element ref="html:fieldset" maxOccurs="0"/>
        <xsd:element ref="html:table"/>
        <xsd:element ref="html:form"/>
        <xsd:element ref="html:a"/>
        <xsd:element ref="html:special"/>
        <xsd:element ref="html:fontstyle"/>
        <xsd:element ref="html:phrase"/>
        <xsd:element ref="html:inline.forms"/>
        <xsd:element ref="html:misc"/>
      </xsd:choice>
      <xsd:attribute name="declare" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="declare"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="classid" type="html:URI" use="optional"/>
      <xsd:attribute name="codebase" type="html:URI" use="optional"/>
      <xsd:attribute name="data" type="html:URI" use="optional"/>
      <xsd:attribute name="type" type="html:ContentType" use="optional"/>
      <xsd:attribute name="codetype" type="html:ContentType" use="optional"/>
      <xsd:attribute name="archive" type="html:UriList" use="optional"/>
      <xsd:attribute name="standby" type="html:Text" use="optional"/>
      <xsd:attribute name="height" type="html:Length" use="optional"/>
      <xsd:attribute name="width" type="html:Length" use="optional"/>
      <xsd:attribute name="usemap" type="html:URI" use="optional"/>
      <xsd:attribute name="name" type="xsd:NMTOKEN" use="optional"/>
      <xsd:attribute name="tabindex" type="html:tabindexNumber" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="param">
    <xsd:annotation>
      <xsd: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.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attribute name="id" type="xsd:ID" use="optional"/>
      <xsd:attribute name="name" type="xsd:string" use="optional"/>
      <xsd:attribute name="value" type="xsd:string" use="optional"/>
      <xsd:attribute name="valuetype" use="default" value="data">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="data"/>
          <xsd:enumeration value="ref"/>
          <xsd:enumeration value="object"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="type" type="html:ContentType" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="img" equivClass="html:special">
    <xsd:annotation>
      <xsd:documentation>
	Images

	To avoid accessibility problems for people who aren't
	able to see the image, you should provide a text
	description using the alt and longdesc attributes.
	In addition, avoid the use of server-side image maps.
	Note that in this scheme there is no name attribute. That
	is only available in the transitional and frameset schemas.

	usemap points to a map element which may be in this document
	or an external document, although the latter is not widely supported
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="src" type="html:URI" use="required"/>
      <xsd:attribute name="alt" type="html:Text" use="required"/>
      <xsd:attribute name="longdesc" type="html:URI" use="optional"/>
      <xsd:attribute name="height" type="html:Length" use="optional"/>
      <xsd:attribute name="width" type="html:Length" use="optional"/>
      <xsd:attribute name="usemap" type="html:URI" use="optional"/>
      <xsd:attribute name="ismap" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="ismap"/>
        </xsd:simpleType>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>

  <xsd:annotation>
    <xsd:documentation>
	Client-side image maps

	These can be placed in the same document or grouped in a
	separate document although this isn't yet widely supported
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="map" equivClass="html:special">
    <xsd:complexType content="elementOnly">
      <xsd:choice>
        <xsd:choice minOccurs="1" maxOccurs="unbounded">
          <xsd:element ref="html:p"/>
          <xsd:element ref="html:heading"/>
          <xsd:element ref="html:div"/>
          <xsd:element ref="html:lists"/>
          <xsd:element ref="html:blocktext"/>
          <xsd:element ref="html:fieldset"/>
          <xsd:element ref="html:table"/>
          <xsd:element ref="html:form"/>
          <xsd:element ref="html:misc"/>
        </xsd:choice>
        <xsd:element ref="html:area" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="id" type="xsd:ID" use="required"/>
      <xsd:attribute name="class" type="xsd:string" use="optional"/>
      <xsd:attribute name="style" type="html:StyleSheet" use="optional"/>
      <xsd:attribute name="title" type="html:Text" use="optional"/>
      <xsd:attribute name="name" type="xsd:NMTOKEN" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="area">
    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="shape" use="default" value="rect">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="rect"/>
          <xsd:enumeration value="circle"/>
          <xsd:enumeration value="poly"/>
          <xsd:enumeration value="default"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="coords" type="html:Coords" use="optional"/>
      <xsd:attribute name="href" type="html:URI" use="optional"/>
      <xsd:attribute name="nohref" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="nohref"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="alt" type="html:Text" use="required"/>
      <xsd:attributeGroup ref="html:focus"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:annotation>
    <xsd:documentation>Forms</xsd:documentation>
  </xsd:annotation>

  <xsd:element name="form">
    <xsd:annotation>
      <xsd:documentation>forms shouldn't be nested</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:form.contentType" derivedBy="extension">
      <xsd:attribute name="action" type="html:URI" use="required"/>
      <xsd:attribute name="method" use="default" value="get">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="get"/>
          <xsd:enumeration value="post"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="enctype" type="html:ContentType" use="default"
                     value="application/x-www-form-urlencoded"/>
      <xsd:attribute name="onsubmit" type="html:Script" use="optional"/>
      <xsd:attribute name="onreset" type="html:Script" use="optional"/>
      <xsd:attribute name="accept" type="html:ContentTypes" use="optional"/>
      <xsd:attribute name="accept-charset" type="html:Charsets" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="label" equivClass="html:inline.forms">
    <xsd:annotation>
      <xsd:documentation>
	Each label must not contain more than ONE field
	Label elements shouldn't be nested.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:InlineType" derivedBy="extension">
      <xsd:attribute name="for" type="xsd:IDREF" use="optional"/>
      <xsd:attribute name="accesskey" type="html:Character" use="optional"/>
      <xsd:attribute name="onfocus" type="html:Script" use="optional"/>
      <xsd:attribute name="onblur" type="html:Script" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:simpleType name="InputType" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	% InputType
	  "(text | password | checkbox | radio | submit | reset |
	    file | hidden | image | button)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="text"/>
    <xsd:enumeration value="password"/>
    <xsd:enumeration value="checkbox"/>
    <xsd:enumeration value="radio"/>
    <xsd:enumeration value="submit"/>
    <xsd:enumeration value="reset"/>
    <xsd:enumeration value="file"/>
    <xsd:enumeration value="hidden"/>
    <xsd:enumeration value="image"/>
    <xsd:enumeration value="button"/>
  </xsd:simpleType>

  <xsd:element name="input" equivClass="html:inline.forms">
    <xsd:annotation>
      <xsd:documentation>
	the name attribute is required for all but submit &amp; reset
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="type" use="default" value="text" type="html:InputType"/>
      <xsd:attribute name="name" type="xsd:string" use="optional"/>
      <xsd:attribute name="value" type="xsd:string" use="optional"/>
      <xsd:attribute name="checked" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="checked"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="disabled" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="disabled"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="readonly" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="readonly"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="size" type="xsd:nonNegativeInteger" use="optional"/>
      <xsd:attribute name="maxlength" type="xsd:positiveInteger" use="optional"/>
      <xsd:attribute name="src" type="html:URI" use="optional"/>
      <xsd:attribute name="alt" type="html:Text" use="optional"/>
      <xsd:attribute name="usemap" type="html:URI" use="optional"/>
      <xsd:attributeGroup ref="html:focus"/>
      <xsd:attribute name="onselect" type="html:Script" use="optional"/>
      <xsd:attribute name="onchange" type="html:Script" use="optional"/>
      <xsd:attribute name="accept" type="html:ContentTypes" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="select" equivClass="html:inline.forms">
    <xsd:annotation>
      <xsd:documentation>option selector</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="elementOnly"
                     base="html:common" derivedBy="extension">
      <xsd:choice minOccurs="1" maxOccurs="unbounded">
        <xsd:element ref="html:optgroup"/>
        <xsd:element ref="html:option"/>
      </xsd:choice>
      <xsd:attribute name="name" type="xsd:string" use="optional"/>
      <xsd:attribute name="size" type="xsd:positiveInteger" use="optional"/>
      <xsd:attribute name="multiple" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="multiple"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="disabled" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="disabled"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="tabindex" type="html:tabindexNumber" use="optional"/>
      <xsd:attribute name="onfocus" type="html:Script" use="optional"/>
      <xsd:attribute name="onblur" type="html:Script" use="optional"/>
      <xsd:attribute name="onchange" type="html:Script" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="optgroup">
    <xsd:annotation>
      <xsd:documentation>option group</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="elementOnly">
      <xsd:sequence maxOccurs="unbounded">
        <xsd:element ref="html:option"/>
      </xsd:sequence>
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="disabled" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="disabled"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="label" type="html:Text" use="required"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="option">
    <xsd:annotation>
      <xsd:documentation>selectable choice</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="textOnly"
                     base="html:common" derivedBy="extension">
      <xsd:attribute name="selected" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="selected"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="disabled" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="disabled"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="label" type="html:Text" use="optional"/>
      <xsd:attribute name="value" type="xsd:string" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="textarea" equivClass="html:inline.forms">
    <xsd:annotation>
      <xsd:documentation>multi-line text field</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="mixed"
                     base="html:common" derivedBy="extension">
      <xsd:attribute name="name" type="xsd:string" use="optional"/>
      <xsd:attribute name="rows" type="xsd:positiveInteger" use="required"/>
      <xsd:attribute name="cols" type="xsd:positiveInteger" use="required"/>
      <xsd:attribute name="disabled" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="disabled"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="readonly" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="readonly"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attributeGroup ref="html:focus"/>
      <xsd:attribute name="onselect" type="html:Script" use="optional"/>
      <xsd:attribute name="onchange" type="html:Script" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="fieldset">
    <xsd:annotation>
      <xsd: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.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="mixed"
                     base="html:common" derivedBy="restriction">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="html:legend"/>
        <xsd:element ref="html:p"/>
        <xsd:element ref="html:heading"/>
        <xsd:element ref="html:div"/>
        <xsd:element ref="html:lists"/>
        <xsd:element ref="html:blocktext"/>
        <xsd:element ref="html:table"/>
        <xsd:element ref="html:form"/>
        <xsd:element ref="html:a"/>
        <xsd:element ref="html:special"/>
        <xsd:element ref="html:fontstyle"/>
        <xsd:element ref="html:phrase"/>
        <xsd:element ref="html:inline.forms"/>
        <xsd:element ref="html:misc"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="legend">
    <xsd:annotation>
      <xsd:documentation>fieldset label</xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:InlineType" derivedBy="extension">
      <xsd:attribute name="accesskey" type="html:Character" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="button" equivClass="html:inline.forms">
    <xsd:annotation>
      <xsd:documentation>
	push button

	Content is %Flow; excluding a, form and form controls
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType base="html:button.contentType" derivedBy="extension">
      <xsd:attribute name="name" type="xsd:string" use="optional"/>
      <xsd:attribute name="value" type="xsd:string" use="optional"/>
      <xsd:attribute name="type" use="default" value="submit">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="button"/>
          <xsd:enumeration value="submit"/>
          <xsd:enumeration value="reset"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="disabled" use="optional">
        <xsd:simpleType base="xsd:string">
          <xsd:enumeration value="disabled"/>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attributeGroup ref="html:focus"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:annotation>
    <xsd:documentation>
	Tables

	Derived from IETF HTML table standard, see [RFC1942]

	The border attribute sets the thickness of the frame around the
	table. The default units are screen pixels.
    </xsd:documentation>
  </xsd:annotation>

  <xsd:simpleType name="TFrame" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	The frame attribute specifies which parts of the frame around
	the table should be rendered. The values are not the same as
	CALS to avoid a name clash with the valign attribute.

	% TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="void"/>
    <xsd:enumeration value="above"/>
    <xsd:enumeration value="below"/>
    <xsd:enumeration value="hsides"/>
    <xsd:enumeration value="lhs"/>
    <xsd:enumeration value="rhs"/>
    <xsd:enumeration value="vsides"/>
    <xsd:enumeration value="box"/>
    <xsd:enumeration value="border"/>
  </xsd:simpleType>

  <xsd:simpleType name="TRules" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	The rules attribute defines which rules to draw between cells:

	 If rules is absent then assume:
	     "none" if border is absent or border="0" otherwise "all"

	% TRules "(none | groups | rows | cols | all)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="none"/>
    <xsd:enumeration value="groups"/>
    <xsd:enumeration value="rows"/>
    <xsd:enumeration value="cols"/>
    <xsd:enumeration value="all"/>
  </xsd:simpleType>

  <xsd:simpleType name="TAlign" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	horizontal placement of table relative to document
	% TAlign "(left|center|right)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="left"/>
    <xsd:enumeration value="center"/>
    <xsd:enumeration value="right"/>
  </xsd:simpleType>

  <xsd:attributeGroup name="cellhalign">
    <xsd:annotation>
      <xsd:documentation>
	horizontal alignment attributes for cell contents

	  char        alignment char, e.g. char=':'
	  charoff     offset for alignment char

	% cellhalign
	  "align      (left|center|right|justify|char) #IMPLIED
	   char       %Character;    #IMPLIED
	   charoff    %Length;       #IMPLIED"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attribute name="align" use="optional">
      <xsd:simpleType base="xsd:string">
        <xsd:enumeration value="left"/>
        <xsd:enumeration value="center"/>
        <xsd:enumeration value="right"/>
        <xsd:enumeration value="justify"/>
        <xsd:enumeration value="char"/>
      </xsd:simpleType>
    </xsd:attribute>
    <xsd:attribute name="char" type="html:Character" use="optional"/>
    <xsd:attribute name="charoff" type="html:Length" use="optional"/>
  </xsd:attributeGroup>

  <xsd:attributeGroup name="cellvalign">
    <xsd:annotation>
      <xsd:documentation>
	vertical alignment attributes for cell contents
	% cellvalign
	  "valign     (top|middle|bottom|baseline) #IMPLIED"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:attribute name="valign" use="optional">
      <xsd:simpleType base="xsd:string">
        <xsd:enumeration value="top"/>
        <xsd:enumeration value="middle"/>
        <xsd:enumeration value="bottom"/>
        <xsd:enumeration value="baseline"/>
      </xsd:simpleType>
    </xsd:attribute>
  </xsd:attributeGroup>

  <xsd:element name="table">
    <xsd:annotation>
      <xsd:documentation>
	I believe table content model in XHTML 1.0 is wrong.
	Tables Module in XHTML Modularization does it right.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="elementOnly"
                     base="html:common" derivedBy="extension">
      <xsd:element ref="html:caption" minOccurs="0" maxOccurs="1"/>
      <xsd:choice>
        <xsd:element ref="html:col" minOccurs="0" maxOccurs="unbounded"/>
        <xsd:element ref="html:colgroup" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:element ref="html:thead" minOccurs="0" maxOccurs="1"/>
      <xsd:element ref="html:tfoot" minOccurs="0" maxOccurs="1"/>
      <xsd:choice>
        <xsd:element ref="html:tbody" minOccurs="1" maxOccurs="unbounded"/>
        <xsd:element ref="html:tr" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:attribute name="summary" type="html:Text" use="optional"/>
      <xsd:attribute name="width" type="html:Length" use="optional"/>
      <xsd:attribute name="border" type="html:Pixels" use="optional"/>
      <xsd:attribute name="frame" use="optional" type="html:TFrame"/>
      <xsd:attribute name="rules" use="optional" type="html:TRules"/>
      <xsd:attribute name="cellspacing" type="html:Length" use="optional"/>
      <xsd:attribute name="cellpadding" type="html:Length" use="optional"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:simpleType name="CAlign" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	% CAlign "(top|bottom|left|right)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="top"/>
    <xsd:enumeration value="bottom"/>
    <xsd:enumeration value="left"/>
    <xsd:enumeration value="right"/>
  </xsd:simpleType>

  <xsd:element name="caption" type="html:InlineType"/>

  <xsd:element name="colgroup">
    <xsd:annotation>
      <xsd:documentation>
	colgroup groups a set of col elements. It allows you to group
	several semantically related columns together.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="elementOnly"
                     base="html:common" derivedBy="restriction">
      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="html:col"/>
      </xsd:sequence>
      <xsd:attribute name="span" type="xsd:positiveInteger" use="default" value="1"/>
      <xsd:attribute name="width" type="html:MultiLength" use="optional"/>
      <xsd:attributeGroup ref="html:cellhalign"/>
      <xsd:attributeGroup ref="html:cellvalign"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="col">
    <xsd:annotation>
      <xsd:documentation>
	col elements define the alignment properties for cells in
	one or more columns.

	The width attribute specifies the width of the columns, e.g.

	    width=64        width in screen pixels
	    width=0.5*      relative width of 0.5

	The span attribute causes the attributes of one
	col element to apply to more than one column.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:complexType content="empty">
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attribute name="span" type="xsd:positiveInteger" use="default" value="1"/>
      <xsd:attribute name="width" type="html:MultiLength" use="optional"/>
      <xsd:attributeGroup ref="html:cellhalign"/>
      <xsd:attributeGroup ref="html:cellvalign"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="rowGroupType" content="elementOnly"
                   base="html:common" derivedBy="restriction">
    <xsd:annotation>
      <xsd:documentation>
	define a complexType for row groups (thead, tfoot, tbody)
      </xsd:documentation>
    </xsd:annotation>

      <xsd:sequence minOccurs="1" maxOccurs="unbounded">
        <xsd:element ref="html:tr"/>
      </xsd:sequence>
      <xsd:attributeGroup ref="html:cellhalign"/>
      <xsd:attributeGroup ref="html:cellvalign"/>
  </xsd:complexType>

  <xsd:element name="thead" type="html:rowGroupType">
    <xsd:annotation>
      <xsd:documentation>
	Use thead to duplicate headers when breaking table
	across page boundaries, or for static headers when
	tbody sections are rendered in scrolling panel.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="tfoot" type="html:rowGroupType">
    <xsd:annotation>
      <xsd:documentation>
	Use tfoot to duplicate footers when breaking table
	across page boundaries, or for static footers when
	tbody sections are rendered in scrolling panel.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="tbody" type="html:rowGroupType">
    <xsd:annotation>
      <xsd:documentation>
	Use multiple tbody sections when rules are needed
	between groups of table rows.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="tr">
    <xsd:complexType content="elementOnly">
      <xsd:choice maxOccurs="unbounded">
        <xsd:element ref="html:th"/>
        <xsd:element ref="html:td"/>
      </xsd:choice>
      <xsd:attributeGroup ref="html:coreattrs"/>
      <xsd:attributeGroup ref="html:i18n"/>
      <xsd:attributeGroup ref="html:events"/>
      <xsd:attributeGroup ref="html:cellhalign"/>
      <xsd:attributeGroup ref="html:cellvalign"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:simpleType name="Scope" base="xsd:string">
    <xsd:annotation>
      <xsd:documentation>
	Scope is simpler than headers attribute for common tables
	% Scope "(row|col|rowgroup|colgroup)"
      </xsd:documentation>
    </xsd:annotation>

    <xsd:enumeration value="row"/>
    <xsd:enumeration value="col"/>
    <xsd:enumeration value="rowgroup"/>
    <xsd:enumeration value="colgroup"/>
  </xsd:simpleType>

  <xsd:complexType name="tableCellType" content="mixed"
                   base="html:common" derivedBy="extension">
    <xsd:annotation>
      <xsd:documentation>
	define a complexType for table cells (th and td)
	th is for headers, td for data and for cells acting as both
      </xsd:documentation>
    </xsd:annotation>

    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="html:p"/>
      <xsd:element ref="html:heading"/>
      <xsd:element ref="html:div"/>
      <xsd:element ref="html:lists"/>
      <xsd:element ref="html:blocktext"/>
      <xsd:element ref="html:fieldset"/>
      <xsd:element ref="html:table"/>
      <xsd:element ref="html:form"/>
      <xsd:element ref="html:a"/>
      <xsd:element ref="html:special"/>
      <xsd:element ref="html:fontstyle"/>
      <xsd:element ref="html:phrase"/>
      <xsd:element ref="html:inline.forms"/>
      <xsd:element ref="html:misc"/>
    </xsd:choice>
    <xsd:attribute name="abbr" type="html:Text" use="optional"/>
    <xsd:attribute name="axis" type="xsd:string" use="optional"/>
    <xsd:attribute name="headers" type="xsd:IDREFS" use="optional"/>
    <xsd:attribute name="scope" use="optional" type="html:Scope"/>
    <xsd:attribute name="rowspan" type="xsd:positiveInteger" use="default" value="1"/>
    <xsd:attribute name="colspan" type="xsd:positiveInteger" use="default" value="1"/>
    <xsd:attributeGroup ref="html:cellhalign"/>
    <xsd:attributeGroup ref="html:cellvalign"/>
  </xsd:complexType>

  <xsd:element name="th" type="html:tableCellType"/>
  <xsd:element name="td" type="html:tableCellType"/>
</xsd:schema>
