<?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 the basic constructs of content MathML.
Author: St&#233;phane Dalmas, INRIA.
</xs:documentation>

</xs:annotation>

<!– “apply” –>

<xs:attributeGroup name=“apply.attlist”>

<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<xs:group name=“apply.content”>

<xs:sequence>
   <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“apply.type”>

<xs:group ref="apply.content"  minOccurs="0" maxOccurs="unbounded"/>
<xs:attributeGroup ref="apply.attlist"/>

</xs:complexType>

<xs:element name=“apply” type=“apply.type”/>

<!– “interval” –>

<xs:attributeGroup name=“interval.attlist”>

<xs:attribute name="closure" default="closed">
  <xs:simpleType>
     <xs:restriction base="xs:string">
        <xs:enumeration value="closed"/>
        <xs:enumeration value="open"/>
        <xs:enumeration value="open-closed"/>
        <xs:enumeration value="closed-open"/>
     </xs:restriction>
  </xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<!– <xs:group name=“interval.content”>

<xs:choice>
  <xs:group ref="Content-expr.class" minOccurs="2" maxOccurs="2"/>
  <xs:element ref="condition"/>
</xs:choice>

</xs:group> –>

<xs:complexType name=“interval.type”> <!– <xs:group ref=“interval.content”/> –>

<xs:group ref="Content-expr.class" maxOccurs="2"/>
<xs:attributeGroup ref="interval.attlist"/>

</xs:complexType>

<xs:element name=“interval” type=“interval.type”/>

<!– “inverse” –>

<xs:attributeGroup name=“inverse.attlist”>

<xs:attributeGroup ref="Definition.attrib"/>
<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<xs:complexType name=“inverse.type”>

<xs:attributeGroup ref="inverse.attlist"/>

</xs:complexType>

<xs:element name=“inverse” type=“inverse.type”/>

<!– “condition” –>

<xs:attributeGroup name=“condition.attlist”>

<xs:attributeGroup ref="Definition.attrib"/>

</xs:attributeGroup>

<xs:group name=“condition.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“condition.type”>

<xs:group ref="condition.content"  minOccurs="1" maxOccurs="unbounded"/>
<xs:attributeGroup ref="condition.attlist"/>

</xs:complexType>

<xs:element name=“condition” type=“condition.type”/>

<!– “declare” –>

<xs:attributeGroup name=“declare.attlist”>

<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="scope" type="xs:string"/>
<xs:attribute name="nargs" type="xs:nonNegativeInteger"/>
<xs:attribute name="occurrence">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="prefix"/>
      <xs:enumeration value="infix"/>
      <xs:enumeration value="function-model"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>
<xs:attributeGroup ref="Definition.attrib"/>

</xs:attributeGroup>

<xs:group name=“declare.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“declare.type”>

<xs:group ref="declare.content"  minOccurs="1" maxOccurs="unbounded"/>
<xs:attributeGroup ref="declare.attlist"/>

</xs:complexType>

<xs:element name=“declare” type=“declare.type”/>

<!– “lambda” –>

<xs:attributeGroup name=“lambda.attlist”>

<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<xs:group name=“lambda.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“lambda.type”>

<xs:group ref="lambda.content"  minOccurs="1" maxOccurs="unbounded"/>
<xs:attributeGroup ref="lambda.attlist"/>

</xs:complexType>

<xs:element name=“lambda” type=“lambda.type”/>

<!– “piecewise” and its inner elements –>

<xs:group name=“otherwise.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“otherwise.type”>

<xs:group ref="otherwise.content"/>
<xs:attributeGroup ref="Common.attrib"/>

</xs:complexType>

<xs:element name=“otherwise” type=“otherwise.type”/>

<xs:group name=“piece.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“piece.type”>

<xs:group ref="piece.content" minOccurs="1" maxOccurs="unbounded"/>

</xs:complexType>

<xs:element name=“piece” type=“piece.type”/>

<xs:attributeGroup name=“piecewise.attlist”>

<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<xs:group name=“piecewise.content”>

<xs:sequence>
  <xs:element ref="piece" minOccurs="0" maxOccurs="unbounded"/>
  <xs:sequence minOccurs="0">
    <xs:element ref="otherwise"/>
    <xs:element ref="piece" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:sequence>

</xs:group>

<xs:complexType name=“piecewise.type”>

<xs:group ref="piecewise.content"/>
<xs:attributeGroup ref="piecewise.attlist"/>

</xs:complexType>

<xs:element name=“piecewise” type=“piecewise.type”/>

<!– “bvar” –>

<xs:attributeGroup name=“bvar.attlist”>

<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<xs:group name=“bvar.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“bvar.type”>

<xs:group ref="bvar.content"  minOccurs="1" maxOccurs="unbounded"/>
<xs:attributeGroup ref="bvar.attlist"/>

</xs:complexType>

<xs:element name=“bvar” type=“bvar.type”/>

<!– “degree” –>

<xs:attributeGroup name=“degree.attlist”>

<xs:attributeGroup ref="Common.attrib"/>

</xs:attributeGroup>

<xs:group name=“degree.content”>

<xs:sequence>
  <xs:group ref="Content-expr.class"/>
</xs:sequence>

</xs:group>

<xs:complexType name=“degree.type”>

<xs:group ref="degree.content"  minOccurs="1" maxOccurs="unbounded"/>
<xs:attributeGroup ref="degree.attlist"/>

</xs:complexType>

<xs:element name=“degree” type=“degree.type”/>

<!– And the group of everything –>

<xs:group name=“Content-constructs.class”>

<xs:choice>
  <xs:element ref="apply"/>
  <xs:element ref="interval"/>
  <xs:element ref="inverse"/>
  <xs:element ref="condition"/>
  <xs:element ref="declare"/>
  <xs:element ref="lambda"/>
  <xs:element ref="piecewise"/>
  <xs:element ref="bvar"/>
  <xs:element ref="degree"/>
</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/.
-->