[This local archive copy mirrored from the canonical site: http://www.w3.org/TR/WD-math/appendixA.html; links may not have complete integrity, so use the canonical document at this URL if possible.]

Up: Table of Contents Working Draft 6-Jan-98

MathML DTD

<!-- Content model for content and presentation        -->
<!--  and browser interface tags in MathML              -->
<!-- status = draft. date = 9.May.1997 syntax = XML     -->
<!-- author = s.buswell sb@stilo.demon.co.uk            -->
<!-- revised 14.May.1997 by Robert Miner                -->
<!-- revised 29.June.1997 and 2.July.1997 by s.buswell  -->
<!--                                                    -->
<!-- revised 20-21.December.1997  by s.buswell          -->
<!--                                                    -->

<!-- *************************************************  -->

<!-- general attribute definitions for class & style & other -->
<!-- : attributes shared by all mathml elements        -->

<!ENTITY % att-class-style      'class CDATA #IMPLIED
                                 style CDATA #IMPLIED
                                 other CDATA #IMPLIED'  >

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

<!-- presentation attribute definitions -->

<!ENTITY % att-fontsize        'fontsize CDATA #IMPLIED' >
<!ENTITY % att-fontweight      'fontweight (plain | bold) "plain"' >
<!ENTITY % att-fontslant       'fontslant (plain | italic) #IMPLIED' >
<!ENTITY % att-fontfamily      'fontfamily CDATA   #IMPLIED'      >
<!ENTITY % att-fontcolor       'fontcolor CDATA   #IMPLIED'       >

<!ENTITY % att-fontinfo      '%att-fontsize;
                             %att-fontweight;
                             %att-fontslant;
                             %att-fontfamily;
                                                         %att-fontcolor;'  >

<!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-symetric    'symetric (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-symetric;
                        %att-maxsize;
                        %att-minsize;
                        %att-largeop;
                        %att-movablelimits;
                                            %att-accent;'         >

<!ENTITY % att-width             'width CDATA "0"'   >
<!ENTITY % att-height            'height CDATA "0"' >
<!ENTITY % att-depth             'depth CDATA "0"'   >

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

<!ENTITY % att-lquote              'lquote CDATA """'   >
<!ENTITY % att-rquote              'rquote CDATA """'   >

<!ENTITY % att-linethickness        'linethickness CDATA "1"' >

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

<!ENTITY % att-open                 'open CDATA "("' >
<!ENTITY % att-close                'close CDATA ")"' >
<!ENTITY % att-separators           'separators CDATA ","' >

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

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

<!ENTITY % att-align                'align CDATA "axis"'           >
<!ENTITY % att-rowalign             'rowalign CDATA #IMPLIED'    >
<!ENTITY % att-columnalign          'columnalign CDATA #IMPLIED'   >
<!ENTITY % att-groupalign           'groupalign CDATA "{left}"'    >
<!ENTITY % att-alignmentscope       'alignmentscope CDATA "true"'  >

<!ENTITY % att-rowspacing           'rowspacing CDATA "1.0"'      >
<!ENTITY % att-columnspacing        'columnspacing CDATA "0.8"'   >
<!ENTITY % att-rowlines             'rowlines CDATA "none"'           >
<!ENTITY % att-columnlines          'columnlines CDATA "none"'         >
<!ENTITY % att-frame                'frame (none | solid | dashed)
"none"'  >
<!ENTITY % att-framespacing         'framespacing CDATA "0.4 0.5"'       >
<!ENTITY % att-equalrows            'equalrows CDATA "true"'         >
<!ENTITY % att-equalcolumns         'equalcolumns CDATA "true"'     >

<!ENTITY % att-tableinfo           '%att-align;
                                   %att-rowalign;
                                   %att-columnalign;
                                   %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 "1"'         >
<!ENTITY % att-columnspan           'columnspan CDATA "1"'      >

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

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

<!-- presentation token schemata with content-->

<!ENTITY % ptoken "mi | mn | mo | mtext | ms" >

<!ATTLIST mi        %att-fontinfo;
                    %att-class-style;    >

<!ATTLIST mn        %att-fontinfo;
                    %att-class-style;    >


<!ATTLIST mo        %att-fontinfo;
                    %att-opinfo;
                    %att-class-style;     >

<!ATTLIST mtext     %att-fontinfo;
                    %att-class-style;     >

<!ATTLIST ms        %att-fontinfo;
                    %att-lquote;
                    %att-rquote;
                    %att-class-style;          >

<!-- empty presentation token schemata -->

<!ENTITY % petoken  "mspace" >
<!ELEMENT mspace     EMPTY  >

<!ATTLIST mspace    %att-sizeinfo;
                    %att-class-style;       >

<!-- presentation general layout schemata -->

<!ENTITY % pgenschema "mrow|mfrac|msqrt|mroot|
                    mstyle|merror|mpadded| mphantom|mfenced" >

<!ATTLIST mrow      %att-class-style;   >

<!ATTLIST mfrac     %att-linethickness;
                    %att-class-style; >

<!ATTLIST msqrt     %att-class-style;   >

<!ATTLIST mroot     %att-class-style;   >

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

<!ATTLIST merror    %att-class-style;   >

<!ATTLIST mpadded   %att-sizeinfo;
                    %att-lspace;
                    %att-class-style;     >

<!ATTLIST mphantom  %att-class-style;     >


<!ATTLIST mfenced   %att-open;
                    %att-close;
                    %att-separators;
                    %att-class-style;     >

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

<!ENTITY % pscrschema  "msub|msup|msubsup|
                    munder|mover|munderover|mmultiscripts" >

<!ATTLIST msub      %att-subscriptshift;
                    %att-class-style;     >

<!ATTLIST msup      %att-superscriptshift;
                    %att-class-style;          >

<!ATTLIST msubsup   %att-subscriptshift;
                    %att-superscriptshift;
                    %att-class-style;          >

<!ATTLIST munder    %att-accentunder;
                    %att-class-style;          >

<!ATTLIST mover     %att-accent;
                    %att-class-style;           >

<!ATTLIST munderover %att-accent;
                     %att-accentunder;
                     %att-class-style;      >

<!ATTLIST mmultiscripts
                    %att-subscriptshift;
                    %att-superscriptshift;
                    %att-class-style;          >

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

<!ENTITY % ptabschema "mtable|mtr|mtd" >

<!ATTLIST mtable    %att-tableinfo;
                    %att-class-style;      >

<!ATTLIST mtr       %att-rowalign;
                    %att-columnalign;
                    %att-groupalign;
                    %att-class-style; >

<!ATTLIST mtd       %att-rowalign;
                    %att-columnalign;
                    %att-groupalign;
                    %att-rowspan;
                    %att-columnspan;
                    %att-class-style;   >

<!ENTITY % plschema  "%pgenschema|%pscrschema|%ptabschema" >

<!-- empty presentation layout schemata -->

<!ENTITY % peschema "maligngroup | malignmark" >

<!ELEMENT  malignmark  EMPTY          >

<!ATTLIST malignmark    %att-edge;
                        %att-class-style;      >

<!ELEMENT maligngroup    EMPTY          >
<!ATTLIST maligngroup   %att-groupalign;
                        %att-class-style;      >


<!-- presentation action schemata -->

<!ENTITY % pactions "maction" >
<!ATTLIST maction   %att-actiontype;
                    %att-selection;
                    %att-class-style;     >


<!-- Presentation entity for substitution into content tag constructs -->

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



<!-- *************************************************  -->
<!-- Content tag element set -->
<!-- attribute definitions   -->

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


<!-- content leaf token elements -->

<!ENTITY % ctoken "ci | cn" >

<!ATTLIST ci   %att-type;
               %att-class-style;     >

<!ATTLIST cn   %att-type;
               %att-base;
               %att-class-style;     >

<!-- content elements - specials -->

<!ENTITY % cspecial "apply | relation | lambda" >

<!ATTLIST apply   %att-class-style;     >

<!ATTLIST relation       %att-class-style;     >

<!ATTLIST lambda  %att-class-style;     >

<!-- content elements - others -->

<!ENTITY % cother "condition | declare | sep" >

<!ATTLIST condition       %att-class-style;     >

<!ATTLIST declare         %att-type;
                          %att-scope;
                          %att-nargs;
                          %att-occurence;
                          %att-definition;
                          %att-class-style;     >

<!ELEMENT sep       EMPTY >
<!ATTLIST sep       %att-class-style;     >

<!-- content elements - semantic mapping -->

<!ENTITY % csemantics "semantics | annotation | xml-annotation" >

<!ATTLIST semantics        %att-definition;
                             %att-class-style;     >

<!ATTLIST annotation       %att-encoding;
                            %att-class-style;     >

<!ATTLIST xml-annotation       %att-encoding;
                            %att-class-style;     >


<!-- content elements - constructors -->

<!ENTITY % cconstructor "interval | list | matrix | matrixrow | set |
vector" >

<!ATTLIST interval     %att-closure;
                       %att-class-style;     >

<!ATTLIST set          %att-class-style;     >

<!ATTLIST list         %att-order;
                       %att-class-style;     >

<!ATTLIST vector       %att-class-style;     >

<!ATTLIST matrix       %att-class-style;     >

<!ATTLIST matrixrow    %att-class-style;     >

<!-- content elements - operators -->

<!ENTITY % cfuncop1ary "inverse" >

<!ELEMENT inverse          EMPTY       >
<!ATTLIST inverse     %att-definition;
                      %att-class-style;     >

<!ENTITY % cfuncopnary "fn" >

<!ATTLIST fn     %att-definition;
                 %att-class-style;     >

<!ENTITY % carithop1ary "exp | factorial | minus" >

<!ELEMENT exp          EMPTY       >
<!ATTLIST exp         %att-definition;
                      %att-class-style;     >

<!ELEMENT factorial          EMPTY       >
<!ATTLIST factorial   %att-definition;
                      %att-class-style;     >

<!ELEMENT minus       EMPTY       >
<!ATTLIST minus       %att-definition;
                      %att-class-style;     >

<!ENTITY % carithop2ary "quotient | divide | minus | power | rem" >

<!ELEMENT idiv          EMPTY       >
<!ATTLIST idiv       %att-definition;
                     %att-class-style;     >

<!ELEMENT over          EMPTY       >
<!ATTLIST over       %att-definition;
                     %att-class-style;     >

<!ELEMENT power          EMPTY       >
<!ATTLIST power       %att-definition;
                     %att-class-style;     >

<!ELEMENT rem          EMPTY       >
<!ATTLIST rem       %att-definition;
                     %att-class-style;     >

<!ENTITY % carithopnary "plus | times | max | min | gcd" >

<!ELEMENT plus          EMPTY       >
<!ATTLIST plus     %att-definition;
                      %att-class-style;     >

<!ELEMENT max          EMPTY       >
<!ATTLIST max     %att-definition;
                      %att-class-style;     >

<!ELEMENT min          EMPTY       >
<!ATTLIST min     %att-definition;
                      %att-class-style;     >

<!ELEMENT times          EMPTY       >
<!ATTLIST times     %att-definition;
                      %att-class-style;     >

<!ELEMENT gcd          EMPTY       >
<!ATTLIST gcd     %att-definition;
                      %att-class-style;     >

<!ENTITY % carithoproot "root" >

<!ELEMENT root          EMPTY       >
<!ATTLIST root     %att-definition;
                      %att-class-style;     >

<!ENTITY % clogicopnary "and | or | xor" >

<!ELEMENT and          EMPTY       >
<!ATTLIST and     %att-definition;
                      %att-class-style;     >

<!ELEMENT or          EMPTY       >
<!ATTLIST or     %att-definition;
                      %att-class-style;     >

<!ELEMENT xor          EMPTY       >
<!ATTLIST xor     %att-definition;
                      %att-class-style;     >

<!ENTITY % clogicop1ary "not" >

<!ELEMENT not          EMPTY       >
<!ATTLIST not     %att-definition;
                      %att-class-style;     >

<!ENTITY % clogicop2ary "implies" >

<!ELEMENT implies          EMPTY       >
<!ATTLIST implies     %att-definition;
                      %att-class-style;     >

<!ENTITY % ccalcop "log | int | diff | partialdiff" >

<!ELEMENT log          EMPTY       >
<!ATTLIST log     %att-definition;
                      %att-class-style;     >

<!ELEMENT int          EMPTY       >
<!ATTLIST int     %att-definition;
                      %att-class-style;     >

<!ELEMENT diff          EMPTY       >
<!ATTLIST diff     %att-definition;
                      %att-class-style;     >

<!ELEMENT partialdiff          EMPTY       >
<!ATTLIST partialdiff     %att-definition;
                      %att-class-style;     >

<!ENTITY % ccalcop1ary "ln | totaldiff" >

<!ELEMENT ln          EMPTY       >
<!ATTLIST ln     %att-definition;
                      %att-class-style;     >

<!ELEMENT totaldiff          EMPTY       >
<!ATTLIST totaldiff     %att-definition;
                      %att-class-style;     >

<!ENTITY % csetop2ary "setdiff" >

<!ELEMENT setdiff          EMPTY       >
<!ATTLIST setdiff     %att-definition;
                      %att-class-style;     >

<!ENTITY % csetopnary "union | intersect" >

<!ELEMENT union          EMPTY       >
<!ATTLIST union     %att-definition;
                      %att-class-style;     >

<!ELEMENT intersect          EMPTY       >
<!ATTLIST intersect     %att-definition;
                      %att-class-style;     >

<!ENTITY % cseqop "sum | product | limit" >

<!ELEMENT sum          EMPTY       >
<!ATTLIST sum     %att-definition;
                      %att-class-style;     >

<!ELEMENT product          EMPTY       >
<!ATTLIST product     %att-definition;
                      %att-class-style;     >

<!ELEMENT limit          EMPTY       >
<!ATTLIST limit     %att-definition;
                      %att-class-style;     >

<!ENTITY % ctrigop "sin | cos | tan | sec | cosec | cotan | sinh
                | cosh | tanh | sech | cosech | cotanh
                | arcsin | arccos | arctan" >

<!ELEMENT sin          EMPTY       >
<!ATTLIST sin     %att-definition;
                      %att-class-style;     >

<!ELEMENT cos          EMPTY       >
<!ATTLIST cos     %att-definition;
                      %att-class-style;     >

<!ELEMENT tan          EMPTY       >
<!ATTLIST tan     %att-definition;
                      %att-class-style;     >

<!ELEMENT sec          EMPTY       >
<!ATTLIST sec     %att-definition;
                      %att-class-style;     >

<!ELEMENT cosec          EMPTY       >
<!ATTLIST cosec     %att-definition;
                      %att-class-style;     >

<!ELEMENT cotan          EMPTY       >
<!ATTLIST cotan     %att-definition;
                      %att-class-style;     >

<!ELEMENT sinh          EMPTY       >
<!ATTLIST sinh     %att-definition;
                      %att-class-style;     >

<!ELEMENT cosh          EMPTY       >
<!ATTLIST cosh     %att-definition;
                      %att-class-style;     >

<!ELEMENT tanh          EMPTY       >
<!ATTLIST tanh     %att-definition;
                      %att-class-style;     >

<!ELEMENT sech          EMPTY       >
<!ATTLIST sech     %att-definition;
                      %att-class-style;     >

<!ELEMENT cosech          EMPTY       >
<!ATTLIST cosech     %att-definition;
                      %att-class-style;     >

<!ELEMENT cotanh          EMPTY       >
<!ATTLIST cotanh     %att-definition;
                      %att-class-style;     >

<!ELEMENT arcsin          EMPTY       >
<!ATTLIST arcsin     %att-definition;
                      %att-class-style;     >

<!ELEMENT arccos          EMPTY       >
<!ATTLIST arccos     %att-definition;
                      %att-class-style;     >

<!ELEMENT arctan          EMPTY       >
<!ATTLIST arctan     %att-definition;
                      %att-class-style;     >

<!ENTITY % cstatopnary "mean | sdev | var | median | mode" >

<!ELEMENT mean          EMPTY       >
<!ATTLIST mean     %att-definition;
                      %att-class-style;     >

<!ELEMENT sdev          EMPTY       >
<!ATTLIST sdev     %att-definition;
                      %att-class-style;     >

<!ELEMENT var          EMPTY       >
<!ATTLIST var     %att-definition;
                      %att-class-style;     >

<!ELEMENT median          EMPTY       >
<!ATTLIST median     %att-definition;
                      %att-class-style;     >

<!ELEMENT mode          EMPTY       >
<!ATTLIST mode     %att-definition;
                      %att-class-style;     >

<!ENTITY % cstatopmoment "moment" >

<!ELEMENT moment          EMPTY       >
<!ATTLIST moment     %att-definition;
                      %att-class-style;     >

<!ENTITY % clalgop1ary "determinant | transpose" >

<!ELEMENT determinant          EMPTY       >
<!ATTLIST determinant     %att-definition;
                      %att-class-style;     >

<!ELEMENT transpose          EMPTY       >
<!ATTLIST transpose     %att-definition;
                      %att-class-style;     >

<!-- content elements -  relations  -->

<!ENTITY % cgenrel2ary "neq" >

<!ELEMENT neq          EMPTY       >
<!ATTLIST neq     %att-definition;
                      %att-class-style;     >

<!ENTITY % cgenrelnary "eq | leq | lt | geq | gt" >

<!ELEMENT eq          EMPTY       >
<!ATTLIST eq     %att-definition;
                      %att-class-style;     >

<!ELEMENT gt          EMPTY       >
<!ATTLIST gt     %att-definition;
                      %att-class-style;     >

<!ELEMENT lt          EMPTY       >
<!ATTLIST lt     %att-definition;
                      %att-class-style;     >

<!ELEMENT geq          EMPTY       >
<!ATTLIST geq     %att-definition;
                      %att-class-style;     >

<!ELEMENT leq          EMPTY       >
<!ATTLIST leq     %att-definition;
                      %att-class-style;     >


<!ENTITY % csetrel2ary "in | notin | notsubset | notprsubset" >

<!ELEMENT in          EMPTY       >
<!ATTLIST in     %att-definition;
                      %att-class-style;     >

<!ELEMENT notin          EMPTY       >
<!ATTLIST notin     %att-definition;
                      %att-class-style;     >

<!ELEMENT notsubset          EMPTY       >
<!ATTLIST notsubset     %att-definition;
                      %att-class-style;     >

<!ELEMENT notprsubset          EMPTY       >
<!ATTLIST notprsubset     %att-definition;
                      %att-class-style;     >


<!ENTITY % csetrelnary "subset | prsubset" >

<!ELEMENT subset          EMPTY       >
<!ATTLIST subset     %att-definition;
                      %att-class-style;     >

<!ELEMENT prsubset          EMPTY       >
<!ATTLIST prsubset     %att-definition;
                      %att-class-style;     >

<!ENTITY % cseqrel2ary "tendsto" >

<!ELEMENT tendsto          EMPTY       >
<!ATTLIST tendsto     %att-definition;
                      %att-type;
                      %att-class-style;     >

<!-- content elements -  quantifiers  -->

<!ENTITY % cquantifier "lowlimit | uplimit | bvar | degree | logbase" >

<!ATTLIST lowlimit  %att-class-style;     >

<!ATTLIST uplimit  %att-class-style;     >

<!ATTLIST bvar     %att-class-style;     >

<!ATTLIST degree   %att-class-style;     >

<!ATTLIST logbase  %att-class-style;     >

<!-- operator groups -->

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

<!ENTITY % cop2ary "%carithop2ary; | %clogicop2ary;| %csetop2ary; " >

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

<!ENTITY % copmisc "%carithoproot; | %ccalcop; | %cseqop; |
%cstatopmoment; " >

<!-- relation groups -->

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

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

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

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



<!-- *************************************************  -->

<!-- recursive definition for content of expressions           -->
<!-- include presentation tag constructs at lowest level         -->
<!-- so presentation tokens hold PCDATA or Content at leaf level -->
<!-- include Content tag constructs at lowest level             -->
<!-- so Content tokens hold PCDATA or Presentation at leaf level -->

<!ENTITY % MathExpression   "%Presentation; |%Content; "          >

<!ENTITY % MathContent      "(%MathExpression;)*"        >

<!--  content token elements    -->

<!ELEMENT ci       (#PCDATA | %Presentation;)*   >
<!ELEMENT cn       (#PCDATA | sep | %Presentation;)*   >

<!--  content special elements    -->

<!ELEMENT apply      (%MathContent;)   >
<!ELEMENT relation   (%MathContent;)   >
<!ELEMENT lambda     (%MathContent;)   >

<!--  content other elements    -->

<!ELEMENT condition      (%MathContent;)   >
<!ELEMENT declare        (%MathContent;)   >

<!--  content semantics elements    -->

<!ELEMENT semantics              (%MathContent;)   >
<!ELEMENT annotation             (%MathContent;)   >
<!ELEMENT xml-annotation         (%MathContent;)   >

<!--  content constructor elements    -->

<!ELEMENT interval       (%MathContent;)   >
<!ELEMENT set            (%MathContent;)   >
<!ELEMENT list           (%MathContent;)   >
<!ELEMENT vector         (%MathContent;)   >
<!ELEMENT matrix         (%MathContent;)   >
<!ELEMENT matrixrow      (%MathContent;)   >

<!--  content operator element (user-defined)    -->

<!ELEMENT fn       (%MathContent;)   >

<!--  content qualiifier elements    -->

<!ELEMENT lowlimit       (%MathContent;)   >
<!ELEMENT uplimit        (%MathContent;)   >
<!ELEMENT bvar           (%MathContent;)   >
<!ELEMENT degree         (%MathContent;)   >
<!ELEMENT logbase        (%MathContent;)   >


<!-- *************************************************  -->
<!-- presentation layout schema contain tokens, layout and content
schemata  -->

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

<!-- presentation tokens contain PCDATA or Content constructs -->

<!ELEMENT mi     (#PCDATA | %Content;)*                        >
<!ELEMENT mn     (#PCDATA | %Content;)*                        >
<!ELEMENT mo     (#PCDATA | %Content;)*                        >
<!ELEMENT mtext  (#PCDATA | %Content;)*                        >
<!ELEMENT ms     (#PCDATA | %Content;)*                        >

<!-- *************************************************  -->
<!-- browser interface definition -->

<!-- attributes for top level math element -->

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

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

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

<!ENTITY  %     att-name        'name CDATA #IMPLIED' >
<!ENTITY  %     att-height      'height CDATA #IMPLIED' >
<!ENTITY  %     att-width       'width CDATA #IMPLIED' >
<!ENTITY  %     att-baseline    'baseline CDATA #IMPLIED' >
<!ENTITY  %     att-overflow    'overflow
(pan|scroll|elide|truncate|scale) "pan"' >
<!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 math  element      -->
<!-- math  contains MathML encoded mathematics -->
<!-- math has the browser info attributes iff it is the
    browser interface element also -->

<!ELEMENT math       (%MathContent;)    >

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

<!-- end of DTD fragment -->
<!-- *************************************************  -->


Up: Table of Contents