Up: Table of Contents | Proposed Recommendation 24-Feb-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 15.December.1997  by s.buswell             -->
    <!-- revised 8.February.1998   by s.buswell             -->

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

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

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

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

    <!-- presentation 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-accent               'accent (true | false)  #IMPLIED'>

    <!ENTITY % att-align                'align CDATA #IMPLIED'           >
    <!ENTITY % att-rowalign             'rowalign CDATA #IMPLIED'    >
    <!ENTITY % att-columnalign          'columnalign 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-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 ' >

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

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

    <!ATTLIST mi        %att-fontinfo;
                        %att-globalatts;    >

    <!ATTLIST mn        %att-fontinfo;
                        %att-globalatts;    >

    <!ATTLIST mo        %att-fontinfo;
                        %att-opinfo;
                        %att-globalatts;     >

    <!ATTLIST mtext     %att-fontinfo;
                        %att-globalatts;     >

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

    <!-- empty presentation token schemata -->

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

    <!ATTLIST mspace    %att-sizeinfo;
                        %att-globalatts;       >

    <!-- presentation general layout schemata -->

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

    <!ATTLIST mrow      %att-globalatts;   >

    <!ATTLIST mfrac     %att-linethickness;
                        %att-globalatts; >

    <!ATTLIST msqrt     %att-globalatts;   >

    <!ATTLIST mroot     %att-globalatts;   >

    <!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-globalatts;          >

    <!ATTLIST merror    %att-globalatts;   >

    <!ATTLIST mpadded   %att-sizeinfo;
                        %att-lspace;
                        %att-globalatts;     >

    <!ATTLIST mphantom  %att-globalatts;     >

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

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

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

    <!ATTLIST msub      %att-subscriptshift;
                        %att-globalatts;     >

    <!ATTLIST msup      %att-superscriptshift;
                        %att-globalatts;          >

    <!ATTLIST msubsup   %att-subscriptshift;
                        %att-superscriptshift;
                        %att-globalatts;          >

    <!ATTLIST munder    %att-accentunder;
                        %att-globalatts;          >

    <!ATTLIST mover     %att-accent;
                        %att-globalatts;           >

    <!ATTLIST munderover %att-accent;
                         %att-accentunder;
                         %att-globalatts;      >

    <!ATTLIST mmultiscripts
                        %att-subscriptshift;
                        %att-superscriptshift;
                        %att-globalatts;          >

    <!-- presentation layout schemata: script empty elements -->

    <!ENTITY % pscreschema "mprescripts|none" >

    <!ELEMENT mprescripts    EMPTY          >
    <!ATTLIST mprescripts   %att-globalatts;      >

    <!ELEMENT none          EMPTY          >
    <!ATTLIST none          %att-globalatts;      >

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

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

    <!ATTLIST mtable    %att-tableinfo;
                        %att-globalatts;      >

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

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

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

    <!-- empty presentation layout schemata -->

    <!ENTITY % peschema "maligngroup | malignmark" >

    <!ELEMENT  malignmark  EMPTY          >

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

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

    <!-- presentation action schemata -->

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

    <!-- Presentation entity for substitution into content tag constructs -->
    <!-- excludes elements which 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-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-globalatts;     >

    <!ATTLIST cn   %att-type;
                   %att-base;
                   %att-globalatts;     >

    <!-- content elements - specials -->

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

    <!ATTLIST apply   %att-globalatts;     >

    <!ATTLIST reln    %att-globalatts;     >

    <!ATTLIST lambda  %att-globalatts;     >

    <!-- content elements - others -->

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

    <!ATTLIST condition       %att-globalatts;     >

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

    <!ELEMENT sep       EMPTY >
    <!ATTLIST sep       %att-globalatts;     >

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

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

    <!ATTLIST semantics         %att-definition;
                                %att-globalatts;     >

    <!ATTLIST annotation        %att-encoding;
                                %att-globalatts;     >

    <!ATTLIST annotation-xml    %att-encoding;
                                %att-globalatts;     >

    <!-- content elements - constructors -->

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

    <!ATTLIST interval     %att-closure;
                           %att-globalatts;     >

    <!ATTLIST set          %att-globalatts;     >

    <!ATTLIST list         %att-order;
                           %att-globalatts;     >

    <!ATTLIST vector       %att-globalatts;     >

    <!ATTLIST matrix       %att-globalatts;     >

    <!ATTLIST matrixrow    %att-globalatts;     >

    <!-- content elements - operators -->

    <!ENTITY % cfuncop1ary "inverse | ident " >

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

    <!ENTITY % cfuncopnary "fn |  compose" >

    <!ATTLIST fn     %att-definition;
                     %att-globalatts;     >

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

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

    <!ENTITY % carithop1ary "exp | factorial" >

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

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

    <!ENTITY % carithop1or2ary "minus" >

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

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

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

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

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

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

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

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

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

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

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

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

    <!ENTITY % carithoproot "root" >

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

    <!ENTITY % clogicopquant "exists | forall" >

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

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

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

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

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

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

    <!ENTITY % clogicop1ary "not" >

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

    <!ENTITY % clogicop2ary "implies" >

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

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

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

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

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

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

    <!ENTITY % ccalcop1ary "ln | totaldiff" >

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

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

    <!ENTITY % csetop2ary "setdiff" >

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

    <!ENTITY % csetopnary "union | intersect" >

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <!ENTITY % cstatopmoment "moment" >

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

    <!ENTITY % clalgop1ary "determinant | transpose" >

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

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

    <!ENTITY % clalgopnary "select" >

    <!ELEMENT select          EMPTY       >
    <!ATTLIST select     %att-definition;
                          %att-globalatts;     >

    <!-- content elements -  relations  -->

    <!ENTITY % cgenrel2ary "neq" >

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

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

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

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

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

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

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

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

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

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

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

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

    <!ENTITY % csetrelnary "subset | prsubset" >

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

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

    <!ENTITY % cseqrel2ary "tendsto" >

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

    <!-- content elements -  quantifiers  -->

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

    <!ATTLIST lowlimit  %att-globalatts;     >

    <!ATTLIST uplimit  %att-globalatts;     >

    <!ATTLIST bvar     %att-globalatts;     >

    <!ATTLIST degree   %att-globalatts;     >

    <!ATTLIST logbase  %att-globalatts;     >

    <!-- operator groups -->

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

    <!ENTITY % cop2ary "%carithop2ary; | %clogicop2ary;| %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 "ci | cn  | apply  | fn | lambda | reln
                        | interval | list | matrix |matrixrow
                        | set | vector" >

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

    <!-- recursive definition for content of expressions             -->
    <!-- include presentation tag constructs at lowest level         -->
    <!-- so presentation layout schemata hold presentation or Content -->
    <!-- include Content tag constructs at lowest level              -->
    <!-- so Content tokens hold PCDATA or Presentation at leaf level -->
    <!-- (for permitted substitutable elements in context)           -->

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

    <!--  content token elements (may hold embedded presentation constructs)
    -->

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

    <!--  content special elements    -->

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

    <!--  content other elements    -->

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

    <!--  content semantics elements    -->

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

    <!--  content constructor elements    -->

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

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

    <!ELEMENT fn       (%ContentExpression;)   >

    <!--  content quantifier elements    -->

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

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

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

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

    <!ELEMENT mi     (#PCDATA | malignmark )*        >
    <!ELEMENT mn     (#PCDATA | malignmark )*        >
    <!ELEMENT mo     (#PCDATA | malignmark )*        >
    <!ELEMENT mtext  (#PCDATA | malignmark )*        >
    <!ELEMENT ms     (#PCDATA | malignmark )*        >

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

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

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

    <!ENTITY  %     att-topinfo    '%att-globalatts;
                                    %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       (%MathExpression;)    >

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

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

Up: Table of Contents