A Parsing MathML

Mathematical Markup Language (MathML) Version 2.0
8 Document Object Model for MathML
A Parsing MathML
A.1 The MathML DTD
B Content Markup Validation Grammar

MathML documents should be validated using the XML DTD below. Note in particular that the standard XML attribute xml:space is not used, so whitespace characters in element content (that is, outside the presentation token elements mi, mo, mn, mtext, mspace, mtext, ms, the content token elements ci, cn and annotation) are not significant.

If a MathML fragment is parsed without a DTD, in other words as a well-formed XML fragment, it is the responsibility of the processing application to treat these whitespace characters as not significant.

An SGML parser (such as nsgmls) can be used to validate MathML. In this case an SGML declaration defining the constraints of XML applicable to an SGML parser must be used. See the note on SGML and XML.

A.1 The MathML DTD

Here we give the main body of the DTD. The full DTD is available as a zip archive.

The entity declarations for characters are referenced at the end of the DTD. These are linked to the character tables for each entity set.

A list of the combined MathML set of character names, ordered by name or by Unicode value are also available.

<!-- ************************************************************************ -->
<!-- Content model definition for content, presentation                       -->
<!-- and browser interface elements of MathML                                 -->
<!--                                                                          -->
<!-- $Id: appendixa.html,v 1.1 2000/02/10 17:46:32 hugo Exp $                 -->
<!--                                                                          -->
<!-- Initial draft (syntax = XML) 1997-05-09                                  -->
<!--   Stephen Buswell                                                        -->
<!-- Revised 1997-05-14  by Robert Miner                                      -->
<!--   Robert Miner                                                           -->
<!-- Revised 1997-06-29 and 1997-07-02                                        -->
<!--   Stephen Buswell                                                        -->
<!-- Revised 1997-12-15d                                                      -->
<!--   Stephen Buswell                                                        -->
<!-- Revised 1998-02-08                                                       -->
<!--   Stephen Buswell                                                        -->
<!-- Revised 1998-04-04                                                       -->
<!--   Stephen Buswell                                                        -->
<!-- Entities and small revisions 1999-02-21                                  -->
<!--   David Carlisle                                                         -->
<!-- Added attribute definitionURL to ci and cn 1999-10-11                    -->
<!--   Nico Poppelier                                                         -->
<!-- Additions for MathML 2  1999-12-16                                       -->
<!--   David Carlisle                                                         -->
<!-- Namespace support 2000-01-14                                             -->
<!--   David Carlisle                                                         -->
<!--                                                                          -->
<!-- Became W3C Recommendation 7 April 1998                                   -->
<!-- ************************************************************************ -->

<!-- ************************************************************************ -->
<!-- Support for variable namespace prefix                                    -->
<!-- ************************************************************************ -->

<!ENTITY % mathml-colon               ''>
<!ENTITY % mathml-prefix              ''>
<!ENTITY % mathml-xlink               'xlink'>

