<?xml version="1.0" encoding="UTF-8"?>
<!-- MathML 2.0 DTD  ....................................................... -->
<!-- file: mathml2.dtd -->
<!--
  MathML 2.0 DTD
  
  This is the Mathematical Markup Language (MathML) 2.0, an XML
  application for describing mathematical notation and capturing
  both its structure and content.
  
  Copyright 1998-2000 World Wide Web Consortium
     (Massachusetts Institute of Technology, Institut National de
      Recherche en Informatique et en Automatique, Keio University).
      All Rights Reserved.
  
  Permission to use, copy, modify and distribute the XHTML 1.1 DTD 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 DTD for any purpose.
  
  It is provided "as is" without expressed or implied warranty.
  
     Revision:   $Id: mathml2.dtd,v 1.20 2000/12/06 19:03:13 davidc Exp $
  
  This entity may be identified by the PUBLIC and SYSTEM identifiers:
  
    PUBLIC "-//W3C//DTD MathML 2.0//EN"
    SYSTEM "mathml2.dtd"
  
  Revisions: editor and revision history at EOF
-->
<!-- MathML Qualified Names module ............................... -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mathml="http://www.w3.org/1998/Math/MathML">
  <xs:include schemaLocation="mathml2-qname-1.mod.xsd"/>
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
  <!--
    if %NS.prefixed; is INCLUDE, include all NS attributes, 
    otherwise just those associated with MathML
  -->
  <!-- Attributes shared by all elements  .......................... -->
  <xs:attributeGroup name="MATHML.Common.attrib">
    <xs:attribute ref="xlink:href"/>
    <xs:attribute name="class"/>
    <xs:attribute name="style"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="xref" type="xs:IDREF"/>
    <xs:attribute name="other"/>
  </xs:attributeGroup>
  <!-- Presentation element set  ................................... -->
  <!-- Attribute definitions -->
  <xs:attributeGroup name="att-fontsize">
    <xs:attribute name="fontsize"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-fontweight">
    <xs:attribute name="fontweight">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="bold"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-fontstyle">
    <xs:attribute name="fontstyle">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="italic"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-fontfamily">
    <xs:attribute name="fontfamily"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-color">
    <xs:attribute name="color"/>
  </xs:attributeGroup>
  <!-- MathML2 typographically-distinguished symbol attributes -->
  <xs:attributeGroup name="att-mathvariant">
    <xs:attribute name="mathvariant"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-mathsize">
    <xs:attribute name="mathsize"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-mathcolor">
    <xs:attribute name="mathcolor"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-mathbackground">
    <xs:attribute name="mathbackground"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-fontinfo">
    <xs:attributeGroup ref="mathml:att-fontsize"/>
    <xs:attributeGroup ref="mathml:att-fontweight"/>
    <xs:attributeGroup ref="mathml:att-fontstyle"/>
    <xs:attributeGroup ref="mathml:att-fontfamily"/>
    <xs:attributeGroup ref="mathml:att-color"/>
    <xs:attributeGroup ref="mathml:att-mathvariant"/>
    <xs:attributeGroup ref="mathml:att-mathsize"/>
    <xs:attributeGroup ref="mathml:att-mathcolor"/>
    <xs:attributeGroup ref="mathml:att-mathbackground"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-form">
    <xs:attribute name="form">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="prefix"/>
          <xs:enumeration value="infix"/>
          <xs:enumeration value="postfix"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-fence">
    <xs:attribute name="fence">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-separator">
    <xs:attribute name="separator">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-lspace">
    <xs:attribute name="lspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-rspace">
    <xs:attribute name="rspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-stretchy">
    <xs:attribute name="stretchy">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-symmetric">
    <xs:attribute name="symmetric">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-maxsize">
    <xs:attribute name="maxsize"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-minsize">
    <xs:attribute name="minsize"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-largeop">
    <xs:attribute name="largeop">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-movablelimits">
    <xs:attribute name="movablelimits">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-accent">
    <xs:attribute name="accent">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-opinfo">
    <xs:attributeGroup ref="mathml:att-form"/>
    <xs:attributeGroup ref="mathml:att-fence"/>
    <xs:attributeGroup ref="mathml:att-separator"/>
    <xs:attributeGroup ref="mathml:att-lspace"/>
    <xs:attributeGroup ref="mathml:att-rspace"/>
    <xs:attributeGroup ref="mathml:att-stretchy"/>
    <xs:attributeGroup ref="mathml:att-symmetric"/>
    <xs:attributeGroup ref="mathml:att-maxsize"/>
    <xs:attributeGroup ref="mathml:att-minsize"/>
    <xs:attributeGroup ref="mathml:att-largeop"/>
    <xs:attributeGroup ref="mathml:att-movablelimits"/>
    <xs:attributeGroup ref="mathml:att-accent"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-width">
    <xs:attribute name="width"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-height">
    <xs:attribute name="height"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-depth">
    <xs:attribute name="depth"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-linebreak">
    <xs:attribute name="linebreak"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-sizeinfo">
    <xs:attributeGroup ref="mathml:att-width"/>
    <xs:attributeGroup ref="mathml:att-height"/>
    <xs:attributeGroup ref="mathml:att-depth"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-lquote">
    <xs:attribute name="lquote"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-rquote">
    <xs:attribute name="rquote"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-linethickness">
    <xs:attribute name="linethickness"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-scriptlevel">
    <xs:attribute name="scriptlevel"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-displaystyle">
    <xs:attribute name="displaystyle">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-scriptsizemultiplier">
    <xs:attribute name="scriptsizemultiplier"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-scriptminsize">
    <xs:attribute name="scriptminsize"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-background">
    <xs:attribute name="background"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-veryverythinmathspace">
    <xs:attribute name="veryverythinmathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-verythinmathspace">
    <xs:attribute name="verythinmathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-thinmathspace">
    <xs:attribute name="thinmathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-mediummathspace">
    <xs:attribute name="mediummathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-thickmathspace">
    <xs:attribute name="thickmathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-verythickmathspace">
    <xs:attribute name="verythickmathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-veryverythickmathspace">
    <xs:attribute name="veryverythickmathspace"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-open">
    <xs:attribute name="open"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-close">
    <xs:attribute name="close"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-separators">
    <xs:attribute name="separators"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-subscriptshift">
    <xs:attribute name="subscriptshift"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-superscriptshift">
    <xs:attribute name="superscriptshift"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-accentunder">
    <xs:attribute name="accentunder">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="true"/>
          <xs:enumeration value="false"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-align">
    <xs:attribute name="align"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-rowalign">
    <xs:attribute name="rowalign"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-columnalign">
    <xs:attribute name="columnalign"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-columnwidth">
    <xs:attribute name="columnwidth"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-groupalign">
    <xs:attribute name="groupalign"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-alignmentscope">
    <xs:attribute name="alignmentscope"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-rowspacing">
    <xs:attribute name="rowspacing"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-columnspacing">
    <xs:attribute name="columnspacing"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-rowlines">
    <xs:attribute name="rowlines"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-columnlines">
    <xs:attribute name="columnlines"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-frame">
    <xs:attribute name="frame">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="none"/>
          <xs:enumeration value="solid"/>
          <xs:enumeration value="dashed"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-framespacing">
    <xs:attribute name="framespacing"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-equalrows">
    <xs:attribute name="equalrows"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-equalcolumns">
    <xs:attribute name="equalcolumns"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-tableinfo">
    <xs:attributeGroup ref="mathml:att-align"/>
    <xs:attributeGroup ref="mathml:att-rowalign"/>
    <xs:attributeGroup ref="mathml:att-columnalign"/>
    <xs:attributeGroup ref="mathml:att-columnwidth"/>
    <xs:attributeGroup ref="mathml:att-groupalign"/>
    <xs:attributeGroup ref="mathml:att-alignmentscope"/>
    <xs:attributeGroup ref="mathml:att-rowspacing"/>
    <xs:attributeGroup ref="mathml:att-columnspacing"/>
    <xs:attributeGroup ref="mathml:att-rowlines"/>
    <xs:attributeGroup ref="mathml:att-columnlines"/>
    <xs:attributeGroup ref="mathml:att-frame"/>
    <xs:attributeGroup ref="mathml:att-framespacing"/>
    <xs:attributeGroup ref="mathml:att-equalrows"/>
    <xs:attributeGroup ref="mathml:att-equalcolumns"/>
    <xs:attributeGroup ref="mathml:att-displaystyle"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-rowspan">
    <xs:attribute name="rowspan"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-columnspan">
    <xs:attribute name="columnspan"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-edge">
    <xs:attribute name="edge">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-actiontype">
    <xs:attribute name="actiontype"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-selection">
    <xs:attribute name="selection"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-name">
    <xs:attribute name="name"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-alt">
    <xs:attribute name="alt"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-index">
    <xs:attribute name="index"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-bevelled">
    <xs:attribute name="bevelled"/>
  </xs:attributeGroup>
  <!-- Presentation schemata with content -->
  <xs:element name="ptoken" abstract="true"/>
  <!-- Empty presentation schemata -->
  <xs:element name="petoken" abstract="true">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:att-sizeinfo"/>
      <xs:attributeGroup ref="mathml:att-linebreak"/>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mspace" substitutionGroup="mathml:petoken"/>
  <!-- Presentation: general layout schemata -->
  <xs:element name="pgenschema" abstract="true" substitutionGroup="mathml:plschema"/>
  <!-- Presentation layout schemata: scripts and limits -->
  <xs:element name="pscrschema" abstract="true" substitutionGroup="mathml:plschema"/>
  <!-- Presentation layout schemata: empty elements for scripts -->
  <xs:element name="pscreschema" abstract="true">
    <xs:complexType/>
  </xs:element>
  <xs:element name="mprescripts" substitutionGroup="mathml:pscreschema"/>
  <xs:element name="none" substitutionGroup="mathml:pscreschema"/>
  <!-- Presentation layout schemata: tables -->
  <xs:element name="ptabschema" abstract="true" substitutionGroup="mathml:plschema"/>
  <xs:element name="plschema" abstract="true"/>
  <!-- Empty presentation layout schemata -->
  <xs:element name="peschema" abstract="true"/>
  <xs:element name="malignmark" substitutionGroup="mathml:peschema">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:att-edge"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="maligngroup" substitutionGroup="mathml:peschema">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-groupalign"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mglyph">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:att-alt"/>
      <xs:attributeGroup ref="mathml:att-fontfamily"/>
      <xs:attributeGroup ref="mathml:att-index"/>
    </xs:complexType>
  </xs:element>
  <!-- Presentation action schemata -->
  <xs:element name="pactions" abstract="true">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-actiontype"/>
          <xs:attributeGroup ref="mathml:att-selection"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!--
    The following entity for substitution into
    content constructs excludes elements that
    are not valid as expressions.
  -->
  <xs:group name="PresInCont">
    <xs:choice>
      <xs:element ref="mathml:ptoken"/>
      <xs:element ref="mathml:petoken"/>
      <xs:element ref="mathml:plschema"/>
      <xs:element ref="mathml:peschema"/>
      <xs:element ref="mathml:pactions"/>
    </xs:choice>
  </xs:group>
  <!-- Presentation entity: all presentation constructs -->
  <xs:group name="Presentation">
    <xs:choice>
      <xs:element ref="mathml:ptoken"/>
      <xs:element ref="mathml:petoken"/>
      <xs:element ref="mathml:pscreschema"/>
      <xs:element ref="mathml:plschema"/>
      <xs:element ref="mathml:peschema"/>
      <xs:element ref="mathml:pactions"/>
    </xs:choice>
  </xs:group>
  <!-- Content element set  ........................................ -->
  <!-- Attribute definitions -->
  <xs:attributeGroup name="att-base">
    <xs:attribute name="base" default="10"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-closure">
    <xs:attribute name="closure" default="closed"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-definition">
    <xs:attribute name="definitionURL" default=""/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-encoding">
    <xs:attribute name="encoding" default=""/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-nargs">
    <xs:attribute name="nargs" default="1"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-occurrence">
    <xs:attribute name="occurrence" default="function-model"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-order">
    <xs:attribute name="order" default="numeric"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-scope">
    <xs:attribute name="scope" default="local"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-type">
    <xs:attribute name="type"/>
  </xs:attributeGroup>
  <!-- Content elements: leaf nodes -->
  <xs:element name="ctoken" abstract="true" substitutionGroup="mathml:Content"/>
  <!-- Content elements: specials -->
  <xs:element name="cspecial" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Content elements: others -->
  <xs:element name="cother" abstract="true" substitutionGroup="mathml:Content"/>
  <xs:element name="sep" substitutionGroup="mathml:cother">
    <xs:complexType/>
  </xs:element>
  <!-- Content elements: semantic mapping -->
  <xs:element name="csemantics" abstract="true" substitutionGroup="mathml:Content"/>
  <!-- Content elements: constructors -->
  <xs:element name="cconstructor" abstract="true" substitutionGroup="mathml:Content"/>
  <!-- Content elements: symbols -->
  <xs:element name="c0ary" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="integers" substitutionGroup="mathml:c0ary"/>
  <xs:element name="reals" substitutionGroup="mathml:c0ary"/>
  <xs:element name="rationals" substitutionGroup="mathml:c0ary"/>
  <xs:element name="naturalnumbers" substitutionGroup="mathml:c0ary"/>
  <xs:element name="complexes" substitutionGroup="mathml:c0ary"/>
  <xs:element name="primes" substitutionGroup="mathml:c0ary"/>
  <xs:element name="exponentiale" substitutionGroup="mathml:c0ary"/>
  <xs:element name="imaginaryi" substitutionGroup="mathml:c0ary"/>
  <xs:element name="notanumber" substitutionGroup="mathml:c0ary"/>
  <xs:element name="true" substitutionGroup="mathml:c0ary"/>
  <xs:element name="false" substitutionGroup="mathml:c0ary"/>
  <xs:element name="emptyset" substitutionGroup="mathml:c0ary"/>
  <xs:element name="pi" substitutionGroup="mathml:c0ary"/>
  <xs:element name="eulergamma" substitutionGroup="mathml:c0ary"/>
  <xs:element name="infinity" substitutionGroup="mathml:c0ary"/>
  <!-- Content elements: operators -->
  <xs:element name="cfuncop1ary" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="inverse" substitutionGroup="mathml:cfuncop1ary"/>
  <xs:element name="domain" substitutionGroup="mathml:cfuncop1ary"/>
  <xs:element name="codomain" substitutionGroup="mathml:cfuncop1ary"/>
  <xs:element name="image" substitutionGroup="mathml:cfuncop1ary"/>
  <xs:element name="cfuncopnary" abstract="true" substitutionGroup="mathml:copnary"/>
  <xs:element name="ident" substitutionGroup="mathml:cfuncop1ary"/>
  <xs:element name="compose" substitutionGroup="mathml:cfuncopnary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="carithop1ary" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="exp" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="abs" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="arg" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="real" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="imaginary" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="conjugate" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="factorial" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="floor" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="ceiling" substitutionGroup="mathml:carithop1ary"/>
  <xs:element name="carithop1or2ary" abstract="true" substitutionGroup="mathml:copmisc"/>
  <xs:element name="minus" substitutionGroup="mathml:carithop1or2ary"/>
  <xs:element name="carithop2ary" abstract="true" substitutionGroup="mathml:cop2ary"/>
  <xs:element name="quotient" substitutionGroup="mathml:carithop2ary"/>
  <xs:element name="divide" substitutionGroup="mathml:carithop2ary"/>
  <xs:element name="power" substitutionGroup="mathml:carithop2ary"/>
  <xs:element name="rem" substitutionGroup="mathml:carithop2ary"/>
  <xs:element name="carithopnary" abstract="true" substitutionGroup="mathml:copnary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="plus" substitutionGroup="mathml:carithopnary"/>
  <xs:element name="max" substitutionGroup="mathml:carithopnary"/>
  <xs:element name="min" substitutionGroup="mathml:carithopnary"/>
  <xs:element name="times" substitutionGroup="mathml:carithopnary"/>
  <xs:element name="gcd" substitutionGroup="mathml:carithopnary"/>
  <xs:element name="lcm" substitutionGroup="mathml:carithopnary"/>
  <xs:element name="carithoproot" abstract="true" substitutionGroup="mathml:copmisc"/>
  <xs:element name="root" substitutionGroup="mathml:carithoproot"/>
  <xs:element name="clogicopquant" abstract="true" substitutionGroup="mathml:copmisc"/>
  <xs:element name="exists" substitutionGroup="mathml:clogicopquant"/>
  <xs:element name="forall" substitutionGroup="mathml:clogicopquant"/>
  <xs:element name="clogicopnary" abstract="true" substitutionGroup="mathml:copnary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="and" substitutionGroup="mathml:clogicopnary"/>
  <xs:element name="or" substitutionGroup="mathml:clogicopnary"/>
  <xs:element name="xor" substitutionGroup="mathml:clogicopnary"/>
  <xs:element name="clogicop1ary" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="not" substitutionGroup="mathml:clogicop1ary"/>
  <xs:element name="clogicop2ary" abstract="true" substitutionGroup="mathml:cop2ary"/>
  <xs:element name="implies" substitutionGroup="mathml:clogicop2ary"/>
  <xs:element name="ccalcop" abstract="true" substitutionGroup="mathml:copmisc"/>
  <xs:element name="divergence" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="grad" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="curl" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="laplacian" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="log" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="int" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="diff" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="partialdiff" substitutionGroup="mathml:ccalcop"/>
  <xs:element name="ccalcop1ary" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="ln" substitutionGroup="mathml:ccalcop1ary"/>
  <xs:element name="csetop1ary" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="card" substitutionGroup="mathml:csetop1ary"/>
  <xs:element name="csetop2ary" abstract="true" substitutionGroup="mathml:cop2ary"/>
  <xs:element name="setdiff" substitutionGroup="mathml:csetop2ary"/>
  <xs:element name="csetopnary" abstract="true" substitutionGroup="mathml:copnary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="union" substitutionGroup="mathml:csetopnary"/>
  <xs:element name="intersect" substitutionGroup="mathml:csetopnary"/>
  <xs:element name="cartesianproduct" substitutionGroup="mathml:csetopnary"/>
  <xs:element name="cseqop" abstract="true" substitutionGroup="mathml:copmisc"/>
  <xs:element name="sum" substitutionGroup="mathml:cseqop"/>
  <xs:element name="product" substitutionGroup="mathml:cseqop"/>
  <xs:element name="limit" substitutionGroup="mathml:cseqop"/>
  <xs:element name="ctrigop" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="sin" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="cos" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="tan" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="sec" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="csc" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="cot" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="sinh" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="cosh" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="tanh" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="sech" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="csch" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="coth" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arcsin" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arccos" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arctan" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arccosh" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arccot" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arccoth" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arccsc" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arccsch" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arcsec" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arcsech" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arcsinh" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="arctanh" substitutionGroup="mathml:ctrigop"/>
  <xs:element name="cstatopnary" abstract="true" substitutionGroup="mathml:copnary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mean" substitutionGroup="mathml:cstatopnary"/>
  <xs:element name="sdev" substitutionGroup="mathml:cstatopnary"/>
  <xs:element name="variance" substitutionGroup="mathml:cstatopnary"/>
  <xs:element name="median" substitutionGroup="mathml:cstatopnary"/>
  <xs:element name="mode" substitutionGroup="mathml:cstatopnary"/>
  <xs:element name="cstatopmoment" abstract="true" substitutionGroup="mathml:copmisc"/>
  <xs:element name="moment" substitutionGroup="mathml:cstatopmoment"/>
  <xs:element name="clalgop1ary" abstract="true" substitutionGroup="mathml:cop1ary"/>
  <xs:element name="determinant" substitutionGroup="mathml:clalgop1ary"/>
  <xs:element name="transpose" substitutionGroup="mathml:clalgop1ary"/>
  <xs:element name="clalgop2ary" abstract="true" substitutionGroup="mathml:cop2ary"/>
  <xs:element name="vectorproduct" substitutionGroup="mathml:clalgop2ary"/>
  <xs:element name="scalarproduct" substitutionGroup="mathml:clalgop2ary"/>
  <xs:element name="outerproduct" substitutionGroup="mathml:clalgop2ary"/>
  <xs:element name="clalgopnary" abstract="true" substitutionGroup="mathml:copnary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="selector" substitutionGroup="mathml:clalgopnary"/>
  <!-- Content elements: relations -->
  <xs:element name="cgenrel2ary" abstract="true" substitutionGroup="mathml:crel2ary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="neq" substitutionGroup="mathml:cgenrel2ary"/>
  <xs:element name="factorof" substitutionGroup="mathml:cgenrel2ary"/>
  <xs:element name="cgenrelnary" abstract="true" substitutionGroup="mathml:crelnary"/>
  <xs:element name="eq" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="equivalent" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="approx" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="gt" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="lt" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="geq" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="leq" substitutionGroup="mathml:cgenrelnary"/>
  <xs:element name="csetrel2ary" abstract="true" substitutionGroup="mathml:crel2ary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="in" substitutionGroup="mathml:csetrel2ary"/>
  <xs:element name="notin" substitutionGroup="mathml:csetrel2ary"/>
  <xs:element name="notsubset" substitutionGroup="mathml:csetrel2ary"/>
  <xs:element name="notprsubset" substitutionGroup="mathml:csetrel2ary"/>
  <xs:element name="csetrelnary" abstract="true" substitutionGroup="mathml:crelnary"/>
  <xs:element name="subset" substitutionGroup="mathml:csetrelnary"/>
  <xs:element name="prsubset" substitutionGroup="mathml:csetrelnary"/>
  <xs:element name="cseqrel2ary" abstract="true" substitutionGroup="mathml:crel2ary">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
      <xs:attributeGroup ref="mathml:att-type"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="tendsto" substitutionGroup="mathml:cseqrel2ary"/>
  <!-- Content elements: quantifiers -->
  <xs:element name="cquantifier" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Operator groups -->
  <xs:element name="cop1ary" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="cop2ary" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="copnary" abstract="true" substitutionGroup="mathml:Content"/>
  <xs:element name="copmisc" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <!-- Relation groups -->
  <xs:element name="crel2ary" abstract="true" substitutionGroup="mathml:Content"/>
  <xs:element name="crelnary" abstract="true" substitutionGroup="mathml:Content">
    <xs:complexType>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <!-- Content constructs: all -->
  <xs:element name="Content" abstract="true"/>
  <!-- Content constructs for substitution in presentation structures -->
  <xs:group name="ContInPres">
    <xs:choice>
      <xs:element ref="mathml:ci"/>
      <xs:element ref="mathml:csymbol"/>
      <xs:element ref="mathml:cn"/>
      <xs:element ref="mathml:c0ary"/>
      <xs:element ref="mathml:apply"/>
      <xs:element ref="mathml:fn"/>
      <xs:element ref="mathml:lambda"/>
      <xs:element ref="mathml:reln"/>
      <xs:element ref="mathml:cconstructor"/>
      <xs:element ref="mathml:semantics"/>
      <xs:element ref="mathml:declare"/>
    </xs:choice>
  </xs:group>
  <!-- ............................................................. -->
  <!--
    Recursive definition for content of expressions. Include
    presentation constructs at lowest level so presentation
    layout schemata hold presentation or content elements.
    Include content constructs at lowest level so content
    elements hold PCDATA or presentation elements at leaf
    level (for permitted substitutable elements in context)
  -->
  <xs:complexType name="ContentExpression">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="mathml:Content"/>
      <xs:group ref="mathml:PresInCont"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="PresExpression">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:group ref="mathml:Presentation"/>
      <xs:group ref="mathml:ContInPres"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="MathExpression">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:group ref="mathml:PresInCont"/>
      <xs:group ref="mathml:ContInPres"/>
    </xs:choice>
  </xs:complexType>
  <!-- PCDATA or MathML character elements -->
  <xs:group name="MathMLCharacters">
    <xs:sequence>
      <xs:element minOccurs="0" ref="mathml:mglyph"/>
    </xs:sequence>
  </xs:group>
  <!-- Content elements: tokens -->
  <!-- (may contain embedded presentation constructs) -->
  <xs:element name="ci" substitutionGroup="mathml:ctoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:group ref="mathml:PresInCont"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-type"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="csymbol" substitutionGroup="mathml:ctoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:group ref="mathml:PresInCont"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
      <xs:attributeGroup ref="mathml:att-type"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="cn" substitutionGroup="mathml:ctoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:element ref="mathml:sep"/>
        <xs:group ref="mathml:PresInCont"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-type"/>
      <xs:attributeGroup ref="mathml:att-base"/>
      <xs:attributeGroup ref="mathml:att-definition"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <!-- Content elements: special -->
  <xs:element name="apply" substitutionGroup="mathml:cspecial"/>
  <xs:element name="reln" substitutionGroup="mathml:cspecial"/>
  <xs:element name="lambda" substitutionGroup="mathml:cspecial"/>
  <!-- Content elements: other -->
  <xs:element name="condition" substitutionGroup="mathml:cother">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="declare" substitutionGroup="mathml:cother">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-type"/>
          <xs:attributeGroup ref="mathml:att-scope"/>
          <xs:attributeGroup ref="mathml:att-nargs"/>
          <xs:attributeGroup ref="mathml:att-occurrence"/>
          <xs:attributeGroup ref="mathml:att-definition"/>
          <xs:attributeGroup ref="mathml:att-encoding"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Content elements: semantics -->
  <xs:element name="semantics" substitutionGroup="mathml:csemantics">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-definition"/>
          <xs:attributeGroup ref="mathml:att-encoding"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="annotation" substitutionGroup="mathml:csemantics">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-encoding"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="annotation-xml" substitutionGroup="mathml:csemantics">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:any">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-encoding"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Content elements: constructors -->
  <xs:element name="interval" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-closure"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="set" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-type"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="list" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-order"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="vector" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="matrix" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="matrixrow" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="piecewise" substitutionGroup="mathml:cconstructor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="mathml:piece"/>
        <xs:element minOccurs="0" ref="mathml:otherwise"/>
      </xs:sequence>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="piece">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="otherwise">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Content elements: operator (user-defined) -->
  <xs:element name="fn" substitutionGroup="mathml:cfuncopnary">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:ContentExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-definition"/>
          <xs:attributeGroup ref="mathml:att-encoding"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Content elements: quantifiers -->
  <xs:element name="lowlimit" substitutionGroup="mathml:cquantifier"/>
  <xs:element name="uplimit" substitutionGroup="mathml:cquantifier"/>
  <xs:element name="bvar" substitutionGroup="mathml:cquantifier"/>
  <xs:element name="degree" substitutionGroup="mathml:cquantifier"/>
  <xs:element name="logbase" substitutionGroup="mathml:cquantifier"/>
  <xs:element name="momentabout" substitutionGroup="mathml:cquantifier"/>
  <xs:element name="domainofapplication" substitutionGroup="mathml:cquantifier"/>
  <!-- ............................................................. -->
  <!--
    Presentation layout schemata contain tokens,
    layout and content schemata.
  -->
  <xs:element name="mstyle" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-fontinfo"/>
          <xs:attributeGroup ref="mathml:att-opinfo"/>
          <xs:attributeGroup ref="mathml:att-lquote"/>
          <xs:attributeGroup ref="mathml:att-rquote"/>
          <xs:attributeGroup ref="mathml:att-linethickness"/>
          <xs:attributeGroup ref="mathml:att-scriptlevel"/>
          <xs:attributeGroup ref="mathml:att-scriptsizemultiplier"/>
          <xs:attributeGroup ref="mathml:att-scriptminsize"/>
          <xs:attributeGroup ref="mathml:att-background"/>
          <xs:attributeGroup ref="mathml:att-veryverythinmathspace"/>
          <xs:attributeGroup ref="mathml:att-verythinmathspace"/>
          <xs:attributeGroup ref="mathml:att-thinmathspace"/>
          <xs:attributeGroup ref="mathml:att-mediummathspace"/>
          <xs:attributeGroup ref="mathml:att-thickmathspace"/>
          <xs:attributeGroup ref="mathml:att-verythickmathspace"/>
          <xs:attributeGroup ref="mathml:att-veryverythickmathspace"/>
          <xs:attributeGroup ref="mathml:att-open"/>
          <xs:attributeGroup ref="mathml:att-close"/>
          <xs:attributeGroup ref="mathml:att-separators"/>
          <xs:attributeGroup ref="mathml:att-subscriptshift"/>
          <xs:attributeGroup ref="mathml:att-superscriptshift"/>
          <xs:attributeGroup ref="mathml:att-accentunder"/>
          <xs:attributeGroup ref="mathml:att-tableinfo"/>
          <xs:attributeGroup ref="mathml:att-rowspan"/>
          <xs:attributeGroup ref="mathml:att-columnspan"/>
          <xs:attributeGroup ref="mathml:att-edge"/>
          <xs:attributeGroup ref="mathml:att-actiontype"/>
          <xs:attributeGroup ref="mathml:att-selection"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="merror" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mphantom" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mrow" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mfrac" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-bevelled"/>
          <xs:attributeGroup ref="mathml:att-linethickness"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="msqrt" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="menclose" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attribute name="notation" default="longdiv"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mroot" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="msub" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-subscriptshift"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="msup" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-superscriptshift"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="msubsup" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-subscriptshift"/>
          <xs:attributeGroup ref="mathml:att-superscriptshift"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mmultiscripts" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-subscriptshift"/>
          <xs:attributeGroup ref="mathml:att-superscriptshift"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="munder" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-accentunder"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mover" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-accent"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="munderover" substitutionGroup="mathml:pscrschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-accent"/>
          <xs:attributeGroup ref="mathml:att-accentunder"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mtable" substitutionGroup="mathml:ptabschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-tableinfo"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mtr" substitutionGroup="mathml:ptabschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-rowalign"/>
          <xs:attributeGroup ref="mathml:att-columnalign"/>
          <xs:attributeGroup ref="mathml:att-groupalign"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mlabeledtr" substitutionGroup="mathml:ptabschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-rowalign"/>
          <xs:attributeGroup ref="mathml:att-columnalign"/>
          <xs:attributeGroup ref="mathml:att-groupalign"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mtd" substitutionGroup="mathml:ptabschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-rowalign"/>
          <xs:attributeGroup ref="mathml:att-columnalign"/>
          <xs:attributeGroup ref="mathml:att-groupalign"/>
          <xs:attributeGroup ref="mathml:att-rowspan"/>
          <xs:attributeGroup ref="mathml:att-columnspan"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="maction" substitutionGroup="mathml:pactions"/>
  <xs:element name="mfenced" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-open"/>
          <xs:attributeGroup ref="mathml:att-close"/>
          <xs:attributeGroup ref="mathml:att-separators"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="mpadded" substitutionGroup="mathml:pgenschema">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:PresExpression">
          <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
          <xs:attributeGroup ref="mathml:att-sizeinfo"/>
          <xs:attributeGroup ref="mathml:att-lspace"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- Presentation elements contain PCDATA or malignmark constructs. -->
  <xs:element name="mi" substitutionGroup="mathml:ptoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:element ref="mathml:malignmark"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-fontinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mn" substitutionGroup="mathml:ptoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:element ref="mathml:malignmark"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-fontinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mo" substitutionGroup="mathml:ptoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:element ref="mathml:malignmark"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-fontinfo"/>
      <xs:attributeGroup ref="mathml:att-opinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mtext" substitutionGroup="mathml:ptoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:element ref="mathml:malignmark"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-fontinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ms" substitutionGroup="mathml:ptoken">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="mathml:MathMLCharacters"/>
        <xs:element ref="mathml:malignmark"/>
      </xs:choice>
      <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
      <xs:attributeGroup ref="mathml:att-fontinfo"/>
      <xs:attributeGroup ref="mathml:att-lquote"/>
      <xs:attributeGroup ref="mathml:att-rquote"/>
    </xs:complexType>
  </xs:element>
  <!-- Browser interface definition  ............................... -->
  <!-- Attributes for top-level element "math" -->
  <xs:attributeGroup name="att-macros">
    <xs:attribute name="macros"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-mode">
    <xs:attribute name="mode"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-display">
    <xs:attribute name="display"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-topinfo">
    <xs:attributeGroup ref="mathml:MATHML.Common.attrib"/>
    <xs:attributeGroup ref="mathml:att-macros"/>
    <xs:attributeGroup ref="mathml:att-mode"/>
    <xs:attributeGroup ref="mathml:att-display"/>
  </xs:attributeGroup>
  <!-- Attributes for browser interface element -->
  <xs:attributeGroup name="att-baseline">
    <xs:attribute name="baseline"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-overflow">
    <xs:attribute name="overflow" default="scroll">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="scroll"/>
          <xs:enumeration value="elide"/>
          <xs:enumeration value="truncate"/>
          <xs:enumeration value="scale"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-altimg">
    <xs:attribute name="altimg"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-alttext">
    <xs:attribute name="alttext"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="att-browif">
    <xs:attributeGroup ref="mathml:att-type"/>
    <xs:attributeGroup ref="mathml:att-name"/>
    <xs:attributeGroup ref="mathml:att-height"/>
    <xs:attributeGroup ref="mathml:att-width"/>
    <xs:attributeGroup ref="mathml:att-baseline"/>
    <xs:attributeGroup ref="mathml:att-overflow"/>
    <xs:attributeGroup ref="mathml:att-altimg"/>
    <xs:attributeGroup ref="mathml:att-alttext"/>
  </xs:attributeGroup>
  <!-- ............................................................. -->
  <!--
    The top-level element "math" contains MathML encoded
    mathematics. The "math" element has the browser info
    attributes iff it is also the browser interface element.
  -->
  <xs:element name="math">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mathml:MathExpression">
          <xs:attributeGroup ref="mathml:att-topinfo"/>
          <xs:attributeGroup ref="mathml:att-browif"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="any" mixed="true">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
