[Libreoffice-commits] core.git: schema/mathml2

Michael Stahl Michael.Stahl at cib.de
Tue Jun 26 10:20:53 UTC 2018


 schema/mathml2/README                           |    2 
 schema/mathml2/common/common-attribs.xsd        |   41 +++
 schema/mathml2/common/math.xsd                  |  126 +++++++++++
 schema/mathml2/common/xlink-href.xsd            |   20 +
 schema/mathml2/content/arith.xsd                |   90 ++++++++
 schema/mathml2/content/calculus.xsd             |  146 +++++++++++++
 schema/mathml2/content/common-attrib.xsd        |   30 ++
 schema/mathml2/content/constants.xsd            |   83 +++++++
 schema/mathml2/content/constructs.xsd           |  260 ++++++++++++++++++++++++
 schema/mathml2/content/elementary-functions.xsd |  117 ++++++++++
 schema/mathml2/content/functions.xsd            |   73 ++++++
 schema/mathml2/content/linear-algebra.xsd       |  173 +++++++++++++++
 schema/mathml2/content/logic.xsd                |   53 ++++
 schema/mathml2/content/relations.xsd            |   55 +++++
 schema/mathml2/content/semantics.xsd            |   85 +++++++
 schema/mathml2/content/sets.xsd                 |  236 +++++++++++++++++++++
 schema/mathml2/content/statistics.xsd           |  136 ++++++++++++
 schema/mathml2/content/tokens.xsd               |  120 +++++++++++
 schema/mathml2/content/vector-calculus.xsd      |   88 ++++++++
 schema/mathml2/mathml2.xsd                      |   59 +++++
 schema/mathml2/presentation/action.xsd          |   44 ++++
 schema/mathml2/presentation/characters.xsd      |   37 +++
 schema/mathml2/presentation/common-attribs.xsd  |  113 ++++++++++
 schema/mathml2/presentation/common-types.xsd    |  103 +++++++++
 schema/mathml2/presentation/error.xsd           |   40 +++
 schema/mathml2/presentation/layout.xsd          |  195 ++++++++++++++++++
 schema/mathml2/presentation/scripts.xsd         |  186 +++++++++++++++++
 schema/mathml2/presentation/space.xsd           |   52 ++++
 schema/mathml2/presentation/style.xsd           |   69 ++++++
 schema/mathml2/presentation/table.xsd           |  216 +++++++++++++++++++
 schema/mathml2/presentation/tokens.xsd          |  124 +++++++++++
 31 files changed, 3172 insertions(+)