<!ENTITY % mathml-mspace              '%mathml-prefix;%mathml-colon;mspace' >
<!ENTITY % mathml-mprescripts         '%mathml-prefix;%mathml-colon;mprescripts' >
<!ENTITY % mathml-none                '%mathml-prefix;%mathml-colon;none' >
<!ENTITY % mathml-malignmark          '%mathml-prefix;%mathml-colon;malignmark' >
<!ENTITY % mathml-maligngroup         '%mathml-prefix;%mathml-colon;maligngroup' >
<!ENTITY % mathml-mchar               '%mathml-prefix;%mathml-colon;mchar' >
<!ENTITY % mathml-mglyph              '%mathml-prefix;%mathml-colon;mglyph' >
<!ENTITY % mathml-sep                 '%mathml-prefix;%mathml-colon;sep' >
<!ENTITY % mathml-inverse             '%mathml-prefix;%mathml-colon;inverse' >
<!ENTITY % mathml-ident               '%mathml-prefix;%mathml-colon;ident' >
<!ENTITY % mathml-compose             '%mathml-prefix;%mathml-colon;compose' >
<!ENTITY % mathml-exp                 '%mathml-prefix;%mathml-colon;exp' >
<!ENTITY % mathml-abs                 '%mathml-prefix;%mathml-colon;abs' >
<!ENTITY % mathml-arg                 '%mathml-prefix;%mathml-colon;arg' >
<!ENTITY % mathml-real                '%mathml-prefix;%mathml-colon;real' >
<!ENTITY % mathml-imaginary           '%mathml-prefix;%mathml-colon;imaginary' >
<!ENTITY % mathml-conjugate           '%mathml-prefix;%mathml-colon;conjugate' >
<!ENTITY % mathml-factorial           '%mathml-prefix;%mathml-colon;factorial' >
<!ENTITY % mathml-minus               '%mathml-prefix;%mathml-colon;minus' >
<!ENTITY % mathml-quotient            '%mathml-prefix;%mathml-colon;quotient' >
<!ENTITY % mathml-divide              '%mathml-prefix;%mathml-colon;divide' >
<!ENTITY % mathml-power               '%mathml-prefix;%mathml-colon;power' >
<!ENTITY % mathml-rem                 '%mathml-prefix;%mathml-colon;rem' >
<!ENTITY % mathml-plus                '%mathml-prefix;%mathml-colon;plus' >
<!ENTITY % mathml-max                 '%mathml-prefix;%mathml-colon;max' >
<!ENTITY % mathml-min                 '%mathml-prefix;%mathml-colon;min' >
<!ENTITY % mathml-times               '%mathml-prefix;%mathml-colon;times' >
<!ENTITY % mathml-gcd                 '%mathml-prefix;%mathml-colon;gcd' >
<!ENTITY % mathml-root                '%mathml-prefix;%mathml-colon;root' >
<!ENTITY % mathml-exists              '%mathml-prefix;%mathml-colon;exists' >
<!ENTITY % mathml-forall              '%mathml-prefix;%mathml-colon;forall' >
<!ENTITY % mathml-and                 '%mathml-prefix;%mathml-colon;and' >
<!ENTITY % mathml-or                  '%mathml-prefix;%mathml-colon;or' >
<!ENTITY % mathml-xor                 '%mathml-prefix;%mathml-colon;xor' >
<!ENTITY % mathml-not                 '%mathml-prefix;%mathml-colon;not' >
<!ENTITY % mathml-implies             '%mathml-prefix;%mathml-colon;implies' >
<!ENTITY % mathml-divergence          '%mathml-prefix;%mathml-colon;divergence' >
<!ENTITY % mathml-grad                '%mathml-prefix;%mathml-colon;grad' >
<!ENTITY % mathml-curl                '%mathml-prefix;%mathml-colon;curl' >
<!ENTITY % mathml-laplacian           '%mathml-prefix;%mathml-colon;laplacian' >
<!ENTITY % mathml-log                 '%mathml-prefix;%mathml-colon;log' >
<!ENTITY % mathml-int                 '%mathml-prefix;%mathml-colon;int' >
<!ENTITY % mathml-diff                '%mathml-prefix;%mathml-colon;diff' >
<!ENTITY % mathml-partialdiff         '%mathml-prefix;%mathml-colon;partialdiff' >
<!ENTITY % mathml-ln                  '%mathml-prefix;%mathml-colon;ln' >
<!ENTITY % mathml-card                '%mathml-prefix;%mathml-colon;card' >
<!ENTITY % mathml-setdiff             '%mathml-prefix;%mathml-colon;setdiff' >
<!ENTITY % mathml-union               '%mathml-prefix;%mathml-colon;union' >
<!ENTITY % mathml-intersect           '%mathml-prefix;%mathml-colon;intersect' >
<!ENTITY % mathml-sum                 '%mathml-prefix;%mathml-colon;sum' >
<!ENTITY % mathml-product             '%mathml-prefix;%mathml-colon;product' >
<!ENTITY % mathml-limit               '%mathml-prefix;%mathml-colon;limit' >
<!ENTITY % mathml-sin                 '%mathml-prefix;%mathml-colon;sin' >
<!ENTITY % mathml-cos                 '%mathml-prefix;%mathml-colon;cos' >
<!ENTITY % mathml-tan                 '%mathml-prefix;%mathml-colon;tan' >
<!ENTITY % mathml-sec                 '%mathml-prefix;%mathml-colon;sec' >
<!ENTITY % mathml-csc                 '%mathml-prefix;%mathml-colon;csc' >
<!ENTITY % mathml-cot                 '%mathml-prefix;%mathml-colon;cot' >
<!ENTITY % mathml-sinh                '%mathml-prefix;%mathml-colon;sinh' >
<!ENTITY % mathml-cosh                '%mathml-prefix;%mathml-colon;cosh' >
<!ENTITY % mathml-tanh                '%mathml-prefix;%mathml-colon;tanh' >
<!ENTITY % mathml-sech                '%mathml-prefix;%mathml-colon;sech' >
<!ENTITY % mathml-csch                '%mathml-prefix;%mathml-colon;csch' >
<!ENTITY % mathml-coth                '%mathml-prefix;%mathml-colon;coth' >
<!ENTITY % mathml-arcsin              '%mathml-prefix;%mathml-colon;arcsin' >
<!ENTITY % mathml-arccos              '%mathml-prefix;%mathml-colon;arccos' >
<!ENTITY % mathml-arctan              '%mathml-prefix;%mathml-colon;arctan' >
<!ENTITY % mathml-mean                '%mathml-prefix;%mathml-colon;mean' >
<!ENTITY % mathml-sdev                '%mathml-prefix;%mathml-colon;sdev' >
<!ENTITY % mathml-variance            '%mathml-prefix;%mathml-colon;variance' >
<!ENTITY % mathml-median              '%mathml-prefix;%mathml-colon;median' >
<!ENTITY % mathml-mode                '%mathml-prefix;%mathml-colon;mode' >
<!ENTITY % mathml-moment              '%mathml-prefix;%mathml-colon;moment' >
<!ENTITY % mathml-determinant         '%mathml-prefix;%mathml-colon;determinant' >
<!ENTITY % mathml-transpose           '%mathml-prefix;%mathml-colon;transpose' >
<!ENTITY % mathml-vectorproduct       '%mathml-prefix;%mathml-colon;vectorproduct' >
<!ENTITY % mathml-scalarproduct       '%mathml-prefix;%mathml-colon;scalarproduct' >
<!ENTITY % mathml-outerproduct        '%mathml-prefix;%mathml-colon;outerproduct' >
<!ENTITY % mathml-selector            '%mathml-prefix;%mathml-colon;selector' >
<!ENTITY % mathml-neq                 '%mathml-prefix;%mathml-colon;neq' >
<!ENTITY % mathml-eq                  '%mathml-prefix;%mathml-colon;eq' >
<!ENTITY % mathml-equivalent          '%mathml-prefix;%mathml-colon;equivalent' >
<!ENTITY % mathml-approx              '%mathml-prefix;%mathml-colon;approx' >
<!ENTITY % mathml-gt                  '%mathml-prefix;%mathml-colon;gt' >
<!ENTITY % mathml-lt                  '%mathml-prefix;%mathml-colon;lt' >
<!ENTITY % mathml-geq                 '%mathml-prefix;%mathml-colon;geq' >
<!ENTITY % mathml-leq                 '%mathml-prefix;%mathml-colon;leq' >
<!ENTITY % mathml-in                  '%mathml-prefix;%mathml-colon;in' >
<!ENTITY % mathml-notin               '%mathml-prefix;%mathml-colon;notin' >
<!ENTITY % mathml-notsubset           '%mathml-prefix;%mathml-colon;notsubset' >
<!ENTITY % mathml-notprsubset         '%mathml-prefix;%mathml-colon;notprsubset' >
<!ENTITY % mathml-subset              '%mathml-prefix;%mathml-colon;subset' >
<!ENTITY % mathml-prsubset            '%mathml-prefix;%mathml-colon;prsubset' >
<!ENTITY % mathml-tendsto             '%mathml-prefix;%mathml-colon;tendsto' >
<!ENTITY % mathml-ci                  '%mathml-prefix;%mathml-colon;ci' >
<!ENTITY % mathml-csymbol             '%mathml-prefix;%mathml-colon;csymbol' >
<!ENTITY % mathml-cn                  '%mathml-prefix;%mathml-colon;cn' >
<!ENTITY % mathml-apply               '%mathml-prefix;%mathml-colon;apply' >
<!ENTITY % mathml-reln                '%mathml-prefix;%mathml-colon;reln' >
<!ENTITY % mathml-lambda              '%mathml-prefix;%mathml-colon;lambda' >
<!ENTITY % mathml-condition           '%mathml-prefix;%mathml-colon;condition' >
<!ENTITY % mathml-declare             '%mathml-prefix;%mathml-colon;declare' >
<!ENTITY % mathml-semantics           '%mathml-prefix;%mathml-colon;semantics' >
<!ENTITY % mathml-annotation          '%mathml-prefix;%mathml-colon;annotation' >
<!ENTITY % mathml-annotation-xml      '%mathml-prefix;%mathml-colon;annotation-xml' >
<!ENTITY % mathml-interval            '%mathml-prefix;%mathml-colon;interval' >
<!ENTITY % mathml-set                 '%mathml-prefix;%mathml-colon;set' >
<!ENTITY % mathml-list                '%mathml-prefix;%mathml-colon;list' >
<!ENTITY % mathml-vector              '%mathml-prefix;%mathml-colon;vector' >
<!ENTITY % mathml-matrix              '%mathml-prefix;%mathml-colon;matrix' >
<!ENTITY % mathml-matrixrow           '%mathml-prefix;%mathml-colon;matrixrow' >
<!ENTITY % mathml-fn                  '%mathml-prefix;%mathml-colon;fn' >
<!ENTITY % mathml-lowlimit            '%mathml-prefix;%mathml-colon;lowlimit' >
<!ENTITY % mathml-uplimit             '%mathml-prefix;%mathml-colon;uplimit' >
<!ENTITY % mathml-bvar                '%mathml-prefix;%mathml-colon;bvar' >
<!ENTITY % mathml-degree              '%mathml-prefix;%mathml-colon;degree' >
<!ENTITY % mathml-logbase             '%mathml-prefix;%mathml-colon;logbase' >
<!ENTITY % mathml-mstyle              '%mathml-prefix;%mathml-colon;mstyle' >
<!ENTITY % mathml-merror              '%mathml-prefix;%mathml-colon;merror' >
<!ENTITY % mathml-mphantom            '%mathml-prefix;%mathml-colon;mphantom' >
<!ENTITY % mathml-mrow                '%mathml-prefix;%mathml-colon;mrow' >
<!ENTITY % mathml-mfrac               '%mathml-prefix;%mathml-colon;mfrac' >
<!ENTITY % mathml-msqrt               '%mathml-prefix;%mathml-colon;msqrt' >
<!ENTITY % mathml-menclose            '%mathml-prefix;%mathml-colon;menclose' >
<!ENTITY % mathml-mroot               '%mathml-prefix;%mathml-colon;mroot' >
<!ENTITY % mathml-msub                '%mathml-prefix;%mathml-colon;msub' >
<!ENTITY % mathml-msup                '%mathml-prefix;%mathml-colon;msup' >
<!ENTITY % mathml-msubsup             '%mathml-prefix;%mathml-colon;msubsup' >
<!ENTITY % mathml-mmultiscripts       '%mathml-prefix;%mathml-colon;mmultiscripts' >
<!ENTITY % mathml-munder              '%mathml-prefix;%mathml-colon;munder' >
<!ENTITY % mathml-mover               '%mathml-prefix;%mathml-colon;mover' >
<!ENTITY % mathml-munderover          '%mathml-prefix;%mathml-colon;munderover' >
<!ENTITY % mathml-mtable              '%mathml-prefix;%mathml-colon;mtable' >
<!ENTITY % mathml-mtr                 '%mathml-prefix;%mathml-colon;mtr' >
<!ENTITY % mathml-mlabeledtr          '%mathml-prefix;%mathml-colon;mlabeledtr' >
<!ENTITY % mathml-mtd                 '%mathml-prefix;%mathml-colon;mtd' >
<!ENTITY % mathml-maction             '%mathml-prefix;%mathml-colon;maction' >
<!ENTITY % mathml-mfenced             '%mathml-prefix;%mathml-colon;mfenced' >
<!ENTITY % mathml-mpadded             '%mathml-prefix;%mathml-colon;mpadded' >
<!ENTITY % mathml-mi                  '%mathml-prefix;%mathml-colon;mi' >
<!ENTITY % mathml-mn                  '%mathml-prefix;%mathml-colon;mn' >
<!ENTITY % mathml-mo                  '%mathml-prefix;%mathml-colon;mo' >
<!ENTITY % mathml-mtext               '%mathml-prefix;%mathml-colon;mtext' >
<!ENTITY % mathml-ms                  '%mathml-prefix;%mathml-colon;ms' >
<!ENTITY % mathml-math                '%mathml-prefix;%mathml-colon;math' >

