<?xml version="1.0" encoding="UTF-8"?>

<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.w3.org/1998/Math/MathML"
  targetNamespace="http://www.w3.org/1998/Math/MathML"
  elementFormDefault="qualified">

<xs:annotation>
  <xs:documentation>
  This is an XML Schema module for tables in MathML presentation.
  Author: St&#233;phane Dalmas, INRIA.
  </xs:documentation>
</xs:annotation>

<!-- Common attributes -->

<xs:attributeGroup name="Table-alignment.attrib">
  <xs:attribute name="rowalign" default="baseline">
    <xs:simpleType> 
      <xs:restriction base="xs:string">
        <xs:pattern value="(top|bottom|center|baseline|axis)( top| bottom| center| baseline| axis)*"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="columnalign" default="center">
    <xs:simpleType> 
      <xs:restriction base="xs:string">
        <xs:pattern value="(left|center|right)( left| center| right)*"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="groupalign" type="xs:string"/>
</xs:attributeGroup>

<!-- "mtr" -->

<xs:attributeGroup name="mtr.attlist">
  <xs:attributeGroup ref="Table-alignment.attrib"/>
  <xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:group name="mtr.content">
  <xs:sequence>
    <xs:element ref="mtd"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="mtr.type">
  <xs:group ref="mtr.content"  minOccurs="1" maxOccurs="unbounded"/>
  <xs:attributeGroup ref="mtr.attlist"/>
</xs:complexType>

<xs:element name="mtr" type="mtr.type"/>

<!-- "labeledtr" -->

<xs:attributeGroup name="mlabeledtr.attlist">
  <xs:attributeGroup ref="Table-alignment.attrib"/>
  <xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:group name="mlabeledtr.content">
  <xs:sequence>
    <xs:element ref="mtd"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="mlabeledtr.type">
  <xs:group ref="mlabeledtr.content" minOccurs="1" maxOccurs="unbounded"/>
  <xs:attributeGroup ref="mlabeledtr.attlist"/>
</xs:complexType>

<xs:element name="mlabeledtr" type="mlabeledtr.type"/>

<!-- "mtd" -->

<xs:attributeGroup name="mtd.attlist">
  <xs:attributeGroup ref="Table-alignment.attrib"/>
  <xs:attribute name="columnspan" type="xs:positiveInteger" default="1"/>
  <xs:attribute name="rowspan" type="xs:positiveInteger" default="1"/>
  <xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:group name="mtd.content">
  <xs:sequence>
    <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="1"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="mtd.type">
  <xs:group ref="mtd.content"  minOccurs="1" maxOccurs="unbounded"/>
  <xs:attributeGroup ref="mtd.attlist"/>
</xs:complexType>

<xs:element name="mtd" type="mtd.type"/>

<!-- "mtable" -->

<xs:attributeGroup name="mtable.attlist">
  <xs:attributeGroup ref="Table-alignment.attrib"/>
  <xs:attribute name="align" type="xs:string" default="axis"/>
  <xs:attribute name="alignmentscope" default="true">
   <xs:simpleType>
      <xs:restriction base="xs:string">
         <xs:pattern value="(true|false)( true| false)*"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="columnwidth" type="xs:string" default="auto"/>
  <xs:attribute name="width" type="xs:string" default="auto"/>
  <xs:attribute name="rowspacing" type="xs:string" default="1.0ex"/>
  <xs:attribute name="columnspacing" type="xs:string" default="0.8em"/>
  <xs:attribute name="rowlines" type="xs:string" default="none"/>
  <xs:attribute name="columnlines" type="xs:string" default="none"/>
  <xs:attribute name="frame" default="none">
    <xs:simpleType>
      <xs:restriction base="xs:string">
         <xs:enumeration value="none"/>
         <xs:enumeration value="solid"/>
         <xs:enumeration value="dashed"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="framespacing" type="xs:string" default="0.4em 0.5ex"/>
  <xs:attribute name="equalrows" type="xs:boolean" default="false"/>
  <xs:attribute name="equalcolumns" type="xs:boolean" default="false"/>
  <xs:attribute name="displaystyle" type="xs:boolean" default="false"/>
  <xs:attribute name="side" default="right">
    <xs:simpleType>
      <xs:restriction base="xs:string">
         <xs:enumeration value="left"/>
         <xs:enumeration value="right"/>
         <xs:enumeration value="leftoverlap"/>
         <xs:enumeration value="rightoverlap"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="minlabelspacing" type="length-with-unit" default="0.8em"/>
  <xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:group name="mtable.content">
  <xs:choice>
    <xs:element ref="mtr"/>
    <xs:element ref="mlabeledtr"/>
  </xs:choice>
</xs:group>

<xs:complexType name="mtable.type">
  <xs:group ref="mtable.content"  minOccurs="1" maxOccurs="unbounded"/>
  <xs:attributeGroup ref="mtable.attlist"/>
</xs:complexType>

<xs:element name="mtable" type="mtable.type"/>

<!-- "maligngroup" -->

<xs:attributeGroup name="maligngroup.attlist">
  <xs:attribute name="groupalign">
     <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="left"/>
          <xs:enumeration value="center"/>
          <xs:enumeration value="right"/>
          <xs:enumeration value="decimalpoint"/>
      </xs:restriction>
     </xs:simpleType>    
  </xs:attribute>
  <xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:complexType name="maligngroup.type">
  <xs:attributeGroup ref="maligngroup.attlist"/>
</xs:complexType>

<xs:element name="maligngroup" type="maligngroup.type"/>

<!-- "malignmark" -->

<xs:attributeGroup name="malignmark.attlist">
  <xs:attribute name="edge" default="left">
     <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
     </xs:simpleType>
  </xs:attribute>
  <xs:attributeGroup ref="Common.attrib"/>
</xs:attributeGroup>

<xs:complexType name="malignmark.type">
  <xs:attributeGroup ref="malignmark.attlist"/>
</xs:complexType>

<xs:element name="malignmark" type="malignmark.type"/>

<!-- The group of everything -->

<xs:group name="Presentation-table.class">
  <xs:choice>
     <xs:element ref="mtable"/>
     <xs:element ref="maligngroup"/>
     <xs:element ref="malignmark"/>
  </xs:choice>  
</xs:group>

</xs:schema>
<!--
  Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
  of Technology, Institut National de Recherche en Informatique et en
  Automatique, Keio University). All Rights Reserved. See
  http://www.w3.org/Consortium/Legal/.
  -->