New commits:
commit a09ed7100e07c0416017c06de9e22fa888377d15
Author: Michael Stahl <Michael.Stahl at cib.de>
Date:   Fri Jun 22 18:20:46 2018 +0200

    schema: add MathML2 XSD
    
    These are needed to invoke the ODF validator with custom ODF schemas.
    
    Change-Id: I231b5d8a8573e9ac6171a331362a31aceae08d80
    Reviewed-on: https://gerrit.libreoffice.org/56399
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/schema/mathml2/README b/schema/mathml2/README
new file mode 100644
index 000000000000..6a06be0fa9dd
--- /dev/null
+++ b/schema/mathml2/README
@@ -0,0 +1,2 @@
+Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied from or derived from Mathematical Markup Language (MathML) Version 2.0 https://www.w3.org/TR/MathML2/ https://www.w3.org/Math/XMLSchema/mathml2.tgz
+STATUS: W3C Recommendation
diff --git a/schema/mathml2/common/common-attribs.xsd b/schema/mathml2/common/common-attribs.xsd
new file mode 100644
index 000000000000..33698b8f86d6
--- /dev/null
+++ b/schema/mathml2/common/common-attribs.xsd
@@ -0,0 +1,41 @@
+<?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"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  targetNamespace="http://www.w3.org/1998/Math/MathML"
+  elementFormDefault="qualified"
+>
+
+<xs:annotation>
+  <xs:documentation>
+  This is the common attributes module for MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+
+<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink-href.xsd"/>
+<xs:import/> <!-- import any foreign namespace -->
+
+
+<!-- The type of "class" is from the XHTML modularization with Schema
+     document -->
+<xs:attributeGroup name="Common.attrib">
+  <xs:attribute name="class" type="xs:NMTOKENS"/>
+  <xs:attribute name="style" type="xs:string"/>
+  <xs:attribute name="xref" type="xs:IDREF"/>
+  <xs:attribute name="id" type="xs:ID"/>
+  <xs:attribute ref="xlink:href"/>
+  <!-- allow attributes from foreign namespaces, and don't check them -->
+  <xs:anyAttribute namespace="##other" processContents="skip"/>
+</xs:attributeGroup>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/common/math.xsd b/schema/mathml2/common/math.xsd
new file mode 100644
index 000000000000..51eb51c87d5b
--- /dev/null
+++ b/schema/mathml2/common/math.xsd
@@ -0,0 +1,126 @@
+<?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 defining the "math" element of MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- The four groups that govern a lot of things -->
+
+<!-- currently very lax. Should be tightened from Chapter 5 -->
+
+<xs:group name="Presentation-expr.class">
+  <xs:choice>
+    <xs:group ref="PresExpr.class"/>
+    <xs:group ref="ContExpr.class"/>
+  </xs:choice>
+</xs:group>
+
+<xs:group name="Content-expr.class">
+  <xs:choice>
+    <xs:group ref="ContExpr.class"/>
+    <xs:group ref="PresExpr.class"/>
+  </xs:choice>
+</xs:group>
+
+<xs:group name="PresExpr.class">
+  <xs:choice>
+    <xs:group ref="Presentation-token.class"/>
+    <xs:group ref="Presentation-layout.class"/>
+    <xs:group ref="Presentation-script.class"/>
+    <xs:group ref="Presentation-table.class"/>
+    <xs:element ref="mspace"/>
+    <xs:element ref="maction"/>
+    <xs:element ref="merror"/>
+    <xs:element ref="mstyle"/>
+  </xs:choice>
+</xs:group>
+
+<xs:group name="ContExpr.class">
+  <xs:choice>
+    <xs:group ref="Content-tokens.class"/>
+    <xs:group ref="Content-arith.class"/>
+    <xs:group ref="Content-functions.class"/>
+    <xs:group ref="Content-logic.class"/>
+    <xs:group ref="Content-constants.class"/>
+    <xs:group ref="Content-sets.class"/>
+    <xs:group ref="Content-relations.class"/>
+    <xs:group ref="Content-elementary-functions.class"/>
+    <xs:group ref="Content-calculus.class"/>
+    <xs:group ref="Content-linear-algebra.class"/>
+    <xs:group ref="Content-vector-calculus.class"/>
+    <xs:group ref="Content-statistics.class"/>
+    <xs:group ref="Content-constructs.class"/>
+    <xs:element ref="semantics"/>
+  </xs:choice>
+</xs:group>
+
+<!-- "math" -->
+
+<xs:attributeGroup name="Browser-interface.attrib">
+  <xs:attribute name="baseline" type="xs:string"/>
+  <xs:attribute name="overflow" default="scroll">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:enumeration value="scroll"/>
+        <xs:enumeration value="elide"/>
+        <xs:enumeration value="truncate"/>
+        <xs:enumeration value="scale"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attribute name="altimg" type="xs:anyURI"/>
+  <xs:attribute name="alttext" type="xs:string"/>
+  <xs:attribute name="type" type="xs:string"/>
+  <xs:attribute name="name" type="xs:string"/>
+  <xs:attribute name="height" type="xs:string"/>
+  <xs:attribute name="width" type="xs:string"/>
+</xs:attributeGroup>
+
+<xs:attributeGroup name="math.attlist">
+  <xs:attributeGroup ref="Browser-interface.attrib"/>
+  <xs:attribute name="macros" type="xs:string"/>
+<!-- deprecated
+  <xs:attribute name="mode" type="xs:string"/>
+-->
+  <xs:attribute name="display" default="inline">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:enumeration value="block"/>
+        <xs:enumeration value="inline"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="math.content">
+  <xs:choice>
+    <xs:group ref="PresExpr.class"/>
+    <xs:group ref="ContExpr.class"/>
+  </xs:choice>
+</xs:group>
+
+<xs:complexType name="math.type">
+  <xs:group ref="math.content" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="math.attlist"/>
+</xs:complexType>
+
+<xs:element name="math" type="math.type"/>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/common/xlink-href.xsd b/schema/mathml2/common/xlink-href.xsd
new file mode 100644
index 000000000000..a386bc9fba5e
--- /dev/null
+++ b/schema/mathml2/common/xlink-href.xsd
@@ -0,0 +1,20 @@
+<schema targetNamespace="http://www.w3.org/1999/xlink" 
+        xmlns:xlink="http://www.w3.org/1999/xlink" 
+        xmlns="http://www.w3.org/2001/XMLSchema">
+  <annotation>
+    <documentation xml:lang="en">
+      This schema provides the XLink href attribute for use in the MathML2 
+      schema. Written by Max Froumentin, W3C.
+    </documentation>
+  </annotation>
+
+  <attribute name="href" type="anyURI"/>
+</schema>
+
+     
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/arith.xsd b/schema/mathml2/content/arith.xsd
new file mode 100644
index 000000000000..fdb508f7e4c3
--- /dev/null
+++ b/schema/mathml2/content/arith.xsd
@@ -0,0 +1,90 @@
+<?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 "arithmetic" operators of content
+  MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- a common type for all this -->
+
+<xs:complexType name="Arith.type">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<!-- The elements -->
+
+<xs:element name="abs" type="Arith.type"/>
+<xs:element name="conjugate" type="Arith.type"/>
+<xs:element name="arg" type="Arith.type"/>
+<xs:element name="real" type="Arith.type"/>
+<xs:element name="imaginary" type="Arith.type"/>
+
+<xs:element name="floor" type="Arith.type"/>
+<xs:element name="ceiling" type="Arith.type"/>
+
+<xs:element name="power" type="Arith.type"/>
+<xs:element name="root" type="Arith.type"/>
+
+<xs:element name="minus" type="Arith.type"/>
+<xs:element name="plus" type="Arith.type"/>
+<xs:element name="sum" type="Arith.type"/>
+<xs:element name="times" type="Arith.type"/>
+<xs:element name="product" type="Arith.type"/>
+
+<xs:element name="max" type="Arith.type"/>
+<xs:element name="min" type="Arith.type"/>
+
+<xs:element name="factorial" type="Arith.type"/>
+<xs:element name="quotient" type="Arith.type"/>
+<xs:element name="divide" type="Arith.type"/>
+<xs:element name="rem" type="Arith.type"/>
+<xs:element name="gcd" type="Arith.type"/>
+<xs:element name="lcm" type="Arith.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-arith.class">
+  <xs:choice>
+    <xs:element ref="abs"/>
+    <xs:element ref="conjugate"/>
+    <xs:element ref="factorial"/>
+    <xs:element ref="arg"/>
+    <xs:element ref="real"/>
+    <xs:element ref="imaginary"/>
+    <xs:element ref="floor"/>
+    <xs:element ref="ceiling"/>
+    <xs:element ref="quotient"/>
+    <xs:element ref="divide"/>
+    <xs:element ref="rem"/>
+    <xs:element ref="minus"/>
+    <xs:element ref="plus"/>
+    <xs:element ref="times"/>
+    <xs:element ref="power"/>
+    <xs:element ref="root"/>
+    <xs:element ref="max"/>
+    <xs:element ref="min"/>
+    <xs:element ref="gcd"/>
+    <xs:element ref="lcm"/>
+    <xs:element ref="sum"/>
+    <xs:element ref="product"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/calculus.xsd b/schema/mathml2/content/calculus.xsd
new file mode 100644
index 000000000000..1b8fdb0e0305
--- /dev/null
+++ b/schema/mathml2/content/calculus.xsd
@@ -0,0 +1,146 @@
+<?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 calculs operators of content
+  MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "int" -->
+
+<xs:attributeGroup name="int.attlist">  
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="int.type">
+  <xs:attributeGroup ref="int.attlist"/>
+</xs:complexType>
+
+<xs:element name="int" type="int.type"/>
+
+<!-- "diff" -->
+
+<xs:attributeGroup name="diff.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="diff.type">
+  <xs:attributeGroup ref="diff.attlist"/>
+</xs:complexType>
+
+<xs:element name="diff" type="diff.type"/>
+
+<!-- "partialdiff" -->
+
+<xs:attributeGroup name="partialdiff.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="partialdiff.type">
+  <xs:attributeGroup ref="partialdiff.attlist"/>
+</xs:complexType>
+
+<xs:element name="partialdiff" type="partialdiff.type"/>
+
+<!-- "limit" -->
+
+<xs:attributeGroup name="limit.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+
+<xs:complexType name="limit.type">
+  <xs:attributeGroup ref="limit.attlist"/>
+</xs:complexType>
+
+<xs:element name="limit" type="limit.type"/>
+
+<!-- "lowlimit" -->
+
+<xs:attributeGroup name="lowlimit.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="lowlimit.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="lowlimit.type">
+  <xs:group ref="lowlimit.content"  minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="lowlimit.attlist"/>
+</xs:complexType>
+
+<xs:element name="lowlimit" type="lowlimit.type"/>
+
+<!-- "uplimit" -->
+
+<xs:attributeGroup name="uplimit.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="uplimit.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="uplimit.type">
+  <xs:group ref="uplimit.content"  minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="uplimit.attlist"/>
+</xs:complexType>
+
+<xs:element name="uplimit" type="uplimit.type"/>
+
+<!-- "tendsto" -->
+
+<xs:attributeGroup name="tendsto.attlist">
+  <xs:attribute name="type" type="xs:string"/>
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+
+<xs:complexType name="tendsto.type">
+  <xs:attributeGroup ref="tendsto.attlist"/>
+</xs:complexType>
+
+<xs:element name="tendsto" type="tendsto.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-calculus.class">
+  <xs:choice>
+    <xs:element ref="int"/>
+    <xs:element ref="diff"/>
+    <xs:element ref="partialdiff"/>
+    <xs:element ref="limit"/>
+    <xs:element ref="lowlimit"/>
+    <xs:element ref="uplimit"/>
+    <xs:element ref="tendsto"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/common-attrib.xsd b/schema/mathml2/content/common-attrib.xsd
new file mode 100644
index 000000000000..b0d599f4a36c
--- /dev/null
+++ b/schema/mathml2/content/common-attrib.xsd
@@ -0,0 +1,30 @@
+<?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 the XML schema module defining common attributes for the
+  content part of MathML.
+  Authors: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<xs:attributeGroup name="Definition.attrib">
+  <xs:attribute name="encoding" type="xs:string"/>
+  <xs:attribute name="definitionURL" type="xs:anyURI"/>
+</xs:attributeGroup>
+
+</xs:schema>
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/constants.xsd b/schema/mathml2/content/constants.xsd
new file mode 100644
index 000000000000..a22548e26946
--- /dev/null
+++ b/schema/mathml2/content/constants.xsd
@@ -0,0 +1,83 @@
+<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 the XML Schema module for the basic constants of MathML content.
+  Author: Stéphane Dalmas.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- a common type for all this -->
+
+<xs:complexType name="Constant.type">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<!-- Basic sets -->
+
+<xs:element name="naturalnumbers" type="Constant.type"/>
+<xs:element name="primes" type="Constant.type"/>
+<xs:element name="integers" type="Constant.type"/>
+<xs:element name="rationals" type="Constant.type"/>
+<xs:element name="reals" type="Constant.type"/>
+<xs:element name="complexes" type="Constant.type"/>
+
+<!-- Empty set -->
+
+<xs:element name="emptyset" type="Constant.type"/>
+
+<!-- Basic constants -->
+
+<xs:element name="exponentiale" type="Constant.type"/>
+<xs:element name="imaginaryi" type="Constant.type"/>
+<xs:element name="pi" type="Constant.type"/>
+<xs:element name="eulergamma" type="Constant.type"/>
+
+<!-- Boolean constants -->
+
+<xs:element name="true" type="Constant.type"/>
+<xs:element name="false" type="Constant.type"/>
+
+<!-- Infinty -->
+
+<xs:element name="infinity" type="Constant.type"/>
+
+<!-- NotANumber -->
+
+<xs:element name="notanumber" type="Constant.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-constants.class">
+  <xs:choice>
+    <xs:element ref="naturalnumbers"/>
+    <xs:element ref="primes"/>
+    <xs:element ref="integers"/>
+    <xs:element ref="rationals"/>
+    <xs:element ref="reals"/>
+    <xs:element ref="complexes"/>
+    <xs:element ref="emptyset"/>
+    <xs:element ref="exponentiale"/>
+    <xs:element ref="imaginaryi"/>
+    <xs:element ref="pi"/>
+    <xs:element ref="eulergamma"/>
+    <xs:element ref="true"/>
+    <xs:element ref="false"/>
+    <xs:element ref="infinity"/>
+    <xs:element ref="notanumber"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/constructs.xsd b/schema/mathml2/content/constructs.xsd
new file mode 100644
index 000000000000..4cfc21af8a3d
--- /dev/null
+++ b/schema/mathml2/content/constructs.xsd
@@ -0,0 +1,260 @@
+<?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é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 û 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/.
+  -->
diff --git a/schema/mathml2/content/elementary-functions.xsd b/schema/mathml2/content/elementary-functions.xsd
new file mode 100644
index 000000000000..b106f0d170b1
--- /dev/null
+++ b/schema/mathml2/content/elementary-functions.xsd
@@ -0,0 +1,117 @@
+<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 elementary functions in content
+  MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- a common type for all this -->
+
+<xs:complexType name="Elementary-functions.type">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<!-- Exp and logs -->
+
+<xs:element name="exp" type="Elementary-functions.type"/>
+<xs:element name="ln" type="Elementary-functions.type"/>
+<xs:element name="log" type="Elementary-functions.type"/>
+
+<!-- special element of the base of logarithms -->
+
+<xs:group name="logbase.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="logbase.type">
+  <xs:group ref="logbase.content"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<xs:element name="logbase" type="logbase.type"/>
+
+<!-- Trigonometric functions -->
+
+<xs:element name="sin" type="Elementary-functions.type"/>
+<xs:element name="cos" type="Elementary-functions.type"/>
+<xs:element name="tan" type="Elementary-functions.type"/>
+<xs:element name="sec" type="Elementary-functions.type"/>
+<xs:element name="csc" type="Elementary-functions.type"/>
+<xs:element name="cot" type="Elementary-functions.type"/>
+
+<xs:element name="arcsin" type="Elementary-functions.type"/>
+<xs:element name="arccos" type="Elementary-functions.type"/>
+<xs:element name="arctan" type="Elementary-functions.type"/>
+<xs:element name="arccot" type="Elementary-functions.type"/>
+<xs:element name="arccsc" type="Elementary-functions.type"/>
+<xs:element name="arcsec" type="Elementary-functions.type"/>
+
+<!-- Hyperbolic trigonometric functions -->
+
+<xs:element name="sinh" type="Elementary-functions.type"/>
+<xs:element name="cosh" type="Elementary-functions.type"/>
+<xs:element name="tanh" type="Elementary-functions.type"/>
+<xs:element name="sech" type="Elementary-functions.type"/>
+<xs:element name="csch" type="Elementary-functions.type"/>
+<xs:element name="coth" type="Elementary-functions.type"/>
+<xs:element name="arccosh" type="Elementary-functions.type"/>
+<xs:element name="arccoth" type="Elementary-functions.type"/>
+<xs:element name="arccsch" type="Elementary-functions.type"/>
+<xs:element name="arcsech" type="Elementary-functions.type"/>
+<xs:element name="arcsinh" type="Elementary-functions.type"/>
+<xs:element name="arctanh" type="Elementary-functions.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-elementary-functions.class">
+  <xs:choice>
+    <xs:element ref="exp"/>
+    <xs:element ref="ln"/>
+    <xs:element ref="log"/>
+    <xs:element ref="logbase"/>
+    <xs:element ref="sin"/>
+    <xs:element ref="cos"/>
+    <xs:element ref="tan"/>
+    <xs:element ref="sec"/>
+    <xs:element ref="csc"/>
+    <xs:element ref="cot"/>
+    <xs:element ref="arcsin"/>
+    <xs:element ref="arccos"/>
+    <xs:element ref="arctan"/>
+    <xs:element ref="arcsec"/>
+    <xs:element ref="arccsc"/>
+    <xs:element ref="arccot"/>
+    <xs:element ref="sinh"/>
+    <xs:element ref="cosh"/>
+    <xs:element ref="tanh"/>
+    <xs:element ref="sech"/>
+    <xs:element ref="csch"/>
+    <xs:element ref="coth"/>
+    <xs:element ref="arccosh"/>
+    <xs:element ref="arccoth"/>
+    <xs:element ref="arccsch"/>
+    <xs:element ref="arcsech"/>
+    <xs:element ref="arcsinh"/>
+    <xs:element ref="arctanh"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/functions.xsd b/schema/mathml2/content/functions.xsd
new file mode 100644
index 000000000000..11a5768dcc2a
--- /dev/null
+++ b/schema/mathml2/content/functions.xsd
@@ -0,0 +1,73 @@
+<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 operators dealing with functions in content
+  MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- a common type for all this -->
+
+<xs:complexType name="Functions.type">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<!-- "compose" -->
+
+<xs:element name="compose" type="Functions.type"/>
+
+<!-- Domain, codomain and image -->
+
+<xs:element name="domain" type="Functions.type"/>
+<xs:element name="codomain" type="Functions.type"/>
+<xs:element name="image" type="Functions.type"/>
+
+<!-- "domainofapplication" -->
+
+<xs:group name="domainofapplication.content">
+  <xs:sequence>
+     <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="domainofapplication.type">
+  <xs:group ref="domainofapplication.content"/>
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<xs:element name="domainofapplication" type="domainofapplication.type"/>
+
+<!-- identity -->
+
+<xs:element name="ident" type="Functions.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-functions.class">
+  <xs:choice>
+    <xs:element ref="compose"/>
+    <xs:element ref="domain"/>
+    <xs:element ref="codomain"/>
+    <xs:element ref="image"/>
+    <xs:element ref="domainofapplication"/>
+    <xs:element ref="ident"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/linear-algebra.xsd b/schema/mathml2/content/linear-algebra.xsd
new file mode 100644
index 000000000000..eb62bcb6f218
--- /dev/null
+++ b/schema/mathml2/content/linear-algebra.xsd
@@ -0,0 +1,173 @@
+<?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 linear algebra part of content MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "vector" -->
+
+<xs:attributeGroup name="vector.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="vector.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="vector.type">
+  <xs:group ref="vector.content" minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="vector.attlist"/>
+</xs:complexType>
+
+<xs:element name="vector" type="vector.type"/>
+
+<!-- "matrix" -->
+
+<xs:attributeGroup name="matrix.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="matrix.content">
+  <xs:sequence>
+    <xs:element ref="matrixrow"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="matrix.type">
+  <xs:group ref="matrix.content"  minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="matrix.attlist"/>
+</xs:complexType>
+
+<xs:element name="matrix" type="matrix.type"/>
+
+<!-- "matrixrow" -->
+
+<xs:attributeGroup name="matrixrow.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="matrixrow.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="matrixrow.type">
+  <xs:group ref="matrixrow.content"  minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="matrixrow.attlist"/>
+</xs:complexType>
+
+<xs:element name="matrixrow" type="matrixrow.type"/>
+
+<!-- "determinant" -->
+
+<xs:attributeGroup name="determinant.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="determinant.type">
+  <xs:attributeGroup ref="determinant.attlist"/>
+</xs:complexType>
+
+<xs:element name="determinant" type="determinant.type"/>
+
+<!-- "transpose" -->
+
+<xs:attributeGroup name="transpose.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="transpose.type">
+  <xs:attributeGroup ref="transpose.attlist"/>
+</xs:complexType>
+
+<xs:element name="transpose" type="transpose.type"/>
+
+<!-- "selector" -->
+
+<xs:attributeGroup name="selector.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="selector.type">
+  <xs:attributeGroup ref="selector.attlist"/>
+</xs:complexType>
+
+<xs:element name="selector" type="selector.type"/>
+
+<!-- "vectorproduct" -->
+
+<xs:attributeGroup name="vectorproduct.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="vectorproduct.type">
+  <xs:attributeGroup ref="vectorproduct.attlist"/>
+</xs:complexType>
+
+<xs:element name="vectorproduct" type="vectorproduct.type"/>
+
+<!-- "scalarproduct" -->
+
+<xs:attributeGroup name="scalarproduct.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="scalarproduct.type">
+  <xs:attributeGroup ref="scalarproduct.attlist"/>
+</xs:complexType>
+
+<xs:element name="scalarproduct" type="scalarproduct.type"/>
+
+<!-- "outerproduct" -->
+
+<xs:attributeGroup name="outerproduct.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="outerproduct.type">
+  <xs:attributeGroup ref="outerproduct.attlist"/>
+</xs:complexType>
+
+<xs:element name="outerproduct" type="outerproduct.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-linear-algebra.class">
+  <xs:choice>
+     <xs:element ref="vector"/>
+     <xs:element ref="matrix"/>
+     <xs:element ref="determinant"/>
+     <xs:element ref="transpose"/>
+     <xs:element ref="selector"/>
+     <xs:element ref="vectorproduct"/>
+     <xs:element ref="scalarproduct"/>
+     <xs:element ref="outerproduct"/>
+  </xs:choice>
+</xs:group>
+</xs:schema>
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/logic.xsd b/schema/mathml2/content/logic.xsd
new file mode 100644
index 000000000000..6dac2abe4a31
--- /dev/null
+++ b/schema/mathml2/content/logic.xsd
@@ -0,0 +1,53 @@
+<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 logic operators of content MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- a common type for all this -->
+
+<xs:complexType name="Logic.type">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<xs:element name="and" type="Elementary-functions.type"/>
+<xs:element name="or" type="Logic.type"/>
+<xs:element name="xor" type="Logic.type"/>
+
+<xs:element name="not" type="Logic.type"/>
+
+<xs:element name="exists" type="Logic.type"/>
+<xs:element name="forall" type="Logic.type"/>
+
+<xs:element name="implies" type="Logic.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-logic.class">
+  <xs:choice>
+    <xs:element ref="and"/>
+    <xs:element ref="or"/>
+    <xs:element ref="xor"/>
+    <xs:element ref="not"/>
+    <xs:element ref="exists"/>
+    <xs:element ref="forall"/>
+    <xs:element ref="implies"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/relations.xsd b/schema/mathml2/content/relations.xsd
new file mode 100644
index 000000000000..87496e5c3a66
--- /dev/null
+++ b/schema/mathml2/content/relations.xsd
@@ -0,0 +1,55 @@
+<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 relational operators of content MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- a common type for all this -->
+<xs:complexType name="Relations.type">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:complexType>
+
+<xs:element name="eq" type="Relations.type"/>
+<xs:element name="neq" type="Relations.type"/>
+<xs:element name="leq" type="Relations.type"/>
+<xs:element name="lt" type="Relations.type"/>
+<xs:element name="geq" type="Relations.type"/>
+<xs:element name="gt" type="Relations.type"/>
+
+<xs:element name="equivalent" type="Relations.type"/>
+
+<xs:element name="approx" type="Relations.type"/>
+
+<xs:element name="factorof" type="Relations.type"/>
+
+<!-- And the group of everything -->
+<xs:group name="Content-relations.class">
+  <xs:choice>
+    <xs:element ref="eq"/>
+    <xs:element ref="neq"/>
+    <xs:element ref="leq"/>
+    <xs:element ref="lt"/>
+    <xs:element ref="geq"/>
+    <xs:element ref="gt"/>
+    <xs:element ref="equivalent"/>
+    <xs:element ref="approx"/>
+    <xs:element ref="factorof"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/semantics.xsd b/schema/mathml2/content/semantics.xsd
new file mode 100644
index 000000000000..d337ee76f11c
--- /dev/null
+++ b/schema/mathml2/content/semantics.xsd
@@ -0,0 +1,85 @@
+<?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 "sematics" element of content MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "annotation" -->
+
+<xs:attributeGroup name="annotation.attlist">
+   <xs:attribute name="encoding" type="xs:string"/>
+   <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="annotation.type" mixed="true">
+  <xs:attributeGroup ref="annotation.attlist"/>
+</xs:complexType>
+
+<xs:element name="annotation" type="annotation.type"/>
+
+<!-- "annotation-xml" -->
+
+<xs:attributeGroup name="annotation-xml.attlist">
+   <xs:attribute name="encoding" type="xs:string"/>
+   <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="annotation-xml.content">
+   <xs:sequence>
+     <xs:any processContents="lax"/>    
+   </xs:sequence>
+</xs:group>
+
+<xs:complexType name="annotation-xml.type">
+   <xs:group ref="annotation-xml.content"/>
+   <xs:attributeGroup ref="annotation-xml.attlist"/>
+</xs:complexType>
+
+<xs:element name="annotation-xml" type="annotation-xml.type"/>
+
+<!-- "semantics" -->
+
+<xs:attributeGroup name="semantics.attlist">
+   <xs:attribute name="encoding" type="xs:string"/>
+   <xs:attribute name="definitionURL" type="xs:anyURI"/>
+   <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="Annotation.class">
+  <xs:choice>
+    <xs:element ref="annotation"/>
+    <xs:element ref="annotation-xml"/>
+  </xs:choice>
+</xs:group>
+
+<xs:group name="semantics.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+    <xs:group ref="Annotation.class" minOccurs="1" maxOccurs="unbounded"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="semantics.type">
+  <xs:group ref="semantics.content"  minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="semantics.attlist"/>
+</xs:complexType>
+
+<xs:element name="semantics" type="semantics.type"/>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/sets.xsd b/schema/mathml2/content/sets.xsd
new file mode 100644
index 000000000000..7a7f7f6851dd
--- /dev/null
+++ b/schema/mathml2/content/sets.xsd
@@ -0,0 +1,236 @@
+<?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 part of content MathML dealing with
+  sets and lists.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "set" -->
+
+<!-- "type" could be "multiset" or "normal" or anything else -->
+<xs:attributeGroup name="set.attlist">
+  <xs:attribute name="type" type="xs:string"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="set.content">
+  <xs:sequence>
+     <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="set.type">
+  <xs:group ref="set.content"  minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="set.attlist"/>
+</xs:complexType>
+
+<xs:element name="set" type="set.type"/>
+
+<!-- "list" -->
+
+<xs:attributeGroup name="list.attlist">
+  <xs:attribute name="order">
+    <xs:simpleType>
+       <xs:restriction base="xs:string">
+          <xs:enumeration value="lexicographic"/>
+          <xs:enumeration value="numeric"/>
+       </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="list.content">
+  <xs:sequence>
+     <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="list.type">
+  <xs:group ref="list.content"  minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="list.attlist"/>
+</xs:complexType>
+
+<xs:element name="list" type="list.type"/>
+
+<!-- "union" -->
+
+<xs:attributeGroup name="union.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="union.type">
+  <xs:attributeGroup ref="union.attlist"/>
+</xs:complexType>
+
+<xs:element name="union" type="union.type"/>
+
+<!-- "intersect" -->
+
+<xs:attributeGroup name="intersect.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="intersect.type">
+  <xs:attributeGroup ref="intersect.attlist"/>
+</xs:complexType>
+
+<xs:element name="intersect" type="intersect.type"/>
+
+<!-- "in" -->
+
+<xs:attributeGroup name="in.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="in.type">
+  <xs:attributeGroup ref="in.attlist"/>
+</xs:complexType>
+
+<xs:element name="in" type="in.type"/>
+
+<!-- "notin" -->
+
+<xs:attributeGroup name="notin.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="notin.type">
+  <xs:attributeGroup ref="notin.attlist"/>
+</xs:complexType>
+
+<xs:element name="notin" type="notin.type"/>
+
+<!-- "subset" -->
+
+<xs:attributeGroup name="subset.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="subset.type">
+  <xs:attributeGroup ref="subset.attlist"/>
+</xs:complexType>
+
+<xs:element name="subset" type="subset.type"/>
+
+<!-- "prsubset" -->
+
+<xs:attributeGroup name="prsubset.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="prsubset.type">
+  <xs:attributeGroup ref="prsubset.attlist"/>
+</xs:complexType>
+
+<xs:element name="prsubset" type="prsubset.type"/>
+
+<!-- "notsubset" -->
+
+<xs:attributeGroup name="notsubset.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="notsubset.type">
+  <xs:attributeGroup ref="notsubset.attlist"/>
+</xs:complexType>
+
+<xs:element name="notsubset" type="notsubset.type"/>
+
+<!-- "notprsubset" -->
+
+<xs:attributeGroup name="notprsubset.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="notprsubset.type">
+  <xs:attributeGroup ref="notprsubset.attlist"/>
+</xs:complexType>
+
+<xs:element name="notprsubset" type="notprsubset.type"/>
+
+<!-- "setdiff" -->
+
+<xs:attributeGroup name="setdiff.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="setdiff.type">
+  <xs:attributeGroup ref="setdiff.attlist"/>
+</xs:complexType>
+
+<xs:element name="setdiff" type="setdiff.type"/>
+
+<!-- "card" -->
+
+<xs:attributeGroup name="card.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="card.type">
+  <xs:attributeGroup ref="card.attlist"/>
+</xs:complexType>
+
+<xs:element name="card" type="card.type"/>
+
+<!-- "cartesianproduct" -->
+
+<xs:attributeGroup name="cartesianproduct.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="cartesianproduct.type">
+  <xs:attributeGroup ref="cartesianproduct.attlist"/>
+</xs:complexType>
+
+<xs:element name="cartesianproduct" type="cartesianproduct.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-sets.class">
+  <xs:choice>
+    <xs:element ref="set"/>
+    <xs:element ref="list"/>
+    <xs:element ref="union"/>
+    <xs:element ref="intersect"/>
+    <xs:element ref="in"/>
+    <xs:element ref="notin"/>
+    <xs:element ref="subset"/>
+    <xs:element ref="prsubset"/>
+    <xs:element ref="notsubset"/>
+    <xs:element ref="notprsubset"/>
+    <xs:element ref="setdiff"/>
+    <xs:element ref="card"/>
+    <xs:element ref="cartesianproduct"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/statistics.xsd b/schema/mathml2/content/statistics.xsd
new file mode 100644
index 000000000000..cf0f20e329fb
--- /dev/null
+++ b/schema/mathml2/content/statistics.xsd
@@ -0,0 +1,136 @@
+<?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 statistical operators of content MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "mean" -->
+
+<xs:attributeGroup name="mean.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mean.type">
+  <xs:attributeGroup ref="mean.attlist"/>
+</xs:complexType>
+
+<xs:element name="mean" type="mean.type"/>
+
+<!-- "sdev" -->
+
+<xs:attributeGroup name="sdev.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="sdev.type">
+  <xs:attributeGroup ref="sdev.attlist"/>
+</xs:complexType>
+
+<xs:element name="sdev" type="sdev.type"/>
+
+<!-- "variance" -->
+
+<xs:attributeGroup name="variance.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="variance.type">
+  <xs:attributeGroup ref="variance.attlist"/>
+</xs:complexType>
+
+<xs:element name="variance" type="variance.type"/>
+
+<!-- "median" -->
+
+<xs:attributeGroup name="median.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="median.type">
+  <xs:attributeGroup ref="median.attlist"/>
+</xs:complexType>
+
+<xs:element name="median" type="median.type"/>
+
+<!-- "mode" -->
+
+<xs:attributeGroup name="mode.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mode.type">
+  <xs:attributeGroup ref="mode.attlist"/>
+</xs:complexType>
+
+<xs:element name="mode" type="mode.type"/>
+
+<!-- "moment" -->
+
+<xs:attributeGroup name="moment.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="moment.type">
+  <xs:attributeGroup ref="moment.attlist"/>
+</xs:complexType>
+
+<xs:element name="moment" type="moment.type"/>
+
+<!-- "momentabout" -->
+
+<xs:attributeGroup name="momentabout.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="momentabout.content">
+  <xs:sequence>
+    <xs:group ref="Content-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="momentabout.type">
+  <xs:group ref="momentabout.content"  minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="momentabout.attlist"/>
+</xs:complexType>
+
+<xs:element name="momentabout" type="momentabout.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-statistics.class">
+  <xs:choice>
+    <xs:element ref="mean"/>
+    <xs:element ref="sdev"/>
+    <xs:element ref="variance"/>
+    <xs:element ref="median"/>
+    <xs:element ref="mode"/>
+    <xs:element ref="moment"/>
+    <xs:element ref="momentabout"/>
+  </xs:choice>
+</xs:group>
+
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/tokens.xsd b/schema/mathml2/content/tokens.xsd
new file mode 100644
index 000000000000..7e7f9b81d4dc
--- /dev/null
+++ b/schema/mathml2/content/tokens.xsd
@@ -0,0 +1,120 @@
+<?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 the XML schema module for the token elements of the 
+  content part of MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- common content for the token elements -->
+
+<xs:group name="Content-token.content">
+  <xs:sequence>
+    <xs:group ref="Presentation-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<!-- "cn" -->
+
+<xs:attributeGroup name="cn.attlist">
+  <xs:attribute name="base">
+    <xs:simpleType>
+      <xs:restriction base="xs:positiveInteger">
+         <xs:minInclusive value="2"/>
+         <xs:maxInclusive value="36"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>  
+  <xs:attribute name="type">
+    <xs:simpleType>
+      <xs:restriction base="xs:NMTOKEN">
+        <xs:enumeration value="e-notation"/>
+        <xs:enumeration value="integer"/>
+        <xs:enumeration value="rational"/>
+        <xs:enumeration value="real"/>
+        <xs:enumeration value="complex-cartesian"/>
+        <xs:enumeration value="complex-polar"/>
+        <xs:enumeration value="constant"/>
+      </xs:restriction>
+     </xs:simpleType>
+  </xs:attribute>
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<!-- the content of "cn" may have <sep> elements in it -->
+
+<xs:complexType name="sep.type">
+</xs:complexType>
+
+<xs:element name="sep" type="sep.type"/>
+
+<xs:group name="cn.content">
+  <xs:choice>
+    <xs:group ref="Presentation-expr.class"/>
+    <xs:element ref="sep"/>
+  </xs:choice>
+</xs:group>
+
+<xs:complexType name="cn.type" mixed="true">
+  <xs:group ref="cn.content" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="cn.attlist"/>
+</xs:complexType>
+
+<xs:element name="cn" type="cn.type"/>
+
+<!-- "ci" -->
+
+<xs:attributeGroup name="ci.attlist">
+  <xs:attribute name="type" type="xs:string"/>
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="ci.type" mixed="true">
+  <xs:group ref="Content-token.content" minOccurs="0"/>
+  <xs:attributeGroup ref="ci.attlist"/>
+</xs:complexType>
+
+<xs:element name="ci" type="ci.type"/>
+
+<!-- "csymbol" -->
+
+<xs:attributeGroup name="csymbol.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="csymbol.type" mixed="true">
+  <xs:group ref="Content-token.content" minOccurs="0"/>
+  <xs:attributeGroup ref="csymbol.attlist"/>
+</xs:complexType>
+
+<xs:element name="csymbol" type="csymbol.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-tokens.class">
+  <xs:choice>
+    <xs:element ref="cn"/>
+    <xs:element ref="ci"/>
+    <xs:element ref="csymbol"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/content/vector-calculus.xsd b/schema/mathml2/content/vector-calculus.xsd
new file mode 100644
index 000000000000..3e5dd9ce2244
--- /dev/null
+++ b/schema/mathml2/content/vector-calculus.xsd
@@ -0,0 +1,88 @@
+<?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 vector calculs operators of content
+  MathML. 
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "divergence" -->
+
+<xs:attributeGroup name="divergence.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="divergence.type">
+  <xs:attributeGroup ref="divergence.attlist"/>
+</xs:complexType>
+
+<xs:element name="divergence" type="divergence.type"/>
+
+<!-- "grad" -->
+
+<xs:attributeGroup name="grad.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="grad.type">
+  <xs:attributeGroup ref="grad.attlist"/>
+</xs:complexType>
+
+<xs:element name="grad" type="grad.type"/>
+
+<!-- "curl" -->
+
+<xs:attributeGroup name="curl.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="curl.type">
+  <xs:attributeGroup ref="curl.attlist"/>
+</xs:complexType>
+
+<xs:element name="curl" type="curl.type"/>
+
+<!-- "laplacian" -->
+
+<xs:attributeGroup name="laplacian.attlist">
+  <xs:attributeGroup ref="Definition.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="laplacian.type">
+  <xs:attributeGroup ref="laplacian.attlist"/>
+</xs:complexType>
+
+<xs:element name="laplacian" type="laplacian.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Content-vector-calculus.class">
+  <xs:choice>
+    <xs:element ref="divergence"/>
+    <xs:element ref="grad"/>
+    <xs:element ref="curl"/>
+    <xs:element ref="laplacian"/>
+  </xs:choice>
+</xs:group>
+
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/mathml2.xsd b/schema/mathml2/mathml2.xsd
new file mode 100644
index 000000000000..2bd76bfb67d4
--- /dev/null
+++ b/schema/mathml2/mathml2.xsd
@@ -0,0 +1,59 @@
+<?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 for MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- common stuff -->
+
+<xs:include schemaLocation="common/math.xsd"/>
+<xs:include schemaLocation="common/common-attribs.xsd"/>
+
+<!-- Presentation -->
+<xs:include schemaLocation="presentation/common-types.xsd"/>
+<xs:include schemaLocation="presentation/common-attribs.xsd"/>
+<xs:include schemaLocation="presentation/characters.xsd"/>
+<xs:include schemaLocation="presentation/tokens.xsd"/>
+<xs:include schemaLocation="presentation/scripts.xsd"/>
+<xs:include schemaLocation="presentation/space.xsd"/>
+<xs:include schemaLocation="presentation/layout.xsd"/>
+<xs:include schemaLocation="presentation/table.xsd"/>
+<xs:include schemaLocation="presentation/style.xsd"/>
+<xs:include schemaLocation="presentation/error.xsd"/>
+<xs:include schemaLocation="presentation/action.xsd"/>
+
+<!-- Content -->
+
+<xs:include schemaLocation="content/common-attrib.xsd"/>
+<xs:include schemaLocation="content/tokens.xsd"/>
+<xs:include schemaLocation="content/arith.xsd"/>
+<xs:include schemaLocation="content/functions.xsd"/>
+<xs:include schemaLocation="content/logic.xsd"/>
+<xs:include schemaLocation="content/constructs.xsd"/>
+<xs:include schemaLocation="content/constants.xsd"/>
+<xs:include schemaLocation="content/elementary-functions.xsd"/>
+<xs:include schemaLocation="content/relations.xsd"/>
+<xs:include schemaLocation="content/semantics.xsd"/>
+<xs:include schemaLocation="content/sets.xsd"/>
+<xs:include schemaLocation="content/linear-algebra.xsd"/>
+<xs:include schemaLocation="content/calculus.xsd"/>
+<xs:include schemaLocation="content/vector-calculus.xsd"/>
+<xs:include schemaLocation="content/statistics.xsd"/>
+
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/action.xsd b/schema/mathml2/presentation/action.xsd
new file mode 100644
index 000000000000..9633698509c4
--- /dev/null
+++ b/schema/mathml2/presentation/action.xsd
@@ -0,0 +1,44 @@
+<?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 the XML Schema module for the MathML "maction" element.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<xs:attributeGroup name="maction.attlist">
+  <xs:attribute name="actiontype" type="xs:string" use="required"/>
+  <xs:attribute name="selection"  type="xs:positiveInteger" default="1"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="maction.content">
+  <xs:sequence>
+    <xs:group ref="Presentation-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="maction.type">
+  <xs:group ref="maction.content" minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="maction.attlist"/>
+</xs:complexType>
+
+<xs:element name="maction" type="maction.type"/>
+
+</xs:schema>
+
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/characters.xsd b/schema/mathml2/presentation/characters.xsd
new file mode 100644
index 000000000000..32b4d3f78cdd
--- /dev/null
+++ b/schema/mathml2/presentation/characters.xsd
@@ -0,0 +1,37 @@
+<?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 the XML Schema module for the MathML "mglyph" element.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<xs:attributeGroup name="mglyph.attlist">
+  <xs:attribute name="alt" type="xs:string"/>
+  <xs:attribute name="fontfamily" type="xs:string"/>
+  <xs:attribute name="index" type="xs:positiveInteger"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mglyph.type">
+  <xs:attributeGroup ref="mglyph.attlist"/>
+</xs:complexType>
+
+<xs:element name="mglyph" type="mglyph.type"/>
+
+</xs:schema>
+
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/common-attribs.xsd b/schema/mathml2/presentation/common-attribs.xsd
new file mode 100644
index 000000000000..2dff7e33a0e1
--- /dev/null
+++ b/schema/mathml2/presentation/common-attribs.xsd
@@ -0,0 +1,113 @@
+<?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 schema module defines sets of attributes common to several elements
+  of presentation MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- The mathematics style attributes. These attributes are valid on all
+     presentation token elements except "mspace" and "mglyph", and on no
+     other elements except "mstyle". -->
+
+<xs:attributeGroup name="Token-style.attrib">
+   <xs:attribute name="mathvariant">
+     <xs:simpleType>
+       <xs:restriction base="xs:string">
+           <xs:enumeration value="normal"/>
+           <xs:enumeration value="bold"/>
+           <xs:enumeration value="italic"/>
+           <xs:enumeration value="bold-italic"/>
+           <xs:enumeration value="double-struck"/>
+           <xs:enumeration value="bold-fraktur"/>
+           <xs:enumeration value="script"/>
+           <xs:enumeration value="bold-script"/>
+           <xs:enumeration value="fraktur"/>
+           <xs:enumeration value="sans-serif"/>
+           <xs:enumeration value="bold-sans-serif"/>
+           <xs:enumeration value="sans-serif-italic"/>
+           <xs:enumeration value="sans-serif-bold-italic"/>
+           <xs:enumeration value="monospace"/>
+       </xs:restriction>
+     </xs:simpleType>
+   </xs:attribute>
+   <xs:attribute name="mathsize">
+     <xs:simpleType>
+       <xs:union memberTypes="simple-size length-with-unit"/>
+     </xs:simpleType>
+   </xs:attribute>
+   <!-- For both of the following attributes the types should be
+        more restricted -->
+   <xs:attribute name="mathcolor" type="xs:string"/>
+   <xs:attribute name="mathbackground" type="xs:string"/>
+</xs:attributeGroup>
+
+<!-- These operators are all related to operators. They are valid on "mo" 
+     and "mstyle". -->
+
+<xs:attributeGroup name="Operator.attrib">
+   <!-- this attribute value is normally inferred from the position of
+    the operator in its "<mrow"> -->
+   <xs:attribute name="form">
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="prefix"/>
+          <xs:enumeration value="infix"/>
+          <xs:enumeration value="postfix"/>
+        </xs:restriction>
+      </xs:simpleType>
+   </xs:attribute>
+   <!-- set by dictionnary, else it is "thickmathspace" -->
+   <xs:attribute name="lspace">
+      <xs:simpleType>
+         <xs:union memberTypes="length-with-unit named-space"/>
+      </xs:simpleType>
+   </xs:attribute>    
+   <!-- set by dictionnary, else it is "thickmathspace" -->
+   <xs:attribute name="rspace">
+      <xs:simpleType>
+         <xs:union memberTypes="length-with-unit named-space"/>
+      </xs:simpleType>
+   </xs:attribute>
+   <!-- set by dictionnary, else it is "false" -->
+   <xs:attribute name="fence" type="xs:boolean"/>
+   <!-- set by dictionnary, else it is "false" -->
+   <xs:attribute name="separator" type="xs:boolean"/>
+   <!-- set by dictionnary, else it is "false" -->
+   <xs:attribute name="stretchy" type="xs:boolean"/>
+   <!-- set by dictionnary, else it is "true" -->
+   <xs:attribute name="symmetric" type="xs:boolean"/>
+   <!-- set by dictionnary, else it is "false" -->
+   <xs:attribute name="movablelimits" type="xs:boolean"/>
+   <!-- set by dictionnary, else it is "false" -->
+   <xs:attribute name="accent" type="xs:boolean"/>
+   <!-- set by dictionnary, else it is "false" -->
+   <xs:attribute name="largeop" type="xs:boolean"/>
+   <xs:attribute name="minsize">
+      <xs:simpleType>
+         <xs:union memberTypes="length-with-unit named-space"/>
+      </xs:simpleType>
+   </xs:attribute>
+   <xs:attribute name="maxsize">
+      <xs:simpleType>
+         <xs:union memberTypes="length-with-unit named-space infinity xs:float"/>
+      </xs:simpleType>
+   </xs:attribute>
+</xs:attributeGroup>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/common-types.xsd b/schema/mathml2/presentation/common-types.xsd
new file mode 100644
index 000000000000..a44c3bfc8cb5
--- /dev/null
+++ b/schema/mathml2/presentation/common-types.xsd
@@ -0,0 +1,103 @@
+<?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 containing some type definitions for MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- Simple sizes -->
+
+<xs:simpleType name="simple-size">
+  <xs:restriction base="xs:string">
+    <xs:enumeration value="small"/>
+    <xs:enumeration value="normal"/>
+    <xs:enumeration value="big"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<!-- Centering values -->
+
+<xs:simpleType name="centering">
+  <xs:restriction base="xs:string">
+    <xs:enumeration value="left"/>
+    <xs:enumeration value="center"/>
+    <xs:enumeration value="right"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<!-- The named spaces -->
+
+<!-- this is also used in the value of the "width" attribute on the
+     "mpadded" element -->
+<xs:simpleType name="named-space">
+   <xs:restriction base="xs:string">
+     <xs:enumeration value="veryverythinmathspace"/>
+     <xs:enumeration value="verythinmathspace"/>
+     <xs:enumeration value="thinmathspace"/>
+     <xs:enumeration value="mediummathspace"/>
+     <xs:enumeration value="thickmathspace"/>
+     <xs:enumeration value="verythickmathspace"/>
+     <xs:enumeration value="veryverythickmathspace"/>
+   </xs:restriction>
+</xs:simpleType>
+
+<!-- Thickness -->
+
+<xs:simpleType name="thickness">
+  <xs:restriction base="xs:string">
+    <xs:enumeration value="thin"/>
+    <xs:enumeration value="medium"/>
+    <xs:enumeration value="thick"/>
+  </xs:restriction>
+</xs:simpleType>
+
+
+<!-- number with units used to specified lengths -->
+
+<xs:simpleType name="length-with-unit">
+  <xs:restriction base="xs:string">
+    <xs:pattern 
+     value="(-?([0-9]+|[0-9]*\.[0-9]+)*(em|ex|px|in|cm|mm|pt|pc|%))|0"/>
+   </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="length-with-optional-unit">
+  <xs:restriction base="xs:string">
+    <xs:pattern 
+      value="-?([0-9]+|[0-9]*\.[0-9]+)*(em|ex|px|in|cm|mm|pt|pc|%)?"/>
+   </xs:restriction>
+</xs:simpleType>
+
+<!-- This is just "infinity" that can be used as a length -->
+
+<xs:simpleType name="infinity">
+  <xs:restriction base="xs:string">
+    <xs:enumeration value="infinity"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<!-- colors defined as RGB -->
+
+<xs:simpleType name="RGB-color">
+  <xs:restriction base="xs:string">
+    <xs:pattern value="#(([0-9]|[a-f]){3}|([0-9]|[a-f]){6})"/>
+  </xs:restriction>
+</xs:simpleType>
+
+</xs:schema>
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/error.xsd b/schema/mathml2/presentation/error.xsd
new file mode 100644
index 000000000000..01b5b960069e
--- /dev/null
+++ b/schema/mathml2/presentation/error.xsd
@@ -0,0 +1,40 @@
+<?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 the XML Schema module for the MathML "merror" element.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<xs:attributeGroup name="merror.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="merror.content">
+  <xs:sequence>
+    <xs:group ref="Presentation-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="merror.type">
+  <xs:group ref="merror.content" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="merror.attlist"/>
+</xs:complexType>
+
+<xs:element name="merror" type="merror.type"/>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/layout.xsd b/schema/mathml2/presentation/layout.xsd
new file mode 100644
index 000000000000..80b005efd7e9
--- /dev/null
+++ b/schema/mathml2/presentation/layout.xsd
@@ -0,0 +1,195 @@
+<?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 the XML schema module for the layout elements of the 
+  presentation part of MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "mrow" -->
+
+<xs:attributeGroup name="mrow.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mrow.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="mrow.attlist"/>
+</xs:complexType>
+
+<xs:element name="mrow" type="mrow.type"/>
+
+<!-- "mfrac" -->
+
+<xs:attributeGroup name="mfrac.attlist">
+  <xs:attribute name="bevelled" type="xs:boolean"/>
+  <xs:attribute name="denomalign" type="centering" default="center"/>
+  <xs:attribute name="numalign" type="centering" default="center"/>
+  <xs:attribute name="linethickness" default="1">
+    <xs:simpleType>
+      <xs:union memberTypes="length-with-optional-unit thickness"/>
+    </xs:simpleType> 
+  </xs:attribute>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mfrac.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="2" maxOccurs="2"/>
+  <xs:attributeGroup ref="mfrac.attlist"/>
+</xs:complexType>
+
+<xs:element name="mfrac" type="mfrac.type"/>
+
+<!-- "msqrt" -->
+
+<xs:attributeGroup name="msqrt.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<!-- "msqrt" has an "inferred mrow" if more than one argument -->
+<xs:complexType name="msqrt.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="msqrt.attlist"/>  
+</xs:complexType>
+
+<xs:element name="msqrt" type="msqrt.type"/>
+
+<!-- "mroot" -->
+
+<xs:attributeGroup name="mroot.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mroot.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="2" maxOccurs="2"/>
+  <xs:attributeGroup ref="mroot.attlist"/>
+</xs:complexType>
+
+<xs:element name="mroot" type="mroot.type"/>
+
+<!-- "mpadded" -->
+
+<xs:simpleType name="mpadded-space">
+  <xs:restriction base="xs:string">
+    <xs:pattern
+value="(\+|-)?([0-9]+|[0-9]*\.[0-9]+)(((%?) *(width|lspace|height|depth))|(em|ex|px|in|cm|mm|pt|pc))"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="mpadded-width-space">
+  <xs:restriction base="xs:string">
+    <!-- MaxF: definition from spec seems wrong, fixing to ([+|-] unsigned-number (%[pseudo-unit]|pseudo-unit|h-unit)) | namedspace | 0 -->
+    <xs:pattern value="((\+|-)?([0-9]+|[0-9]*\.[0-9]+)(((%?) *(width|lspace|height|depth)?)|(width|lspace|height|depth)|(em|ex|px|in|cm|mm|pt|pc)))|((veryverythin|verythin|thin|medium|thick|verythick|veryverythick)mathspace)|0"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<xs:attributeGroup name="mpadded.attlist">
+  <xs:attribute name="width" type="mpadded-width-space"/>
+  <!-- should have default=0 below but '0' is not in value space -->
+  <!-- see bug #425 -->
+  <xs:attribute name="lspace" type="mpadded-space"/>
+  <xs:attribute name="height" type="mpadded-space"/>
+  <xs:attribute name="depth" type="mpadded-space"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mpadded.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="mpadded.attlist"/>
+</xs:complexType>
+
+<xs:element name="mpadded" type="mpadded.type"/>
+
+<!-- "mphantom" -->
+
+<xs:attributeGroup name="mphantom.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mphantom.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="mphantom.attlist"/>
+</xs:complexType>
+
+<xs:element name="mphantom" type="mphantom.type"/>
+
+<!-- "mfenced" -->
+
+<xs:attributeGroup name="mfenced.attlist">
+  <xs:attribute name="open" type="xs:string" default="("/>
+  <xs:attribute name="close" type="xs:string" default=")"/>
+  <xs:attribute name="separators" type="xs:string" default=","/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mfenced.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="mfenced.attlist"/>
+</xs:complexType>
+
+<xs:element name="mfenced" type="mfenced.type"/>
+
+<!-- "menclose" -->
+
+<xs:attributeGroup name="menclose.attlist">
+  <xs:attribute name="notation" default="longdiv">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:enumeration value="actuarial"/>
+        <xs:enumeration value="longdiv"/>
+        <xs:enumeration value="radical"/>
+        <xs:enumeration value="box"/>
+        <xs:enumeration value="roundedbox"/>
+        <xs:enumeration value="circle"/>
+        <xs:enumeration value="left"/>
+        <xs:enumeration value="right"/>
+        <xs:enumeration value="top"/>
+        <xs:enumeration value="bottom"/>
+        <xs:enumeration value="updiagonalstrike"/>
+        <xs:enumeration value="downdiagonalstrike"/>
+        <xs:enumeration value="verticalstrike"/>
+        <xs:enumeration value="horizontalstrike"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="menclose.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="0" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="menclose.attlist"/>
+</xs:complexType>
+
+<xs:element name="menclose" type="menclose.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Presentation-layout.class">
+  <xs:choice> 
+    <xs:element ref="mrow"/>
+    <xs:element ref="mfrac"/>
+    <xs:element ref="msqrt"/>
+    <xs:element ref="mroot"/>
+    <xs:element ref="mpadded"/>
+    <xs:element ref="mphantom"/>
+    <xs:element ref="mfenced"/>
+    <xs:element ref="menclose"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/scripts.xsd b/schema/mathml2/presentation/scripts.xsd
new file mode 100644
index 000000000000..cf7eea1543f9
--- /dev/null
+++ b/schema/mathml2/presentation/scripts.xsd
@@ -0,0 +1,186 @@
+<?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 presentation elements of MathML
+  dealing with subscripts and superscripts.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "msub" -->
+
+<xs:attributeGroup name="msub.attlist">
+  <xs:attribute name="subscriptshift" type="length-with-unit"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="msub.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="2" maxOccurs="2"/>
+  <xs:attributeGroup ref="msub.attlist"/>
+</xs:complexType>
+
+<xs:element name="msub" type="msub.type"/>
+
+<!-- "msup" -->
+
+<xs:attributeGroup name="msup.attlist">
+  <xs:attribute name="superscriptshift" type="length-with-unit"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="msup.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="2" maxOccurs="2"/>
+  <xs:attributeGroup ref="msup.attlist"/>
+</xs:complexType>
+
+<xs:element name="msup" type="msup.type"/>
+
+<!-- "msubsup" -->
+
+<xs:attributeGroup name="msubsup.attlist">
+  <xs:attribute name="subscriptshift" type="length-with-unit"/>
+  <xs:attribute name="superscriptshift" type="length-with-unit"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="msubsup.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="3" maxOccurs="3"/>
+  <xs:attributeGroup ref="msubsup.attlist"/>
+</xs:complexType>
+
+<xs:element name="msubsup" type="msubsup.type"/>
+
+<!-- "munder" -->
+
+<xs:attributeGroup name="munder.attlist">
+  <xs:attribute name="accentunder" type="xs:boolean"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="munder.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="2" maxOccurs="2"/>
+  <xs:attributeGroup ref="munder.attlist"/>
+</xs:complexType>
+
+<xs:element name="munder" type="munder.type"/>
+
+<!-- "mover" -->
+
+<xs:attributeGroup name="mover.attlist">
+  <xs:attribute name="accent" type="xs:boolean"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mover.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="2" maxOccurs="2"/>
+  <xs:attributeGroup ref="mover.attlist"/>
+</xs:complexType>
+
+<xs:element name="mover" type="mover.type"/>
+
+<!-- "munderover" -->
+
+<xs:attributeGroup name="munderover.attlist">
+  <xs:attribute name="accent" type="xs:boolean"/>
+  <xs:attribute name="accentunder" type="xs:boolean"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="munderover.type">
+  <xs:group ref="Presentation-expr.class" minOccurs="3" maxOccurs="3"/>
+  <xs:attributeGroup ref="munderover.attlist"/>
+</xs:complexType>
+
+<xs:element name="munderover" type="munderover.type"/>
+
+<!-- "mmultiscripts", "mprescripts" and "none" -->
+
+<xs:attributeGroup name="mmultiscripts.attlist">
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="Presentation-expr-or-none.class">
+  <xs:choice>
+    <xs:group ref="Presentation-expr.class"/>
+    <xs:element ref="none"/>
+  </xs:choice>
+</xs:group>
+
+<!-- not used
+<xs:group name="mprescripts.group">
+  <xs:sequence>
+     <xs:element ref="mprescripts"/>
+     <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="Presentation-expr.class"/>
+        <xs:element ref="none"/>
+     </xs:choice>
+  </xs:sequence>
+</xs:group>
+-->
+
+<xs:group name="mmultiscripts.content">
+  <xs:sequence>
+    <xs:group ref="Presentation-expr.class"/>
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:group ref="Presentation-expr-or-none.class"/>
+      <xs:group ref="Presentation-expr-or-none.class"/>
+    </xs:sequence>
+    <xs:sequence minOccurs="0">
+      <xs:element ref="mprescripts"/>
+      <xs:sequence maxOccurs="unbounded">
+        <xs:group ref="Presentation-expr-or-none.class"/>
+        <xs:group ref="Presentation-expr-or-none.class"/>
+      </xs:sequence>
+    </xs:sequence>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="mmultiscripts.type">
+  <xs:group ref="mmultiscripts.content"/>
+  <xs:attributeGroup ref="mmultiscripts.attlist"/>
+</xs:complexType>
+
+<xs:element name="mmultiscripts" type="mmultiscripts.type"/>
+
+<!-- Nothing... -->
+<xs:complexType name="none.type">
+</xs:complexType>
+
+<xs:element name="none" type="none.type"/>
+
+<!-- also void -->
+<xs:complexType name="mprescripts.type">
+</xs:complexType>
+
+<xs:element name="mprescripts" type="mprescripts.type"/>
+
+<!-- And the group of everything -->
+
+<xs:group name="Presentation-script.class">
+  <xs:choice>
+    <xs:element ref="msub"/>
+    <xs:element ref="msup"/>
+    <xs:element ref="msubsup"/>
+    <xs:element ref="munder"/>
+    <xs:element ref="mover"/>
+    <xs:element ref="munderover"/>
+    <xs:element ref="mmultiscripts"/>
+  </xs:choice>
+</xs:group>
+
+</xs:schema>
+
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/space.xsd b/schema/mathml2/presentation/space.xsd
new file mode 100644
index 000000000000..243735385d76
--- /dev/null
+++ b/schema/mathml2/presentation/space.xsd
@@ -0,0 +1,52 @@
+<?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 the XML Schema module for the MathML "mspace" element.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<xs:attributeGroup name="mspace.attlist">
+  <xs:attribute name="width" default="0em">
+    <xs:simpleType>
+      <xs:union memberTypes="length-with-unit named-space"/>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attribute name="height" type="length-with-unit" default="0ex"/>
+  <xs:attribute name="depth" type="length-with-unit" default="0ex"/>
+  <xs:attribute name="linebreak" default="auto">
+    <xs:simpleType>
+      <xs:restriction base="xs:string">
+        <xs:enumeration value="auto"/>
+        <xs:enumeration value="newline"/>
+        <xs:enumeration value="indentingnewline"/>
+        <xs:enumeration value="nobreak"/>
+        <xs:enumeration value="goodbreak"/>
+        <xs:enumeration value="badbreak"/>
+     </xs:restriction>
+   </xs:simpleType>
+  </xs:attribute>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:complexType name="mspace.type">
+  <xs:attributeGroup ref="mspace.attlist"/>
+</xs:complexType>
+
+<xs:element name="mspace" type="mspace.type"/>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/style.xsd b/schema/mathml2/presentation/style.xsd
new file mode 100644
index 000000000000..a0181218b303
--- /dev/null
+++ b/schema/mathml2/presentation/style.xsd
@@ -0,0 +1,69 @@
+<?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 for the "mstyle" element of MathML.
+  Author: Stéphane Dalmas, INRIA.
+  </xs:documentation>
+</xs:annotation>
+
+<!-- "mstyle" -->
+
+<xs:attributeGroup name="mstyle.attlist">
+  <xs:attribute name="scriptlevel" type="xs:integer"/>
+  <xs:attribute name="displaystyle" type="xs:boolean"/>
+  <xs:attribute name="scriptsizemultiplier" type="xs:decimal" default="0.71"/>
+  <xs:attribute name="scriptminsize" type="length-with-unit" default="8pt"/>
+  <xs:attribute name="color" type="xs:string"/>
+  <xs:attribute name="background" type="xs:string" default="transparent"/>
+  <xs:attribute name="veryverythinmathspace" type="length-with-unit"
+                default="0.0555556em"/>
+  <xs:attribute name="verythinmathspace" type="length-with-unit"
+                default="0.111111em"/>
+  <xs:attribute name="thinmathspace" type="length-with-unit"
+                default="0.166667em"/>
+  <xs:attribute name="mediummathspace" type="length-with-unit"
+                default="0.222222em"/>
+  <xs:attribute name="thickmathspace" type="length-with-unit"
+                default="0.277778em"/>
+  <xs:attribute name="verythickmathspace" type="length-with-unit"
+                default="0.333333em"/>
+  <xs:attribute name="veryverythickmathspace" type="length-with-unit"
+                default="0.388889em"/>
+  <xs:attribute name="linethickness" default="1">
+    <xs:simpleType>
+      <xs:union memberTypes="length-with-optional-unit thickness"/>
+    </xs:simpleType> 
+  </xs:attribute>
+  <xs:attributeGroup ref="Operator.attrib"/>
+  <xs:attributeGroup ref="Token-style.attrib"/>
+  <xs:attributeGroup ref="Common.attrib"/>
+</xs:attributeGroup>
+
+<xs:group name="mstyle.content">
+  <xs:sequence>
+    <xs:group ref="Presentation-expr.class"/>
+  </xs:sequence>
+</xs:group>
+
+<xs:complexType name="mstyle.type">
+  <xs:group ref="mstyle.content" minOccurs="1" maxOccurs="unbounded"/>
+  <xs:attributeGroup ref="mstyle.attlist"/>
+</xs:complexType>
+
+<xs:element name="mstyle" type="mstyle.type"/>
+
+</xs:schema>
+<!--
+  Copyright û 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/.
+  -->
diff --git a/schema/mathml2/presentation/table.xsd b/schema/mathml2/presentation/table.xsd
new file mode 100644
index 000000000000..968f7bc82e59
--- /dev/null
+++ b/schema/mathml2/presentation/table.xsd
@@ -0,0 +1,216 @@
+<?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é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 û 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/.
+  -->
diff --git a/schema/mathml2/presentation/tokens.xsd b/schema/mathml2/presentation/tokens.xsd
new file mode 100644
index 000000000000..56d156c6590f
--- /dev/null
+++ b/schema/mathml2/presentation/tokens.xsd
@@ -0,0 +1,124 @@
+<?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 the XML schema module for the token elements of the 

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list