<!-- ************************************************************************ -->
<!-- Attributes shared by all elements                                        -->
<!-- ************************************************************************ -->

<!ENTITY % att-xmlns
                                     'xmlns%mathml-colon;%mathml-prefix;
                                      CDATA #FIXED 
                                     "http://www.w3.org/1998/Math/MathML"' >
<!ENTITY  % att-global
  '%att-xmlns;
   xmlns:%mathml-xlink;               CDATA #IMPLIED
   %mathml-xlink;:href                CDATA #IMPLIED
   class                              CDATA #IMPLIED
   style                              CDATA #IMPLIED
   id                                 ID    #IMPLIED
   xref                               IDREF #IMPLIED
   other                              CDATA #IMPLIED' >

<!-- ************************************************************************ -->
<!-- Presentation element set                                                 -->
<!-- ************************************************************************ -->

<!-- Attribute definitions -->

<!ENTITY  % att-fontsize             'fontsize   CDATA             #IMPLIED' >
<!ENTITY  % att-fontweight           'fontweight (normal | bold)   #IMPLIED' >
<!ENTITY  % att-fontstyle            'fontstyle  (normal | italic) #IMPLIED' >
<!ENTITY  % att-fontfamily           'fontfamily CDATA             #IMPLIED' >
<!ENTITY  % att-color                'color      CDATA             #IMPLIED' >

<!ENTITY  % att-fontinfo             '%att-fontsize;
                                      %att-fontweight;
                                      %att-fontstyle;
                                      %att-fontfamily;
                                      %att-color;' >

<!ENTITY  % att-form                 'form          (prefix | infix | postfix) #IMPLIED' >
<!ENTITY  % att-fence                'fence         (true | false)             #IMPLIED' >
<!ENTITY  % att-separator            'separator     (true | false)             #IMPLIED' >
<!ENTITY  % att-lspace               'lspace        CDATA                      #IMPLIED' >
<!ENTITY  % att-rspace               'rspace        CDATA                      #IMPLIED' >
<!ENTITY  % att-stretchy             'stretchy      (true | false)             #IMPLIED' >
<!ENTITY  % att-symmetric            'symmetric     (true | false)             #IMPLIED' >
<!ENTITY  % att-maxsize              'maxsize       CDATA                      #IMPLIED' >
<!ENTITY  % att-minsize              'minsize       CDATA                      #IMPLIED' >
<!ENTITY  % att-largeop              'largeop       (true | false)             #IMPLIED' >
<!ENTITY  % att-movablelimits        'movablelimits (true | false)             #IMPLIED' >
<!ENTITY  % att-accent               'accent        (true | false)             #IMPLIED' >

<!ENTITY  % att-opinfo               '%att-form;
                                      %att-fence;
                                      %att-separator;
                                      %att-lspace;
                                      %att-rspace;
                                      %att-stretchy;
                                      %att-symmetric;
                                      %att-maxsize;
                                      %att-minsize;
                                      %att-largeop;
                                      %att-movablelimits;
                                      %att-accent;' >

<!ENTITY  % att-width                'width  CDATA #IMPLIED' >
<!ENTITY  % att-height               'height CDATA #IMPLIED' >
<!ENTITY  % att-depth                'depth  CDATA #IMPLIED' >

<!ENTITY  % att-sizeinfo             '%att-width;
                                      %att-height;
                                      %att-depth;' >

<!ENTITY  % att-lquote               'lquote CDATA #IMPLIED' >
<!ENTITY  % att-rquote               'rquote CDATA #IMPLIED' >

<!ENTITY  % att-linethickness        'linethickness CDATA #IMPLIED' >

<!ENTITY  % att-scriptlevel          'scriptlevel          CDATA          #IMPLIED' >
<!ENTITY  % att-displaystyle         'displaystyle         (true | false) #IMPLIED' >
<!ENTITY  % att-scriptsizemultiplier 'scriptsizemultiplier CDATA          #IMPLIED' >
<!ENTITY  % att-scriptminsize        'scriptminsize        CDATA          #IMPLIED' >
<!ENTITY  % att-background           'background           CDATA          #IMPLIED' >

<!ENTITY  % att-open                 'open       CDATA #IMPLIED' >
<!ENTITY  % att-close                'close      CDATA #IMPLIED' >
<!ENTITY  % att-separators           'separators CDATA #IMPLIED' >

<!ENTITY  % att-subscriptshift       'subscriptshift   CDATA #IMPLIED' >
<!ENTITY  % att-superscriptshift     'superscriptshift CDATA #IMPLIED' >

<!ENTITY  % att-accentunder          'accentunder (true | false) #IMPLIED' >

<!ENTITY  % att-align                'align          CDATA #IMPLIED' >
<!ENTITY  % att-rowalign             'rowalign       CDATA #IMPLIED' >
<!ENTITY  % att-columnalign          'columnalign    CDATA #IMPLIED' >
<!ENTITY  % att-columnwidth          'columnwidth    CDATA #IMPLIED' >
<!ENTITY  % att-groupalign           'groupalign     CDATA #IMPLIED' >
<!ENTITY  % att-alignmentscope       'alignmentscope CDATA #IMPLIED' >

<!ENTITY  % att-rowspacing           'rowspacing    CDATA                   #IMPLIED' >
<!ENTITY  % att-columnspacing        'columnspacing CDATA                   #IMPLIED' >
<!ENTITY  % att-rowlines             'rowlines      CDATA                   #IMPLIED' >
<!ENTITY  % att-columnlines          'columnlines   CDATA                   #IMPLIED' >
<!ENTITY  % att-frame                'frame         (none | solid | dashed) #IMPLIED' >
<!ENTITY  % att-framespacing         'framespacing  CDATA                   #IMPLIED' >
<!ENTITY  % att-equalrows            'equalrows     CDATA                   #IMPLIED' >
<!ENTITY  % att-equalcolumns         'equalcolumns  CDATA                   #IMPLIED' >

