<?xml version="1.0" encoding="UTF-8"?>
<!--
  This file is part of DocBook V5.0
  
  Copyright 1992-2008 HaL Computer Systems, Inc.,
  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
  Organization for the Advancement of Structured Information
  Standards (OASIS).
  
  Release: $Id: htmltbl.rnc 8931 2010-10-20 13:29:20Z nwalsh $
  
  Permission to use, copy, modify and distribute the DocBook schema
  and its accompanying documentation for any purpose and without fee
  is hereby granted in perpetuity, provided that the above copyright
  notice and this paragraph appear in all copies. The copyright
  holders make no representation about the suitability of the schema
  for any purpose. It is provided "as is" without expressed or implied
  warranty.
  
  If you modify the DocBook schema in any way, label your schema as a
  variant of DocBook. See the reference documentation
  (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
  for more information.
  
  Please direct all questions, bug reports, or suggestions for changes
  to the docbook@lists.oasis-open.org mailing list. For more
  information, see http://www.oasis-open.org/docbook/.
  
  ======================================================================
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
  <xs:attributeGroup name="db.html.coreattrs">
    <xs:attribute name="class"/>
    <xs:attribute name="style"/>
    <xs:attribute name="title"/>
  </xs:attributeGroup>
  <!-- dir isn't listed here because it's already a common attribute -->
  <xs:attributeGroup name="db.html.i18n">
    <xs:attribute name="lang"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.events">
    <xs:attribute name="onclick"/>
    <xs:attribute name="ondblclick"/>
    <xs:attribute name="onmousedown"/>
    <xs:attribute name="onmouseup"/>
    <xs:attribute name="onmouseover"/>
    <xs:attribute name="onmousemove"/>
    <xs:attribute name="onmouseout"/>
    <xs:attribute name="onkeypress"/>
    <xs:attribute name="onkeydown"/>
    <xs:attribute name="onkeyup"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.attrs">
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.html.coreattrs"/>
    <xs:attributeGroup ref="db:db.html.i18n"/>
    <xs:attributeGroup ref="db:db.html.events"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.cellhalign">
    <xs:attribute name="align">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="left">
            <xs:annotation>
              <xs:documentation>Left-flush data/Left-justify text. This is the default value for table data.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="center">
            <xs:annotation>
              <xs:documentation>Center data/Center-justify text. This is the default value for table headers.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="right">
            <xs:annotation>
              <xs:documentation>Right-flush data/Right-justify text.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="justify">
            <xs:annotation>
              <xs:documentation>Double-justify text.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="char">
            <xs:annotation>
              <xs:documentation>Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="char"/>
    <xs:attribute name="charoff">
      <xs:simpleType>
        <xs:union memberTypes="xs:integer">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="[0-9]+%"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.cellvalign">
    <xs:attribute name="valign">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="top">
            <xs:annotation>
              <xs:documentation>Cell data is flush with the top of the cell.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="middle">
            <xs:annotation>
              <xs:documentation>Cell data is centered vertically within the cell. This is the default value.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="bottom">
            <xs:annotation>
              <xs:documentation>Cell data is flush with the bottom of the cell.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="baseline">
            <xs:annotation>
              <xs:documentation>All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.table.attributes">
    <xs:attribute name="summary"/>
    <xs:attribute name="width">
      <xs:simpleType>
        <xs:union memberTypes="xs:integer">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="[0-9]+%"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="border" type="xs:nonNegativeInteger"/>
    <xs:attribute name="frame">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="void">
            <xs:annotation>
              <xs:documentation>No sides. This is the default value.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="above">
            <xs:annotation>
              <xs:documentation>The top side only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="below">
            <xs:annotation>
              <xs:documentation>The bottom side only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="hsides">
            <xs:annotation>
              <xs:documentation>The top and bottom sides only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="lhs">
            <xs:annotation>
              <xs:documentation>The left-hand side only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="rhs">
            <xs:annotation>
              <xs:documentation>The right-hand side only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="vsides">
            <xs:annotation>
              <xs:documentation>The right and left sides only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="box">
            <xs:annotation>
              <xs:documentation>All four sides.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="border">
            <xs:annotation>
              <xs:documentation>All four sides.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rules">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="none">
            <xs:annotation>
              <xs:documentation>No rules. This is the default value.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="groups">
            <xs:annotation>
              <xs:documentation>Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="rows">
            <xs:annotation>
              <xs:documentation>Rules will appear between rows only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="cols">
            <xs:annotation>
              <xs:documentation>Rules will appear between columns only.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="all">
            <xs:annotation>
              <xs:documentation>Rules will appear between all rows and columns.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cellspacing">
      <xs:simpleType>
        <xs:union memberTypes="xs:integer">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="[0-9]+%"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cellpadding">
      <xs:simpleType>
        <xs:union memberTypes="xs:integer">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="[0-9]+%"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.tablecell.attributes">
    <xs:attribute name="abbr"/>
    <xs:attribute name="axis"/>
    <xs:attribute name="headers"/>
    <xs:attribute name="scope">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="row">
            <xs:annotation>
              <xs:documentation>The current cell provides header information for the rest of the row that contains it</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="col">
            <xs:annotation>
              <xs:documentation>The current cell provides header information for the rest of the column that contains it.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="rowgroup">
            <xs:annotation>
              <xs:documentation>The header cell provides header information for the rest of the row group that contains it.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="colgroup">
            <xs:annotation>
              <xs:documentation>The header cell provides header information for the rest of the column group that contains it.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="rowspan" type="xs:nonNegativeInteger"/>
    <xs:attribute name="colspan" type="xs:nonNegativeInteger"/>
  </xs:attributeGroup>
  <xs:group name="db.html.table.info">
    <xs:sequence>
      <xs:group ref="db:db._info.title.forbidden"/>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="db.html.table.model">
    <xs:sequence>
      <xs:group minOccurs="0" ref="db:db.html.table.info"/>
      <xs:group ref="db:db.html.caption"/>
      <xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:col"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colgroup"/>
      </xs:choice>
      <xs:group minOccurs="0" ref="db:db.html.thead"/>
      <xs:group minOccurs="0" ref="db:db.html.tfoot"/>
      <xs:choice>
        <xs:group maxOccurs="unbounded" ref="db:db.html.tbody"/>
        <xs:element maxOccurs="unbounded" ref="db:tr"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:group name="db.html.informaltable.info">
    <xs:sequence>
      <xs:group ref="db:db._info.title.forbidden"/>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="db.html.informaltable.model">
    <xs:sequence>
      <xs:group minOccurs="0" ref="db:db.html.informaltable.info"/>
      <xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:col"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colgroup"/>
      </xs:choice>
      <xs:group minOccurs="0" ref="db:db.html.thead"/>
      <xs:group minOccurs="0" ref="db:db.html.tfoot"/>
      <xs:choice>
        <xs:group maxOccurs="unbounded" ref="db:db.html.tbody"/>
        <xs:element maxOccurs="unbounded" ref="db:tr"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.table.role.attribute">
    <xs:attribute name="role" use="required"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.table.label.attribute">
    <xs:attributeGroup ref="db:db.label.attribute"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.html.table.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.table.attributes"/>
    <xs:attribute name="role"/>
    <xs:attribute name="label"/>
    <xs:attribute name="orient">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="land">
            <xs:annotation>
              <xs:documentation>90 degrees counter-clockwise from the rest of the text flow.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="port">
            <xs:annotation>
              <xs:documentation>The same orientation as the rest of the text flow.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
    <xs:attribute name="tabstyle"/>
    <xs:attribute name="floatstyle"/>
  </xs:attributeGroup>
  <xs:group name="db.html.table">
    <xs:sequence>
      <xs:element name="table">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="db:db.html.table.model">
              <xs:attributeGroup ref="db:db.html.table.attlist"/>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.informaltable.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.table.attributes"/>
  </xs:attributeGroup>
  <xs:group name="db.html.informaltable">
    <xs:sequence>
      <xs:element name="informaltable">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="db:db.html.informaltable.model">
              <xs:attributeGroup ref="db:db.html.informaltable.attlist"/>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.caption.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
  </xs:attributeGroup>
  <xs:group name="db.html.caption">
    <xs:sequence>
      <xs:element name="caption">
        <xs:complexType mixed="true">
          <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
          <xs:attributeGroup ref="db:db.html.caption.attlist"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.col.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attribute name="span" type="xs:nonNegativeInteger"/>
    <xs:attribute name="width"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:element name="col">
    <xs:complexType>
      <xs:attributeGroup ref="db:db.html.col.attlist"/>
    </xs:complexType>
  </xs:element>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.colgroup.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attribute name="span" type="xs:nonNegativeInteger"/>
    <xs:attribute name="width"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:element name="colgroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:col"/>
      </xs:sequence>
      <xs:attributeGroup ref="db:db.html.colgroup.attlist"/>
    </xs:complexType>
  </xs:element>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.thead.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:group name="db.html.thead">
    <xs:sequence>
      <xs:element name="thead">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="db:tr"/>
          </xs:sequence>
          <xs:attributeGroup ref="db:db.html.thead.attlist"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.tfoot.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:group name="db.html.tfoot">
    <xs:sequence>
      <xs:element name="tfoot">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="db:tr"/>
          </xs:sequence>
          <xs:attributeGroup ref="db:db.html.tfoot.attlist"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.tbody.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:group name="db.html.tbody">
    <xs:sequence>
      <xs:element name="tbody">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="db:tr"/>
          </xs:sequence>
          <xs:attributeGroup ref="db:db.html.tbody.attlist"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.tr.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:element name="tr">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="db:th"/>
        <xs:element ref="db:td"/>
      </xs:choice>
      <xs:attributeGroup ref="db:db.html.tr.attlist"/>
    </xs:complexType>
  </xs:element>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.th.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.tablecell.attributes"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:element name="th">
    <xs:complexType mixed="true">
      <xs:choice>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
      </xs:choice>
      <xs:attributeGroup ref="db:db.html.th.attlist"/>
    </xs:complexType>
  </xs:element>
  <!-- ====================================================================== -->
  <xs:attributeGroup name="db.html.td.attlist">
    <xs:attributeGroup ref="db:db.html.attrs"/>
    <xs:attributeGroup ref="db:db.html.tablecell.attributes"/>
    <xs:attributeGroup ref="db:db.html.cellhalign"/>
    <xs:attributeGroup ref="db:db.html.cellvalign"/>
  </xs:attributeGroup>
  <xs:element name="td">
    <xs:complexType mixed="true">
      <xs:choice>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
      </xs:choice>
      <xs:attributeGroup ref="db:db.html.td.attlist"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
