Mathematical Markup Language (MathML) Version 2.0
8 Document Object Model for MathML
A Parsing MathML
A.1 The MathML DTD
B Operator Dictionary
MathML documents should be validated using the XML DTD below. Note
in particular that the 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 the MathML 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 zip file of the full DTD including entity declarations is provided for reference. Here we give the main body of the DTD, without including the entity declarations. See chapter 6 [Entities, Characters and Fonts] for a list of entity names ordered by name or by Unicode value.
<!-- ************************************************************************ --> <!-- Content model definition for content, presentation --> <!-- and browser interface elements of MathML --> <!-- --> <!-- $Id: appendixa.html,v 1.1 1999/12/22 21:48:41 ijacobs 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 --> <!-- --> <!-- Became W3C Recommendation 7 April 1998 --> <!-- ************************************************************************ --> <!-- ************************************************************************ --> <!-- Attributes shared by all elements --> <!-- ************************************************************************ --> <!ENTITY % att-global 'xmlns CDATA #IMPLIED xmlns:xlink CDATA #IMPLIED 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' > <!-- Presentation schemata with content --> <!ENTITY % ptoken 'mi | mn | mo | mtext | ms' > <!ATTLIST mi %att-fontinfo; %att-global; > <!ATTLIST mn %att-fontinfo; %att-global; > <!ATTLIST mo %att-fontinfo; %att-opinfo; %att-global; > <!ATTLIST mtext %att-fontinfo; %att-global; > <!ATTLIST ms %att-fontinfo; %att-lquote; %att-rquote; %att-global; > <!-- Empty presentation schemata --> <!ENTITY % petoken 'mspace' > <!ELEMENT mspace EMPTY > <!ATTLIST mspace %att-sizeinfo; %att-global; > <!-- Presentation: general layout schemata --> <!ENTITY % pgenschema 'mrow|mfrac|msqrt|mroot|menclose| mstyle|merror|mpadded| mphantom|mfenced' > <!ATTLIST mrow %att-global; > <!ATTLIST mfrac %att-linethickness; %att-global; > <!ATTLIST msqrt %att-global; > <!ATTLIST menclose %att-global; notation CDATA "longdiv" > <!ATTLIST mroot %att-global; > <!ATTLIST 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 merror %att-global; > <!ATTLIST mpadded %att-sizeinfo; %att-lspace; %att-global; > <!ATTLIST mphantom %att-global; > <!ATTLIST mfenced %att-open; %att-close; %att-separators; %att-global; > <!-- Presentation layout schemata: scripts and limits --> <!ENTITY % pscrschema 'msub|msup|msubsup| munder|mover|munderover|mmultiscripts' > <!ATTLIST msub %att-subscriptshift; %att-global; > <!ATTLIST msup %att-superscriptshift; %att-global; > <!ATTLIST msubsup %att-subscriptshift; %att-superscriptshift; %att-global; > <!ATTLIST munder %att-accentunder; %att-global; > <!ATTLIST mover %att-accent; %att-global; > <!ATTLIST munderover %att-accent; %att-accentunder; %att-global; > <!ATTLIST mmultiscripts %att-subscriptshift; %att-superscriptshift; %att-global; > <!-- Presentation layout schemata: empty elements for scripts --> <!ENTITY % pscreschema 'mprescripts|none' > <!ELEMENT mprescripts EMPTY > <!ELEMENT none EMPTY > <!-- Presentation layout schemata: tables --> <!ENTITY % ptabschema 'mtable|mtr|mlabeledtr|mtd' > <!ATTLIST mtable %att-tableinfo; %att-global; > <!ATTLIST mtr %att-rowalign; %att-columnalign; %att-groupalign; %att-global; > <!ATTLIST mlabeledtr %att-rowalign; %att-columnalign; %att-groupalign; %att-global; > <!ATTLIST mtd %att-rowalign; %att-columnalign; %att-groupalign; %att-rowspan; %att-columnspan; %att-global; > <!ENTITY % plschema '%pgenschema;|%pscrschema;|%ptabschema;' > <!-- Empty presentation layout schemata --> <!ENTITY % peschema 'maligngroup | malignmark' > <!ELEMENT malignmark EMPTY > <!ATTLIST malignmark %att-edge; > <!ELEMENT maligngroup EMPTY > <!ATTLIST maligngroup %att-groupalign; %att-global; > <!-- Presentation action schemata --> <!ENTITY % pactions 'maction' > <!ATTLIST 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 'csymbol|ci | cn' > <!ATTLIST ci %att-type; %att-definition; %att-global; > <!ATTLIST csymbol %att-encoding; %att-type; %att-definition; %att-global; > <!ATTLIST cn %att-type; %att-base; %att-definition; %att-global; > <!-- Content elements: specials --> <!ENTITY % cspecial 'apply | reln | lambda' > <!ATTLIST apply %att-global; > <!ATTLIST reln %att-global; > <!ATTLIST lambda %att-global; > <!-- Content elements: others --> <!ENTITY % cother 'condition | declare | sep' > <!ATTLIST condition %att-global; > <!ATTLIST declare %att-type; %att-scope; %att-nargs; %att-occurrence; %att-definition; %att-encoding; %att-global; > <!ELEMENT sep EMPTY > <!-- Content elements: semantic mapping --> <!ENTITY % csemantics 'semantics | annotation | annotation-xml' > <!ATTLIST semantics %att-definition; %att-encoding; %att-global; > <!ATTLIST annotation %att-encoding; %att-global; > <!ATTLIST annotation-xml %att-encoding; %att-global; > <!-- Content elements: constructors --> <!ENTITY % cconstructor 'interval | list | matrix | matrixrow | set | vector' > <!ATTLIST interval %att-closure; %att-global; > <!ATTLIST set %att-global; > <!ATTLIST list %att-order; %att-global; > <!ATTLIST vector %att-global; > <!ATTLIST matrix %att-global; > <!ATTLIST matrixrow %att-global; > <!-- Content elements: operators --> <!ENTITY % cfuncop1ary 'inverse | ident' > <!ELEMENT inverse EMPTY > <!ATTLIST inverse %att-definition; %att-global; > <!ENTITY % cfuncopnary 'fn | compose' > <!ATTLIST fn %att-definition; %att-global; > <!ELEMENT ident EMPTY > <!ATTLIST ident %att-definition; %att-global; > <!ELEMENT compose EMPTY > <!ATTLIST compose %att-definition; %att-global; > <!ENTITY % carithop1ary 'abs | conjugate | exp | factorial | arg | real | imaginary' > <!ELEMENT exp EMPTY > <!ATTLIST exp %att-definition; %att-global; > <!ELEMENT abs EMPTY > <!ATTLIST abs %att-definition; %att-global; > <!ELEMENT arg EMPTY > <!ATTLIST arg %att-definition; %att-global; > <!ELEMENT real EMPTY > <!ATTLIST real %att-definition; %att-global; > <!ELEMENT imaginary EMPTY > <!ATTLIST imaginary %att-definition; %att-global; > <!ELEMENT conjugate EMPTY > <!ATTLIST conjugate %att-definition; %att-global; > <!ELEMENT factorial EMPTY > <!ATTLIST factorial %att-definition; %att-global; > <!ENTITY % carithop1or2ary 'minus' > <!ELEMENT minus EMPTY > <!ATTLIST minus %att-definition; %att-global; > <!ENTITY % carithop2ary 'quotient | divide | power | rem' > <!ELEMENT quotient EMPTY > <!ATTLIST quotient %att-definition; %att-global; > <!ELEMENT divide EMPTY > <!ATTLIST divide %att-definition; %att-global; > <!ELEMENT power EMPTY > <!ATTLIST power %att-definition; %att-global; > <!ELEMENT rem EMPTY > <!ATTLIST rem %att-definition; %att-global; > <!ENTITY % carithopnary 'plus | times | max | min | gcd' > <!ELEMENT plus EMPTY > <!ATTLIST plus %att-definition; %att-global; > <!ELEMENT max EMPTY > <!ATTLIST max %att-definition; %att-global; > <!ELEMENT min EMPTY > <!ATTLIST min %att-definition; %att-global; > <!ELEMENT times EMPTY > <!ATTLIST times %att-definition; %att-global; > <!ELEMENT gcd EMPTY > <!ATTLIST gcd %att-definition; %att-global; > <!ENTITY % carithoproot 'root' > <!ELEMENT root EMPTY > <!ATTLIST root %att-definition; %att-global; > <!ENTITY % clogicopquant 'exists | forall' > <!ELEMENT exists EMPTY > <!ATTLIST exists %att-definition; %att-global; > <!ELEMENT forall EMPTY > <!ATTLIST forall %att-definition; %att-global; > <!ENTITY % clogicopnary 'and | or | xor' > <!ELEMENT and EMPTY > <!ATTLIST and %att-definition; %att-global; > <!ELEMENT or EMPTY > <!ATTLIST or %att-definition; %att-global; > <!ELEMENT xor EMPTY > <!ATTLIST xor %att-definition; %att-global; > <!ENTITY % clogicop1ary 'not' > <!ELEMENT not EMPTY > <!ATTLIST not %att-definition; %att-global; > <!ENTITY % clogicop2ary 'implies' > <!ELEMENT implies EMPTY > <!ATTLIST implies %att-definition; %att-global; > <!ENTITY % ccalcop 'log | int | diff | partialdiff | divergence | grad | curl | laplacian' > <!ELEMENT divergence EMPTY > <!ATTLIST divergence %att-definition; %att-global; > <!ELEMENT grad EMPTY > <!ATTLIST grad %att-definition; %att-global; > <!ELEMENT curl EMPTY > <!ATTLIST curl %att-definition; %att-global; > <!ELEMENT laplacian EMPTY > <!ATTLIST laplacian %att-definition; %att-global; > <!ELEMENT log EMPTY > <!ATTLIST log %att-definition; %att-global; > <!ELEMENT int EMPTY > <!ATTLIST int %att-definition; %att-global; > <!ELEMENT diff EMPTY > <!ATTLIST diff %att-definition; %att-global; > <!ELEMENT partialdiff EMPTY > <!ATTLIST partialdiff %att-definition; %att-global; > <!ENTITY % ccalcop1ary 'ln' > <!ELEMENT ln EMPTY > <!ATTLIST ln %att-definition; %att-global; > <!ENTITY % csetop1ary 'card' > <!ELEMENT card EMPTY > <!ATTLIST card %att-definition; %att-global; > <!ENTITY % csetop2ary 'setdiff' > <!ELEMENT setdiff EMPTY > <!ATTLIST setdiff %att-definition; %att-global; > <!ENTITY % csetopnary 'union | intersect' > <!ELEMENT union EMPTY > <!ATTLIST union %att-definition; %att-global; > <!ELEMENT intersect EMPTY > <!ATTLIST intersect %att-definition; %att-global; > <!ENTITY % cseqop 'sum | product | limit' > <!ELEMENT sum EMPTY > <!ATTLIST sum %att-definition; %att-global; > <!ELEMENT product EMPTY > <!ATTLIST product %att-definition; %att-global; > <!ELEMENT limit EMPTY > <!ATTLIST limit %att-definition; %att-global; > <!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-global; > <!ELEMENT cos EMPTY > <!ATTLIST cos %att-definition; %att-global; > <!ELEMENT tan EMPTY > <!ATTLIST tan %att-definition; %att-global; > <!ELEMENT sec EMPTY > <!ATTLIST sec %att-definition; %att-global; > <!ELEMENT csc EMPTY > <!ATTLIST csc %att-definition; %att-global; > <!ELEMENT cot EMPTY > <!ATTLIST cot %att-definition; %att-global; > <!ELEMENT sinh EMPTY > <!ATTLIST sinh %att-definition; %att-global; > <!ELEMENT cosh EMPTY > <!ATTLIST cosh %att-definition; %att-global; > <!ELEMENT tanh EMPTY > <!ATTLIST tanh %att-definition; %att-global; > <!ELEMENT sech EMPTY > <!ATTLIST sech %att-definition; %att-global; > <!ELEMENT csch EMPTY > <!ATTLIST csch %att-definition; %att-global; > <!ELEMENT coth EMPTY > <!ATTLIST coth %att-definition; %att-global; > <!ELEMENT arcsin EMPTY > <!ATTLIST arcsin %att-definition; %att-global; > <!ELEMENT arccos EMPTY > <!ATTLIST arccos %att-definition; %att-global; > <!ELEMENT arctan EMPTY > <!ATTLIST arctan %att-definition; %att-global; > <!ENTITY % cstatopnary 'mean | sdev | variance | median | mode' > <!ELEMENT mean EMPTY > <!ATTLIST mean %att-definition; %att-global; > <!ELEMENT sdev EMPTY > <!ATTLIST sdev %att-definition; %att-global; > <!ELEMENT variance EMPTY > <!ATTLIST variance %att-definition; %att-global; > <!ELEMENT median EMPTY > <!ATTLIST median %att-definition; %att-global; > <!ELEMENT mode EMPTY > <!ATTLIST mode %att-definition; %att-global; > <!ENTITY % cstatopmoment 'moment' > <!ELEMENT moment EMPTY > <!ATTLIST moment %att-definition; %att-global; > <!ENTITY % clalgop1ary 'determinant | transpose' > <!ELEMENT determinant EMPTY > <!ATTLIST determinant %att-definition; %att-global; > <!ELEMENT transpose EMPTY > <!ATTLIST transpose %att-definition; %att-global; > <!ENTITY % clalgop2ary 'vectorproduct | scalarproduct | outerproduct' > <!ELEMENT vectorproduct EMPTY > <!ATTLIST vectorproduct %att-definition; %att-global; > <!ELEMENT scalarproduct EMPTY > <!ATTLIST scalarproduct %att-definition; %att-global; > <!ELEMENT outerproduct EMPTY > <!ATTLIST outerproduct %att-definition; %att-global; > <!ENTITY % clalgopnary 'selector' > <!ELEMENT selector EMPTY > <!ATTLIST selector %att-definition; %att-global; > <!-- Content elements: relations --> <!ENTITY % cgenrel2ary 'neq' > <!ELEMENT neq EMPTY > <!ATTLIST neq %att-definition; %att-global; > <!ENTITY % cgenrelnary 'eq | leq | lt | geq | gt| equivalent | approx' > <!ELEMENT eq EMPTY > <!ATTLIST eq %att-definition; %att-global; > <!ELEMENT equivalent EMPTY > <!ATTLIST equivalent %att-definition; %att-global; > <!ELEMENT approx EMPTY > <!ATTLIST approx %att-definition; %att-global; > <!ELEMENT gt EMPTY > <!ATTLIST gt %att-definition; %att-global; > <!ELEMENT lt EMPTY > <!ATTLIST lt %att-definition; %att-global; > <!ELEMENT geq EMPTY > <!ATTLIST geq %att-definition; %att-global; > <!ELEMENT leq EMPTY > <!ATTLIST leq %att-definition; %att-global; > <!ENTITY % csetrel2ary 'in | notin | notsubset | notprsubset' > <!ELEMENT in EMPTY > <!ATTLIST in %att-definition; %att-global; > <!ELEMENT notin EMPTY > <!ATTLIST notin %att-definition; %att-global; > <!ELEMENT notsubset EMPTY > <!ATTLIST notsubset %att-definition; %att-global; > <!ELEMENT notprsubset EMPTY > <!ATTLIST notprsubset %att-definition; %att-global; > <!ENTITY % csetrelnary 'subset | prsubset' > <!ELEMENT subset EMPTY > <!ATTLIST subset %att-definition; %att-global; > <!ELEMENT prsubset EMPTY > <!ATTLIST prsubset %att-definition; %att-global; > <!ENTITY % cseqrel2ary 'tendsto' > <!ELEMENT tendsto EMPTY > <!ATTLIST tendsto %att-definition; %att-type; %att-global; > <!-- Content elements: quantifiers --> <!ENTITY % cquantifier 'lowlimit | uplimit | bvar | degree | logbase' > <!ATTLIST lowlimit %att-global; > <!ATTLIST uplimit %att-global; > <!ATTLIST bvar %att-global; > <!ATTLIST degree %att-global; > <!ATTLIST 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 'ci |csymbol| cn | apply | fn | lambda | reln | interval | list | matrix | matrixrow | set | vector | semantics |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;)*' > <!-- Content elements: tokens --> <!-- (may contain embedded presentation constructs) --> <!ELEMENT ci (#PCDATA | %PresInCont;)* > <!ELEMENT csymbol (#PCDATA | %PresInCont;|ci)* > <!-- ci ? --> <!ELEMENT cn (#PCDATA | sep | %PresInCont;)* > <!-- Content elements: special --> <!ELEMENT apply (%ContentExpression;) > <!ELEMENT reln (%ContentExpression;) > <!ELEMENT lambda (%ContentExpression;) > <!-- Content elements: other --> <!ELEMENT condition (%ContentExpression;) > <!ELEMENT declare (%ContentExpression;) > <!-- Content elements: semantics --> <!ELEMENT semantics (%ContentExpression;) > <!ELEMENT annotation (#PCDATA) > <!ELEMENT annotation-xml ANY > <!-- Content elements: constructors --> <!ELEMENT interval (%ContentExpression;) > <!ELEMENT set (%ContentExpression;) > <!ELEMENT list (%ContentExpression;) > <!ELEMENT vector (%ContentExpression;) > <!ELEMENT matrix (%ContentExpression;) > <!ELEMENT matrixrow (%ContentExpression;) > <!-- Content elements: operator (user-defined) --> <!ELEMENT fn (%ContentExpression;) > <!-- Content elements: quantifiers --> <!ELEMENT lowlimit (%ContentExpression;) > <!ELEMENT uplimit (%ContentExpression;) > <!ELEMENT bvar (%ContentExpression;) > <!ELEMENT degree (%ContentExpression;) > <!ELEMENT logbase (%ContentExpression;) > <!-- ************************************************************************ --> <!-- Presentation layout schemata contain tokens, --> <!-- layout and content schemata. --> <!-- ************************************************************************ --> <!ELEMENT mstyle (%PresExpression;) > <!ELEMENT merror (%PresExpression;) > <!ELEMENT mphantom (%PresExpression;) > <!ELEMENT mrow (%PresExpression;) > <!ELEMENT mfrac (%PresExpression;) > <!ELEMENT msqrt (%PresExpression;) > <!ELEMENT menclose (%PresExpression;) > <!ELEMENT mroot (%PresExpression;) > <!ELEMENT msub (%PresExpression;) > <!ELEMENT msup (%PresExpression;) > <!ELEMENT msubsup (%PresExpression;) > <!ELEMENT mmultiscripts (%PresExpression;) > <!ELEMENT munder (%PresExpression;) > <!ELEMENT mover (%PresExpression;) > <!ELEMENT munderover (%PresExpression;) > <!ELEMENT mtable (%PresExpression;) > <!ELEMENT mtr (%PresExpression;) > <!ELEMENT mlabeledtr (%PresExpression;) > <!ELEMENT mtd (%PresExpression;) > <!ELEMENT maction (%PresExpression;) > <!ELEMENT mfenced (%PresExpression;) > <!ELEMENT mpadded (%PresExpression;) > <!-- Presentation elements 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 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-name 'name CDATA #IMPLIED' > <!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 math (%MathExpression;) > <!ATTLIST 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 -->