<!ENTITY  % att-tableinfo            '%att-align;
                                      %att-rowalign;
                                      %att-columnalign;
                                      %att-columnwidth;
                                      %att-groupalign;
                                      %att-alignmentscope;
                                      %att-rowspacing;
                                      %att-columnspacing;
                                      %att-rowlines;
                                      %att-columnlines;
                                      %att-frame;
                                      %att-framespacing;
                                      %att-equalrows;
                                      %att-equalcolumns;
                                      %att-displaystyle;' >

<!ENTITY  % att-rowspan              'rowspan    CDATA #IMPLIED' >
<!ENTITY  % att-columnspan           'columnspan CDATA #IMPLIED' >

<!ENTITY  % att-edge                 'edge (left | right)  #IMPLIED' >

<!ENTITY  % att-actiontype           'actiontype CDATA #IMPLIED' >
<!ENTITY  % att-selection            'selection  CDATA #IMPLIED' >

<!ENTITY  % att-name                 'name CDATA #IMPLIED' >
<!ENTITY  % att-alt                  'alt CDATA  #IMPLIED' >
<!ENTITY  % att-index                'index CDATA  #IMPLIED' >

<!-- Presentation schemata with content -->

<!ENTITY  % ptoken                   '%mathml-mi; | %mathml-mn; | %mathml-mo; |
                                      %mathml-mtext; | %mathml-ms;' >

<!ATTLIST %mathml-mi;                 %att-fontinfo;
                                      %att-global; >

<!ATTLIST %mathml-mn;                 %att-fontinfo;
                                      %att-global; >

<!ATTLIST %mathml-mo;                 %att-fontinfo;
                                      %att-opinfo;
                                      %att-global; >

<!ATTLIST %mathml-mtext;              %att-fontinfo;
                                      %att-global; >

<!ATTLIST %mathml-ms;                 %att-fontinfo;
                                      %att-lquote;
                                      %att-rquote;
                                      %att-global; >

<!-- Empty presentation schemata -->

<!ENTITY  % petoken                  '%mathml-mspace;' >
<!ELEMENT %mathml-mspace;             EMPTY >

<!ATTLIST %mathml-mspace;             %att-sizeinfo;
                                      %att-global; >

<!-- Presentation: general layout schemata -->

<!ENTITY % pgenschema                '%mathml-mrow;|%mathml-mfrac;|%mathml-msqrt;|
                                      %mathml-mroot;|%mathml-menclose;|
                                      %mathml-mstyle;|%mathml-merror;|%mathml-mpadded;|
                                      %mathml-mphantom;|%mathml-mfenced;' >

<!ATTLIST %mathml-mrow;               %att-global; >

<!ATTLIST %mathml-mfrac;              %att-linethickness;
                                      %att-global; >

<!ATTLIST %mathml-msqrt;              %att-global; >

<!ATTLIST %mathml-menclose;           %att-global;
                                      notation CDATA "longdiv" >

<!ATTLIST %mathml-mroot;              %att-global; >

<!ATTLIST %mathml-mstyle;             %att-fontinfo;
                                      %att-opinfo;
                                      %att-lquote;
                                      %att-rquote;
                                      %att-linethickness;
                                      %att-scriptlevel;
                                      %att-scriptsizemultiplier;
                                      %att-scriptminsize;
                                      %att-background;
                                      %att-open;
                                      %att-close;
                                      %att-separators;
                                      %att-subscriptshift;
                                      %att-superscriptshift;
                                      %att-accentunder;
                                      %att-tableinfo;
                                      %att-rowspan;
                                      %att-columnspan;
                                      %att-edge;
                                      %att-actiontype;
                                      %att-selection;
                                      %att-global; >

<!ATTLIST %mathml-merror;             %att-global; >

<!ATTLIST %mathml-mpadded;            %att-sizeinfo;
                                      %att-lspace;
                                      %att-global; >

<!ATTLIST %mathml-mphantom;           %att-global; >

<!ATTLIST %mathml-mfenced;            %att-open;
                                      %att-close;
                                      %att-separators;
                                      %att-global; >

<!-- Presentation layout schemata: scripts and limits -->

<!ENTITY  % pscrschema               '%mathml-msub;|%mathml-msup;|%mathml-msubsup;|
                                      %mathml-munder;|%mathml-mover;|
                                      %mathml-munderover;|%mathml-mmultiscripts;' >

<!ATTLIST %mathml-msub;               %att-subscriptshift;
                                      %att-global; >

<!ATTLIST %mathml-msup;               %att-superscriptshift;
                                      %att-global; >

<!ATTLIST %mathml-msubsup;            %att-subscriptshift;
                                      %att-superscriptshift;
                                      %att-global; >

<!ATTLIST %mathml-munder;             %att-accentunder;
                                      %att-global; >

<!ATTLIST %mathml-mover;              %att-accent;
                                      %att-global; >

<!ATTLIST %mathml-munderover;         %att-accent;
                                      %att-accentunder;
                                      %att-global; >

<!ATTLIST %mathml-mmultiscripts;      %att-subscriptshift;
                                      %att-superscriptshift;
                                      %att-global; >

<!-- Presentation layout schemata: empty elements for scripts -->

<!ENTITY  % pscreschema              '%mathml-mprescripts;|
                                      %mathml-none;' >

<!ELEMENT %mathml-mprescripts;        EMPTY >
<!ATTLIST %mathml-mprescripts;        %att-xmlns; >

<!ELEMENT %mathml-none;               EMPTY >
<!ATTLIST %mathml-none;               %att-xmlns; >

<!-- Presentation layout schemata: tables -->

<!ENTITY  % ptabschema               '%mathml-mtable;|%mathml-mtr;|
                                      %mathml-mlabeledtr;|%mathml-mtd;' >

<!ATTLIST %mathml-mtable;             %att-tableinfo;
                                      %att-global; >

<!ATTLIST %mathml-mtr;                %att-rowalign;
                                      %att-columnalign;
                                      %att-groupalign;
                                      %att-global; >

<!ATTLIST %mathml-mlabeledtr;         %att-rowalign;
                                      %att-columnalign;
                                      %att-groupalign;
                                      %att-global; >

<!ATTLIST %mathml-mtd;                %att-rowalign;
                                      %att-columnalign;
                                      %att-groupalign;
                                      %att-rowspan;
                                      %att-columnspan;
                                      %att-global; >

<!ENTITY  % plschema                 '%pgenschema;|%pscrschema;|%ptabschema;' >

<!-- Empty presentation layout schemata -->

<!ENTITY  % peschema                 '%mathml-maligngroup; | 
                                      %mathml-malignmark;' >

<!ELEMENT %mathml-malignmark;         EMPTY >

<!ATTLIST %mathml-malignmark;         %att-edge; >

<!ELEMENT %mathml-maligngroup;        EMPTY >
<!ATTLIST %mathml-maligngroup;        %att-groupalign;
                                      %att-global; >

<!ELEMENT %mathml-mchar;         EMPTY >
<!ATTLIST %mathml-mchar;         %att-name; >

<!ELEMENT %mathml-mglyph;         EMPTY >
<!ATTLIST %mathml-mglyph;         %att-alt;
                                  %att-fontfamily;
                                  %att-index; >

<!-- Presentation action schemata -->

<!ENTITY  % pactions                 '%mathml-maction;' >
<!ATTLIST %mathml-maction;            %att-actiontype;
                                      %att-selection;
                                      %att-global; >

