Warning: This DTD fragment should be regarded as a placeholder. Since the HTML-Math working group expects to incorporate revisions based on internal and external review in a subsequent working draft (anticipated by July, 1997), this DTD fragment will be replaced by an authoritative one which finalizes the syntax of MathML. At present, in places where the usage described in the MathML working draft differs from that described in the DTD fragment, precedence should be given to the text.
<!-- Content model for content and presentation tags in MATH element of MathML --> <!-- status = draft. date = 9.May.1997 syntax = XML --> <!-- author = s.buswell sb@stilo.demon.co.uk --> <!-- revised 14.May.1997 by Robert Miner --> <!-- Presentation tag element set --> <!-- tokens --> <!ENTITY % token "mi | mn | mo | mf | mtext | ms" > <!ELEMENT mi (#PCDATA) > <!ELEMENT mn (#PCDATA) > <!ELEMENT mo (#PCDATA) > <!ELEMENT mf (#PCDATA) > <!ELEMENT mtext (#PCDATA) > <!ELEMENT ms (#PCDATA) > <!-- empty tokens --> <!ENTITY % etoken "mspace" > <!ELEMENT mspace EMPTY > <!-- layout schema --> <!ENTITY % lschema "mstyle|merror|mphantom|mrow|mfrac| msqrt|mroot|msub|msup|msubsup|mmultiscripts| munder|mover|munderover|mtable|mtr|mtd" > <!-- empty layout schema --> <!ENTITY % eschema "mprescripts | none" > <!ELEMENT mprescripts EMPTY > <!ELEMENT none EMPTY > <!-- layout schema content models are given after the content definitions, since layout schema can containg content schema --> <!-- Presentation entity for substitution into content tag constructs --> <!ENTITY % Presentation "(%token; | %etoken; | %lschema; | %eschema;)*" > <!-- presentation attribute definitions --> <!ATTLIST mi fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (upright | italic) "upright" fontfamily CDATA #IMPLIED fontcolor CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST mn fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (upright | italic) "upright" fontfamily CDATA #IMPLIED fontcolor CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST mo fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (upright | italic) "upright" fontfamily CDATA #IMPLIED fontcolor CDATA #IMPLIED lspace CDATA ".277777" rspace CDATA ".277777" stretchy (true | false) "false" symetric (sym | asym) "sym" maxsize CDATA "infinity" minsize CDATA "0" form CDATA #IMPLIED largeop CDATA "false" movablelimits (movable | fixed) "fixed" other CDATA #IMPLIED > <!ATTLIST mf fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (upright | italic) "upright" fontfamily CDATA #IMPLIED lspace CDATA "5/18" rspace CDATA "5/18" stretchy (true | false) false symetric (sym | asym) sym maxsize CDATA "infinity" minsize CDATA "0" other CDATA #IMPLIED > <!ATTLIST mtext fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (upright | italic) "upright" fontfamily CDATA #IMPLIED fontcolor CDATA #IMPLIED lspace CDATA "5/18" rspace CDATA "5/18" other CDATA #IMPLIED > <!ATTLIST mspace width CDATA "0" height CDATA "0" depth CDATA "0" background CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST ms fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (upright | italic) "upright" fontfamily CDATA #IMPLIED fontcolor CDATA #IMPLIED lquote CDATA '"' rquote CDATA '"' other CDATA #IMPLIED > <!ATTLIST mstyle fontsize CDATA #IMPLIED fontweight (plain | bold) "plain" fontslant (roman | italic) "roman" fontfamily CDATA #IMPLIED fontcolor CDATA #IMPLIED lspace CDATA ".277777" rspace CDATA ".277777" stretchy CDATA "false" symetric CDATA "true" maxsize CDATA "infinity" minsize CDATA "0" largeop CDATA "false" movablelimits CDATA "false" form CDATA #IMPLIED lquote CDATA '"' rquote CDATA '"' width CDATA "0" height CDATA "0" depth CDATA "0" background CDATA #IMPLIED linethickness CDATA "1" scriptlevel CDATA #IMPLIED displaystyle CDATA #IMPLIED subscriptshift CDATA #IMPLIED superscriptshift CDATA #IMPLIED scriptsizemultiplier CDATA "0.71" scriptminsize CDATA "8" accent CDATA "false" accentunder CDATA "false" rowalign CDATA "baseline" columnalign CDATA "center" rowspacing CDATA "1.0" columnspacing CDATA "0.8" rowlines CDATA "" columnlines CDATA "" frame (none | solid | dashed) "none" framespacing CDATA "0.4 0.5" equalrows CDATA "true" equalcolumns CDATA "true" rowspan CDATA "1" columnspan CDATA "1" other CDATA #IMPLIED > <!ATTLIST merror other CDATA #IMPLIED > <!ATTLIST mrow other CDATA #IMPLIED > <!ATTLIST msqrt other CDATA #IMPLIED > <!ATTLIST mphantom width CDATA "0" height CDATA "0" depth CDATA "0" other CDATA #IMPLIED > <!ATTLIST mfrac linethickness CDATA "1" other CDATA #IMPLIED > <!ATTLIST msub subscriptshift CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST msup superscriptshift CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST msubsup subscriptshift CDATA #IMPLIED superscriptshift CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST mmultiscripts subscriptshift CDATA #IMPLIED superscriptshift CDATA #IMPLIED other CDATA #IMPLIED > <!ATTLIST munder accentunder CDATA "false" other CDATA #IMPLIED > <!ATTLIST mover accent CDATA "false" other CDATA #IMPLIED > <!ATTLIST munderover accent CDATA "false" accentunder CDATA "false" other CDATA #IMPLIED > <!ATTLIST mtable align (top | bottom | center | baseline | axis) "axis" rowalign CDATA "baseline" columnalign CDATA "center" rowspacing CDATA "1.0" columnspacing CDATA "0.8" rowlines CDATA "" columnlines CDATA "" frame (none | solid | dashed) "none" framespacing CDATA "0.4 0.5" equalrows CDATA "true" equalcolumns CDATA "true" other CDATA #IMPLIED > <!ATTLIST mtr rowalign (top | bottom | center | baseline | axis) "axis" columnalign CDATA "center" other CDATA #IMPLIED > <!ATTLIST mtd rowalign (top | bottom | center | baseline | axis) "axis" columnalign CDATA "center" rowspan CDATA "1" columnspan CDATA "1" other CDATA #IMPLIED > <!-- Content tag element set --> <!-- Define relations etc --> <!ENTITY % Verb "EQ|NEQ|GT|LT|GEQ|LEQ|IN|NOTIN| SUBSET|NOTSUBSET|PRSUBSET|NOTPRSUBSET" > <!ELEMENT EQ EMPTY > <!ELEMENT NEQ EMPTY > <!ELEMENT GT EMPTY > <!ELEMENT LT EMPTY > <!ELEMENT GEQ EMPTY > <!ELEMENT LEQ EMPTY > <!ELEMENT IN EMPTY > <!ELEMENT NOTIN EMPTY > <!ELEMENT SUBSET EMPTY > <!ELEMENT NOTSUBSET EMPTY > <!ELEMENT PRSUBSET EMPTY > <!ELEMENT NOTPRSUBSET EMPTY > <!-- Define operators --> <!ENTITY % Op "PLUS|MINUS|TIMES|OVER|EXP|POWER |UNION| INTERSECT|TENDSTO| APPLY" > <!ELEMENT MINUS EMPTY > <!ELEMENT PLUS EMPTY > <!ELEMENT TIMES EMPTY > <!ELEMENT OVER EMPTY > <!ELEMENT EXP EMPTY > <!ELEMENT POWER EMPTY > <!ELEMENT UNION EMPTY > <!ELEMENT INTERSECT EMPTY > <!ELEMENT TENDSTO EMPTY > <!ELEMENT APPLY EMPTY > <!-- Define generic separators --> <!ELEMENT SEP EMPTY > <!ELEMENT ST EMPTY > <!ELEMENT MOD EMPTY > <!-- Define general functions --> <!ENTITY % FnGen "PARTDIFF| TOTALDIFF|DIFF|INVERSE| MATRIXINVERSE |DETERMINANT" > <!ELEMENT PARTDIFF EMPTY > <!ELEMENT TOTALDIFF EMPTY > <!ELEMENT DIFF EMPTY > <!ELEMENT INVERSE EMPTY > <!ELEMENT MATRIXINVERSE EMPTY > <!ELEMENT DETERMINANT EMPTY > <!-- Define trig functions --> <!ENTITY % FnTrig "SIN|COS|TAN| SEC| COSEC| COT| SINH| COSH| TANH| SECH| COSECH| COTANH| ARCSIN| ARCCOS| ARCTAN" > <!ELEMENT SIN EMPTY > <!ELEMENT COS EMPTY > <!ELEMENT TAN EMPTY > <!ELEMENT SEC EMPTY > <!ELEMENT COSEC EMPTY > <!ELEMENT COT EMPTY > <!ELEMENT SINH EMPTY > <!ELEMENT COSH EMPTY > <!ELEMENT TANH EMPTY > <!ELEMENT SECH EMPTY > <!ELEMENT COSECH EMPTY > <!ELEMENT COTANH EMPTY > <!ELEMENT ARCSIN EMPTY > <!ELEMENT ARCCOS EMPTY > <!ELEMENT ARCTAN EMPTY > <!-- Define qualifier elements --> <!ENTITY % qualif "LOWLIMIT|UPLIMIT|BVAR|DEGREE" > <!-- Define expressions with content --> <!-- content model defined below --> <!ENTITY % Fnc "MATRIXROW|VECTOR|INTERVAL|SET| INT|SUM|PRODUCT|LIMIT|MEDIAN| MODE|MOMENT|MEAN|SDIV|VAR| LOG|LN|MIN|MAX|DIV|REM" > <!-- Define Placeholder for the Semantic Mapping Tag Set --> <!ENTITY % SemMap "SEMINFO" > <!ELEMENT SEMINFO - O EMPTY > <!-- recursive definition for content of expressions --> <!-- include presentation tag constructs at lowest level --> <!-- so presentation tag constructs can be anywhere valid for PCDATA --> <!ENTITY % MathExp "(#PCDATA|%Presentation; |%Op;| %FnTrig;|%qualif;|FN|EXPR|MATRIX| %FnGen;|SEMANTICS)*" > <!ENTITY % MathExpression "(%MathExp;|%Fnc;)*" > <!-- elements with content --> <!ELEMENT MATRIX (MATRIXROW)* > <!ELEMENT INT (%MathExp;)* > <!ELEMENT SUM (%MathExp;)* > <!ELEMENT PRODUCT (%MathExp;)* > <!ELEMENT LIMIT (%MathExp;)* > <!ELEMENT MATRIXROW (%MathExp;|SEP)* > <!ELEMENT VECTOR (%MathExp;|SEP)* > <!ELEMENT INTERVAL (%MathExp;|SEP)* > <!ELEMENT SET (%MathExp;|ST)* > <!ELEMENT DIV (%MathExp;|MOD)* > <!ELEMENT REM (%MathExp;|MOD)* > <!ELEMENT MEDIAN (%MathExp;) > <!ELEMENT MODE (%MathExp;) > <!ELEMENT MEAN (%MathExp;) > <!ELEMENT SDIV (%MathExp;) > <!ELEMENT VAR (%MathExp;) > <!ELEMENT LOG (%MathExp;) > <!ELEMENT LN (%MathExp;) > <!ELEMENT MIN (%MathExp;) > <!ELEMENT MAX (%MathExp;) > <!ATTLIST INTERVAL Closure CDATA #IMPLIED > <!ATTLIST INT Type CDATA #IMPLIED > <!--MathContent is a piece of maths of maths notation --> <!ENTITY % MathContent "(%MathExpression;|E|EA)*" > <!ELEMENT LOWLIMIT (%MathContent;) > <!ELEMENT UPLIMIT (%MathContent;) > <!ELEMENT BVAR (%MathContent;) > <!ELEMENT DEGREE (%MathContent;) > <!-- Define top level semantic container element --> <!ELEMENT SEMANTICS - - ((%MathContent;),ST?, SEMINFO?) > <!ATTLIST SEMANTICS SemType CDATA #IMPLIED > <!--Define Equations and Equation Arrays --> <!ELEMENT E - - ((%MathExpression;)?, ((%Verb;),(%MathExpression;))+, ( ST, (%MathContent))? ) > <!ATTLIST E EqNoType (Number|NoNumber) Number id ID #IMPLIED > <!ELEMENT EA - - (E*|EA*)+ > <!ATTLIST EA EqNoType (NoNumber|One|All) "All" id ID #IMPLIED > <!-- Define user-specifiable element --> <!ELEMENT FN - O EMPTY > <!ATTLIST FN Name CDATA #REQUIRED Layout CDATA #IMPLIED > <!-- Define the expression scope (bracketing) element --> <!ELEMENT EXPR - - (%MathExpression;| SEP)* > <!ATTLIST EXPR Layout CDATA #IMPLIED > <!-- layout schema contain tokens, layout and content schema --> <!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 msuper (%MathContent;)* > <!ELEMENT msubsup (%MathContent;)* > <!ELEMENT mmultiscripts (%MathContent;)* > <!ELEMENT munder (%MathContent;)* > <!ELEMENT mover (%MathContent;)* > <!ELEMENT munderover (%MathContent;)* > <!ELEMENT mtable (%MathContent;)* > <!ELEMENT mtr (%MathContent;)* > <!-- the MATH element itself. --> <!-- Note MathContent includes presentation tag constructs, so they are here at the highest level --> <!ELEMENT (MATH) - - (%MathContent;) > <!-- end of DTD fragment -->