<!-- MathML Character Entities .............................................. -->
<!-- Entity sets from ISO Technical Report 9573-13 ..... -->
<!-- Entity sets from informative annex to ISO 8879:1986 (SGML) ....... -->
<!-- New characters defined by MathML ............................ -->
<!-- MathML aliases for characters defined above ................. -->
<!-- end of MathML Character Entity section -->
<!--
  Revision History:
  
  Initial draft (syntax = XML) 1997-05-09
     Stephen Buswell
  Revised 1997-05-14
     Robert Miner
  Revised 1997-06-29 and 1997-07-02
     Stephen Buswell
  Revised 1997-12-15
     Stephen Buswell
  Revised 1998-02-08
     Stephen Buswell
  Revised 1998-04-04
     Stephen Buswell
  Entities and small revisions 1999-02-21
     David Carlisle
  Added attribute definitionURL to ci and cn 1999-10-11
     Nico Poppelier
  Additions for MathML 2  1999-12-16
     David Carlisle
  Namespace support 2000-01-14
     David Carlisle
  XHTML Compatibility 2000-02-23
     Murray Altheim
  New content elements 2000-03-26
     David Carlisle
  Further revisions for MathML2 CR draft 2000-07-11
     David Carlisle
  Further revisions for MathML2 CR draft 2000-10-31
     David Carlisle
  
-->
<!-- end of MathML 2.0 DTD  ................................................ -->
<!-- ....................................................................... -->