<!-- The following entity for substitution into content constructs -->
<!-- excludes elements that are not valid as expressions.          -->

<!ENTITY  % PresInCont               '%ptoken; | %petoken; |
                                      %plschema; | %peschema; | %pactions;' >

<!-- Presentation entity: all presentation constructs -->

<!ENTITY  % Presentation             '%ptoken; | %petoken; | %pscreschema; |
                                      %plschema; | %peschema; | %pactions;'>

<!-- ************************************************************************ -->
<!-- Content element set                                                      -->
<!-- ************************************************************************ -->

<!-- Attribute definitions -->

<!ENTITY  % att-base                 'base CDATA "10"' >
<!ENTITY  % att-closure              'closure CDATA "closed"' >
<!ENTITY  % att-definition           'definitionURL CDATA ""' >
<!ENTITY  % att-encoding             'encoding CDATA ""' >
<!ENTITY  % att-nargs                'nargs CDATA "1"' >
<!ENTITY  % att-occurrence           'occurrence CDATA "function-model"' >
<!ENTITY  % att-order                'order CDATA "numeric"' >
<!ENTITY  % att-scope                'scope CDATA "local"' >
<!ENTITY  % att-type                 'type CDATA #IMPLIED' >

<!-- Content elements: leaf nodes -->

<!ENTITY  % ctoken                   '%mathml-csymbol;|%mathml-ci; | %mathml-cn;' >

<!ATTLIST %mathml-ci;                 %att-type;
                                      %att-definition;
                                      %att-global; >

<!ATTLIST %mathml-csymbol;            %att-encoding;
                                      %att-type;
                                      %att-definition;
                                      %att-global; >

<!ATTLIST %mathml-cn;                 %att-type;
                                      %att-base;
                                      %att-definition;
                                      %att-global; >

<!-- Content elements: specials -->

<!ENTITY  % cspecial                 '%mathml-apply; | %mathml-reln; |
                                      %mathml-lambda;' >

<!ATTLIST %mathml-apply;              %att-global; >

<!ATTLIST %mathml-reln;               %att-global; >

<!ATTLIST %mathml-lambda;             %att-global; >

<!-- Content elements: others -->

<!ENTITY  % cother                   '%mathml-condition; | %mathml-declare; |
                                      %mathml-sep;' >

<!ATTLIST %mathml-condition;          %att-global; >

<!ATTLIST %mathml-declare;            %att-type;
                                      %att-scope;
                                      %att-nargs;
                                      %att-occurrence;
                                      %att-definition;
                                      %att-encoding;
                                      %att-global; >

<!ELEMENT %mathml-sep;                EMPTY >
<!ATTLIST %mathml-sep;                %att-xmlns; >

<!-- Content elements: semantic mapping -->

<!ENTITY  % csemantics               '%mathml-semantics; | %mathml-annotation; |
                                      %mathml-annotation;-xml' >

<!ATTLIST %mathml-semantics;          %att-definition;
                                      %att-encoding;
                                      %att-global; >

<!ATTLIST %mathml-annotation;         %att-encoding;
                                      %att-global; >

<!ATTLIST %mathml-annotation-xml;     %att-encoding;
                                      %att-global; >

<!-- Content elements: constructors -->

<!ENTITY  % cconstructor             '%mathml-interval; | %mathml-list; |
                                      %mathml-matrix; | %mathml-matrixrow; |
                                      %mathml-set; | %mathml-vector;' >

<!ATTLIST %mathml-interval;           %att-closure;
                                      %att-global; >

<!ATTLIST %mathml-set;                %att-type;
                                      %att-global; >

<!ATTLIST %mathml-list;               %att-order;
                                      %att-global; >

<!ATTLIST %mathml-vector;             %att-global; >

<!ATTLIST %mathml-matrix;             %att-global; >

<!ATTLIST %mathml-matrixrow;          %att-global; >

<!-- Content elements: operators -->

<!ENTITY  % cfuncop1ary              '%mathml-inverse; | %mathml-ident;' >

<!ELEMENT %mathml-inverse;            EMPTY >
<!ATTLIST %mathml-inverse;            %att-definition;
                                      %att-global; >

<!ENTITY  % cfuncopnary              '%mathml-fn; | %mathml-compose;' >

<!ATTLIST %mathml-fn;                 %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-ident;              EMPTY >
<!ATTLIST %mathml-ident;              %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-compose;            EMPTY >
<!ATTLIST %mathml-compose;            %att-definition;
                                      %att-global; >

<!ENTITY  % carithop1ary             '%mathml-abs; | %mathml-conjugate; |
                                      %mathml-exp; | %mathml-factorial; |
                                      %mathml-arg; |
                                      %mathml-real; | %mathml-imaginary;' >

<!ELEMENT %mathml-exp;                EMPTY >
<!ATTLIST %mathml-exp;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-abs;                EMPTY >
<!ATTLIST %mathml-abs;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-arg;                EMPTY >
<!ATTLIST %mathml-arg;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-real;               EMPTY >
<!ATTLIST %mathml-real;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-imaginary;          EMPTY >
<!ATTLIST %mathml-imaginary;          %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-conjugate;          EMPTY >
<!ATTLIST %mathml-conjugate;          %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-factorial;          EMPTY >
<!ATTLIST %mathml-factorial;          %att-definition;
                                      %att-global; >

<!ENTITY  % carithop1or2ary          '%mathml-minus;' >

<!ELEMENT %mathml-minus;              EMPTY >
<!ATTLIST %mathml-minus;              %att-definition;
                                      %att-global; >

<!ENTITY  % carithop2ary             '%mathml-quotient; |
                                      %mathml-divide; |
                                      %mathml-power; | %mathml-rem;' >

<!ELEMENT %mathml-quotient;           EMPTY >
<!ATTLIST %mathml-quotient;           %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-divide;             EMPTY >
<!ATTLIST %mathml-divide;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-power;              EMPTY >
<!ATTLIST %mathml-power;              %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-rem;                EMPTY >
<!ATTLIST %mathml-rem;                %att-definition;
                                      %att-global; >

<!ENTITY  % carithopnary             '%mathml-plus; | %mathml-times; |
                                      %mathml-max; | %mathml-min; | %mathml-gcd;' >

<!ELEMENT %mathml-plus;               EMPTY >
<!ATTLIST %mathml-plus;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-max;                EMPTY >
<!ATTLIST %mathml-max;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-min;                EMPTY >
<!ATTLIST %mathml-min;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-times;              EMPTY >
<!ATTLIST %mathml-times;              %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-gcd;                EMPTY >
<!ATTLIST %mathml-gcd;                %att-definition;
                                      %att-global; >

<!ENTITY  % carithoproot             '%mathml-root;' >

<!ELEMENT %mathml-root;               EMPTY >
<!ATTLIST %mathml-root;               %att-definition;
                                      %att-global; >

<!ENTITY  % clogicopquant            '%mathml-exists; | %mathml-forall;' >

<!ELEMENT %mathml-exists;             EMPTY >
<!ATTLIST %mathml-exists;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-forall;             EMPTY >
<!ATTLIST %mathml-forall;             %att-definition;
                                      %att-global; >

<!ENTITY  % clogicopnary             '%mathml-and; | %mathml-or; | %mathml-xor;' >

<!ELEMENT %mathml-and;                EMPTY >
<!ATTLIST %mathml-and;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-or;                 EMPTY >
<!ATTLIST %mathml-or;                 %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-xor;                EMPTY >
<!ATTLIST %mathml-xor;                %att-definition;
                                      %att-global; >

<!ENTITY  % clogicop1ary             '%mathml-not;' >

<!ELEMENT %mathml-not;                EMPTY >
<!ATTLIST %mathml-not;                %att-definition;
                                      %att-global; >

<!ENTITY  % clogicop2ary             '%mathml-implies;' >

<!ELEMENT %mathml-implies;            EMPTY >
<!ATTLIST %mathml-implies;            %att-definition;
                                      %att-global; >

<!ENTITY  % ccalcop                  '%mathml-log; | %mathml-int; |
                                      %mathml-diff; | %mathml-partialdiff; |
                                      %mathml-divergence; |
                                      %mathml-grad; | %mathml-curl; |
                                      %mathml-laplacian;' >

<!ELEMENT %mathml-divergence;         EMPTY >
<!ATTLIST %mathml-divergence;         %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-grad;               EMPTY >
<!ATTLIST %mathml-grad;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-curl;               EMPTY >
<!ATTLIST %mathml-curl;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-laplacian;          EMPTY >
<!ATTLIST %mathml-laplacian;          %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-log;                EMPTY >
<!ATTLIST %mathml-log;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-int;                EMPTY >
<!ATTLIST %mathml-int;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-diff;               EMPTY >
<!ATTLIST %mathml-diff;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-partialdiff;        EMPTY >
<!ATTLIST %mathml-partialdiff;        %att-definition;
                                      %att-global; >

<!ENTITY  % ccalcop1ary              '%mathml-ln;' >

<!ELEMENT %mathml-ln;                 EMPTY >
<!ATTLIST %mathml-ln;                 %att-definition;
                                      %att-global; >

<!ENTITY  % csetop1ary               '%mathml-card;' >


<!ELEMENT %mathml-card;               EMPTY >
<!ATTLIST %mathml-card;               %att-definition;
                                      %att-global; >

<!ENTITY  % csetop2ary               '%mathml-setdiff;' >

<!ELEMENT %mathml-setdiff;            EMPTY >
<!ATTLIST %mathml-setdiff;            %att-definition;
                                      %att-global; >

<!ENTITY  % csetopnary               '%mathml-union; | %mathml-intersect;' >

<!ELEMENT %mathml-union;              EMPTY >
<!ATTLIST %mathml-union;              %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-intersect;          EMPTY >
<!ATTLIST %mathml-intersect;          %att-definition;
                                      %att-global; >

<!ENTITY  % cseqop                   '%mathml-sum; | %mathml-product; | %mathml-limit;' >

<!ELEMENT %mathml-sum;                EMPTY >
<!ATTLIST %mathml-sum;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-product;            EMPTY >
<!ATTLIST %mathml-product;            %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-limit;              EMPTY >
<!ATTLIST %mathml-limit;              %att-definition;
                                      %att-global; >

<!ENTITY  % ctrigop                  '%mathml-sin; | %mathml-cos; |
                                      %mathml-tan; | %mathml-sec; | %mathml-csc; |
                                      %mathml-cot; | %mathml-sinh; |
                                      %mathml-cosh; | %mathml-tanh; |
                                      %mathml-sech; | %mathml-csch; |
                                      %mathml-coth; | %mathml-arcsin; |
                                      %mathml-arccos; | %mathml-arctan;' >

<!ELEMENT %mathml-sin;                EMPTY >
<!ATTLIST %mathml-sin;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-cos;                EMPTY >
<!ATTLIST %mathml-cos;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-tan;                EMPTY >
<!ATTLIST %mathml-tan;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-sec;                EMPTY >
<!ATTLIST %mathml-sec;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-csc;                EMPTY >
<!ATTLIST %mathml-csc;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-cot;                EMPTY >
<!ATTLIST %mathml-cot;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-sinh;               EMPTY >
<!ATTLIST %mathml-sinh;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-cosh;               EMPTY >
<!ATTLIST %mathml-cosh;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-tanh;               EMPTY >
<!ATTLIST %mathml-tanh;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-sech;               EMPTY >
<!ATTLIST %mathml-sech;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-csch;               EMPTY >
<!ATTLIST %mathml-csch;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-coth;               EMPTY >
<!ATTLIST %mathml-coth;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-arcsin;             EMPTY >
<!ATTLIST %mathml-arcsin;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-arccos;             EMPTY >
<!ATTLIST %mathml-arccos;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-arctan;             EMPTY >
<!ATTLIST %mathml-arctan;             %att-definition;
                                      %att-global; >

<!ENTITY  % cstatopnary              '%mathml-mean; | %mathml-sdev; |
                                      %mathml-variance; | %mathml-median; |
                                      %mathml-mode;' >

<!ELEMENT %mathml-mean;               EMPTY >
<!ATTLIST %mathml-mean;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-sdev;               EMPTY >
<!ATTLIST %mathml-sdev;               %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-variance;           EMPTY >
<!ATTLIST %mathml-variance;           %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-median;             EMPTY >
<!ATTLIST %mathml-median;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-mode;               EMPTY >
<!ATTLIST %mathml-mode;               %att-definition;
                                      %att-global; >

<!ENTITY  % cstatopmoment            '%mathml-moment;' >

<!ELEMENT %mathml-moment;             EMPTY >
<!ATTLIST %mathml-moment;             %att-definition;
                                      %att-global; >

<!ENTITY  % clalgop1ary              '%mathml-determinant; |
                                      %mathml-transpose;' >

<!ELEMENT %mathml-determinant;        EMPTY >
<!ATTLIST %mathml-determinant;        %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-transpose;          EMPTY >
<!ATTLIST %mathml-transpose;          %att-definition;
                                      %att-global; >

<!ENTITY  % clalgop2ary              '%mathml-vectorproduct; |
                                      %mathml-scalarproduct; |
                                      %mathml-outerproduct;' >

<!ELEMENT %mathml-vectorproduct;      EMPTY >
<!ATTLIST %mathml-vectorproduct;      %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-scalarproduct;      EMPTY >
<!ATTLIST %mathml-scalarproduct;      %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-outerproduct;       EMPTY >
<!ATTLIST %mathml-outerproduct;       %att-definition;
                                      %att-global; >

<!ENTITY  % clalgopnary              '%mathml-selector;' >

<!ELEMENT %mathml-selector;           EMPTY >
<!ATTLIST %mathml-selector;           %att-definition;
                                      %att-global; >

<!-- Content elements: relations -->

<!ENTITY  % cgenrel2ary              '%mathml-neq;' >

<!ELEMENT %mathml-neq;                EMPTY >
<!ATTLIST %mathml-neq;                %att-definition;
                                      %att-global; >

<!ENTITY  % cgenrelnary              '%mathml-eq; | %mathml-leq; |
                                      %mathml-lt; | %mathml-geq; |
                                      %mathml-gt;| %mathml-equivalent; |
                                      %mathml-approx;' >

<!ELEMENT %mathml-eq;                 EMPTY >
<!ATTLIST %mathml-eq;                 %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-equivalent;         EMPTY >
<!ATTLIST %mathml-equivalent;         %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-approx;             EMPTY >
<!ATTLIST %mathml-approx;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-gt;                 EMPTY >
<!ATTLIST %mathml-gt;                 %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-lt;                 EMPTY >
<!ATTLIST %mathml-lt;                 %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-geq;                EMPTY >
<!ATTLIST %mathml-geq;                %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-leq;                EMPTY >
<!ATTLIST %mathml-leq;                %att-definition;
                                      %att-global; >

<!ENTITY  % csetrel2ary              '%mathml-in; | %mathml-notin; |
                                      %mathml-notsubset; |
                                      %mathml-notprsubset;' >

<!ELEMENT %mathml-in;                 EMPTY >
<!ATTLIST %mathml-in;                 %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-notin;              EMPTY >
<!ATTLIST %mathml-notin;              %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-notsubset;          EMPTY >
<!ATTLIST %mathml-notsubset;          %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-notprsubset;        EMPTY >
<!ATTLIST %mathml-notprsubset;        %att-definition;
                                      %att-global; >

<!ENTITY  % csetrelnary              '%mathml-subset; | %mathml-prsubset;' >

<!ELEMENT %mathml-subset;             EMPTY >
<!ATTLIST %mathml-subset;             %att-definition;
                                      %att-global; >

<!ELEMENT %mathml-prsubset;           EMPTY >
<!ATTLIST %mathml-prsubset;           %att-definition;
                                      %att-global; >

<!ENTITY  % cseqrel2ary              '%mathml-tendsto;' >

<!ELEMENT %mathml-tendsto;            EMPTY >
<!ATTLIST %mathml-tendsto;            %att-definition;
                                      %att-type;
                                      %att-global; >

<!-- Content elements: quantifiers -->

<!ENTITY  % cquantifier              '%mathml-lowlimit; |
                                      %mathml-uplimit; | %mathml-bvar; |
                                      %mathml-degree; | %mathml-logbase;' >

<!ATTLIST %mathml-lowlimit;           %att-global; >

<!ATTLIST %mathml-uplimit;            %att-global; >

<!ATTLIST %mathml-bvar;               %att-global; >

<!ATTLIST %mathml-degree;             %att-global; >

<!ATTLIST %mathml-logbase;            %att-global; >

<!-- Operator groups -->

<!ENTITY  % cop1ary                  '%cfuncop1ary; | %carithop1ary; | %clogicop1ary; |
                                      %ccalcop1ary; | %ctrigop; | %clalgop1ary; |
                                      %csetop1ary;' >

<!ENTITY  % cop2ary                  '%carithop2ary; | %clogicop2ary;|
                                      %clalgop2ary; | %csetop2ary;' >

<!ENTITY  % copnary                  '%cfuncopnary; | %carithopnary; | %clogicopnary; |
                                      %csetopnary; | %cstatopnary; | %clalgopnary;' >

<!ENTITY  % copmisc                  '%carithoproot; | %carithop1or2ary; | %ccalcop; |
                                      %cseqop; | %cstatopmoment; | %clogicopquant;' >

<!-- Relation groups -->

<!ENTITY  % crel2ary                 '%cgenrel2ary; | %csetrel2ary; | %cseqrel2ary;' >

<!ENTITY  % crelnary                 '%cgenrelnary; | %csetrelnary;' >

<!-- Content constructs: all -->

<!ENTITY  % Content                  '%ctoken; | %cspecial; | %cother; | %csemantics; |
                                      %cconstructor; | %cquantifier; |
                                      %cop1ary; |%cop2ary; |%copnary; |%copmisc; |
                                      %crel2ary; |%crelnary;' >

<!-- Content constructs for substitution in presentation structures -->

<!ENTITY  % ContInPres               '%mathml-ci; |%mathml-csymbol;| %mathml-cn;|
                                      %mathml-apply; | %mathml-fn; |
                                      %mathml-lambda; | %mathml-reln; |
                                      %mathml-interval; | %mathml-list; |
                                      %mathml-matrix; | %mathml-matrixrow; |
                                      %mathml-set; | %mathml-vector; |
                                      %mathml-semantics; |%mathml-declare;' >

<!-- ************************************************************************ -->
<!-- Recursive definition for content of expressions.                         -->
<!-- Include presentation constructs at lowest level so presentation          -->
<!-- layout schemata hold presentation or content elements.                   -->
<!-- Include content constructs at lowest level so content elements           -->
<!-- hold PCDATA or presentation elements at leaf level (for permitted        -->
<!-- substitutable elements in context)                                       -->
<!-- ************************************************************************ -->

<!ENTITY  % ContentExpression        '(%Content; | %PresInCont;)*' >
<!ENTITY  % PresExpression           '(%Presentation; | %ContInPres;)*' >
<!ENTITY  % MathExpression           '(%PresInCont; | %ContInPres;)*' >

<!-- PCDATA or MathML character elements -->
<!ENTITY  % MathMLCharacters           '#PCDATA |
                                        %mathml-mchar; |
                                        %mathml-mglyph; ' >

<!-- Content elements: tokens                       -->
<!-- (may contain embedded presentation constructs) -->

<!ELEMENT %mathml-ci;                 (%MathMLCharacters; | %PresInCont;)* >
<!ELEMENT %mathml-csymbol;            (%MathMLCharacters; | %PresInCont;)* >
<!ELEMENT %mathml-cn;                 (%MathMLCharacters; | %mathml-sep; | %PresInCont;)* >

<!-- Content elements: special -->

<!ELEMENT %mathml-apply;              (%ContentExpression;) >
<!ELEMENT %mathml-reln;               (%ContentExpression;) >
<!ELEMENT %mathml-lambda;             (%ContentExpression;) >

<!-- Content elements: other -->

<!ELEMENT %mathml-condition;          (%ContentExpression;) >
<!ELEMENT %mathml-declare;            (%ContentExpression;) >

<!-- Content elements: semantics -->

<!ELEMENT %mathml-semantics;          (%ContentExpression;) >
<!ELEMENT %mathml-annotation;         (#PCDATA) >
<!ELEMENT %mathml-annotation-xml;     ANY >

<!-- Content elements: constructors -->

<!ELEMENT %mathml-interval;           (%ContentExpression;) >
<!ELEMENT %mathml-set;                (%ContentExpression;) >
<!ELEMENT %mathml-list;               (%ContentExpression;) >
<!ELEMENT %mathml-vector;             (%ContentExpression;) >
<!ELEMENT %mathml-matrix;             (%ContentExpression;) >
<!ELEMENT %mathml-matrixrow;          (%ContentExpression;) >

<!-- Content elements: operator (user-defined) -->

<!ELEMENT %mathml-fn;                 (%ContentExpression;) >

<!-- Content elements: quantifiers -->

<!ELEMENT %mathml-lowlimit;           (%ContentExpression;) >
<!ELEMENT %mathml-uplimit;            (%ContentExpression;) >
<!ELEMENT %mathml-bvar;               (%ContentExpression;) >
<!ELEMENT %mathml-degree;             (%ContentExpression;) >
<!ELEMENT %mathml-logbase;            (%ContentExpression;) >

<!-- ************************************************************************ -->
<!-- Presentation layout schemata contain tokens,                             -->
<!-- layout and content schemata.                                             -->
<!-- ************************************************************************ -->

<!ELEMENT %mathml-mstyle;             (%PresExpression;) >
<!ELEMENT %mathml-merror;             (%PresExpression;) >
<!ELEMENT %mathml-mphantom;           (%PresExpression;) >
<!ELEMENT %mathml-mrow;               (%PresExpression;) >
<!ELEMENT %mathml-mfrac;              (%PresExpression;) >
<!ELEMENT %mathml-msqrt;              (%PresExpression;) >
<!ELEMENT %mathml-menclose;           (%PresExpression;) >
<!ELEMENT %mathml-mroot;              (%PresExpression;) >
<!ELEMENT %mathml-msub;               (%PresExpression;) >
<!ELEMENT %mathml-msup;               (%PresExpression;) >
<!ELEMENT %mathml-msubsup;            (%PresExpression;) >
<!ELEMENT %mathml-mmultiscripts;      (%PresExpression;) >
<!ELEMENT %mathml-munder;             (%PresExpression;) >
<!ELEMENT %mathml-mover;              (%PresExpression;) >
<!ELEMENT %mathml-munderover;         (%PresExpression;) >
<!ELEMENT %mathml-mtable;             (%PresExpression;) >
<!ELEMENT %mathml-mtr;                (%PresExpression;) >
<!ELEMENT %mathml-mlabeledtr;         (%PresExpression;) >
<!ELEMENT %mathml-mtd;                (%PresExpression;) >
<!ELEMENT %mathml-maction;            (%PresExpression;) >
<!ELEMENT %mathml-mfenced;            (%PresExpression;) >
<!ELEMENT %mathml-mpadded;            (%PresExpression;) >

<!-- Presentation elements contain PCDATA or malignmark constructs. -->

<!ELEMENT %mathml-mi;                 (%MathMLCharacters; |
                                       %mathml-malignmark;)* >
<!ELEMENT %mathml-mn;                 (%MathMLCharacters; |
                                       %mathml-malignmark;)* >
<!ELEMENT %mathml-mo;                 (%MathMLCharacters; |
                                       %mathml-malignmark;)* >
<!ELEMENT %mathml-mtext;              (%MathMLCharacters; |
                                       %mathml-malignmark;)* >
<!ELEMENT %mathml-ms;                 (%MathMLCharacters; |
                                       %mathml-malignmark;)* >

<!-- ************************************************************************ -->
<!-- Browser interface definition                                             -->
<!-- ************************************************************************ -->

<!-- Attributes for top-level element 'math' -->

<!ENTITY  % att-macros               'macros CDATA #IMPLIED' >
<!ENTITY  % att-mode                 'mode   CDATA #IMPLIED' >

<!ENTITY  % att-topinfo              '%att-global;
                                      %att-macros;
                                      %att-mode;' >

<!-- Attributes for browser interface element -->

<!ENTITY  % att-baseline             'baseline CDATA #IMPLIED' >
<!ENTITY  % att-overflow             'overflow (scroll|elide|truncate|scale) "scroll"' >
<!ENTITY  % att-altimg               'altimg CDATA #IMPLIED' >
<!ENTITY  % att-alttext              'alttext CDATA #IMPLIED' >

<!ENTITY  % att-browif               '%att-type;
                                      %att-name;
                                      %att-height;
                                      %att-width;
                                      %att-baseline;
                                      %att-overflow;
                                      %att-altimg;
                                      %att-alttext;' >

<!-- ************************************************************************ -->
<!-- The top-level element 'math' contains MathML encoded mathematics.        -->
<!-- The 'math' element has the browser info attributes iff it is             -->
<!-- also the browser interface element.                                      -->
<!-- ************************************************************************ -->

<!ELEMENT %mathml-math;               (%MathExpression;) >

<!ATTLIST %mathml-math;               %att-topinfo;
                                      %att-browif; >

 
<!-- ************************************************************************ -->
<!-- Entity sets from ISO Technical Report 9573-13                            -->
<!-- ************************************************************************ -->

<!ENTITY  % ent-isoamsa PUBLIC
    "-//W3C//ENTITIES Added Math Symbols: Arrow Relations for MathML 2.0//EN"
    "isoamsa.ent" >
%ent-isoamsa;

<!ENTITY  % ent-isoamsb PUBLIC
    "-//W3C//ENTITIES Added Math Symbols: Binary Operators for MathML 2.0//EN"
    "isoamsb.ent" >
%ent-isoamsb;

<!ENTITY  % ent-isoamsc PUBLIC
    "-//W3C//ENTITIES Added Math Symbols: Delimiters for MathML 2.0//EN"
    "isoamsc.ent" >
%ent-isoamsc;

<!ENTITY  % ent-isoamsn PUBLIC
    "-//W3C//ENTITIES Added Math Symbols: Negated Relations for MathML 2.0//EN"
    "isoamsn.ent" >
%ent-isoamsn;

<!ENTITY  % ent-isoamso PUBLIC
    "-//W3C//ENTITIES Added Math Symbols: Ordinary for MathML 2.0//EN"
    "isoamso.ent" >
%ent-isoamso;

<!ENTITY  % ent-isoamsr PUBLIC
    "-//W3C//ENTITIES Added Math Symbols: Relations for MathML 2.0//EN"
    "isoamsr.ent" >
%ent-isoamsr;

<!ENTITY  % ent-isogrk3 PUBLIC
    "-//W3C//ENTITIES Greek Symbols for MathML 2.0//EN"
    "isogrk3.ent" >
%ent-isogrk3;

<!ENTITY  % ent-isomfrk PUBLIC
    "-//W3C//ENTITIES Math Alphabets: Fraktur for MathML 2.0//EN"
    "isomfrk.ent" >
%ent-isomfrk;

<!ENTITY  % ent-isomopf PUBLIC
    "-//W3C//ENTITIES Math Alphabets: Open Face for MathML 2.0//EN"
    "isomopf.ent" >
%ent-isomopf;

<!ENTITY  % ent-isomscr PUBLIC
    "-//W3C//ENTITIES Math Alphabets: Script for MathML 2.0//EN"
    "isomscr.ent" >
%ent-isomscr;

<!ENTITY  % ent-isotech PUBLIC
    "-//W3C//ENTITIES General Technical for MathML 2.0//EN"
    "isotech.ent" >
%ent-isotech;

<!-- ************************************************************************ -->
<!-- Entity sets from informative annex to                                    -->
<!-- ISO Standard 8879:1986 (the SGML standard)                               -->
<!-- ************************************************************************ -->

<!ENTITY  % ent-isobox  PUBLIC
    "-//W3C//ENTITIES Box and Line Drawing for MathML 2.0//EN"
    "isobox.ent" >
%ent-isobox;

<!ENTITY  % ent-isocyr1 PUBLIC
    "-//W3C//ENTITIES Russian Cyrillic for MathML 2.0//EN"
    "isocyr1.ent" >
%ent-isocyr1;

<!ENTITY  % ent-isocyr2 PUBLIC
    "-//W3C//ENTITIES Non-Russian Cyrillic for MathML 2.0//EN"
    "isocyr2.ent" >
%ent-isocyr2;

<!ENTITY  % ent-isodia  PUBLIC
    "-//W3C//ENTITIES Diacritical Marks for MathML 2.0//EN"
    "isodia.ent" >
%ent-isodia;


<!ENTITY  % ent-isolat1 PUBLIC
    "-//W3C//ENTITIES Added Latin 1 for MathML 2.0//EN"
    "isolat1.ent" >
%ent-isolat1;

<!ENTITY  % ent-isolat2 PUBLIC
    "-//W3C//ENTITIES Added Latin 2 for MathML 2.0//EN"
    "isolat2.ent" >
%ent-isolat2;

<!ENTITY  % ent-isonum PUBLIC
    "-//W3C//ENTITIES Numeric and Special Graphic for MathML 2.0//EN"
    "isonum.ent" >
%ent-isonum;

<!ENTITY  % ent-isopub PUBLIC
    "-//W3C//ENTITIES Publishing for MathML 2.0//EN"
    "isopub.ent" >
%ent-isopub;

<!-- ************************************************************************ -->
<!-- MathML aliases for characters defined above                              -->
<!-- ************************************************************************ -->

<!ENTITY  % ent-mmlalias  PUBLIC
    "-//W3C//ENTITIES Aiases for MathML 2.0//EN"
    "mmlalias.ent" >
%ent-mmlalias;

<!-- ************************************************************************ -->
<!-- New characters defined by MathML                                         -->
<!-- ************************************************************************ -->

<!ENTITY  % ent-mmlextra PUBLIC
    "-//W3C//ENTITIES Extra for MathML 2.0//EN"
    "mmlextra.ent" >
%ent-mmlextra;

<!-- end of DTD fragment -->