<!ENTITY % attr "role CDATA #IMPLIED token NMTOKEN #IMPLIED xml:id ID #IMPLIED">

<!ATTLIST apply %attr;>
<!ATTLIST bold %attr;>
<!ATTLIST case %attr;>
<!ATTLIST cases %attr;>
<!ATTLIST cell %attr;>
<!ATTLIST den %attr;>
<!ATTLIST det %attr;>
<!ATTLIST entry %attr;>
<!ATTLIST fence %attr; left (none | curly | dashed | double | round | solid | square) "square" right (curly | dashed | double | round | solid | square) "square">
<!ATTLIST fenced %attr;>
<!ATTLIST float %attr;>
<!ATTLIST formula %attr; pronounce CDATA #IMPLIED>
<!ATTLIST formulae %attr;>
<!ATTLIST fraction %attr;>
<!ATTLIST group %attr;>
<!ATTLIST inf %attr;>
<!ATTLIST italic %attr;>
<!ATTLIST ker %attr;>
<!ATTLIST line token NMTOKEN #IMPLIED>
<!ATTLIST marker %attr;>
<!ATTLIST markers %attr;>
<!ATTLIST math %attr; pronounce CDATA #IMPLIED>
<!ATTLIST matrix %attr;>
<!ATTLIST num %attr;>
<!ATTLIST ope %attr;>
<!ATTLIST opgroup %attr;>
<!ATTLIST over %attr;>
<!ATTLIST overbrace %attr;>
<!ATTLIST overline %attr;>
<!ATTLIST row %attr;>
<!ATTLIST radical %attr;>
<!ATTLIST radicand %attr;>
<!ATTLIST radix %attr;>
<!ATTLIST sat %attr;>
<!ATTLIST scope %attr;>
<!ATTLIST sqrt %attr;>
<!ATTLIST strike %attr;>
<!ATTLIST sub %attr;>
<!ATTLIST subformula %attr;>
<!ATTLIST submarker %attr;>
<!ATTLIST sup %attr;>
<!ATTLIST sur %attr;>
<!ATTLIST under %attr;>
<!ATTLIST underbrace %attr;>
<!ATTLIST underline %attr;>
<!ATTLIST value %attr;>
<!ATTLIST vector %attr;>
<!ATTLIST wrap token NMTOKEN #IMPLIED>

<!ENTITY % innermath "(#PCDATA | apply | bold | cases | det | fence | fenced | float | fraction | group | inf | italic | matrix | ope | opgroup | over | overline | radical | sqrt | strike | sub | sup | sur | under | underline | vector)*">
<!ENTITY % blockmath "(#PCDATA | apply | bold | cases | det | fence | fenced | float | fraction | group | inf | italic | line | matrix | ope | opgroup | over | overline | radical | sqrt | strike | sub | subformula | sup | sur | under | underline | vector | wrap)*">

<!ELEMENT apply ((matrix | vector),(marker | submarker))>
<!ELEMENT bold %innermath;>
<!ELEMENT case (value, scope)>
<!ELEMENT cases (case, case+)>
<!ELEMENT cell %innermath;>
<!ELEMENT den %innermath;>
<!ELEMENT det (row, row+)>
<!ELEMENT entry %innermath;>
<!ELEMENT fence %innermath;>
<!ELEMENT fenced (fence, (marker | markers | submarker))>
<!ELEMENT float ((sup, sub) | (sur, inf))>
<!ELEMENT formula %blockmath;>
<!ELEMENT formulae (formula, formula+)>
<!ELEMENT fraction (num, den)>
<!ELEMENT group %innermath;>
<!ELEMENT inf %innermath;>
<!ELEMENT italic %innermath;>
<!ELEMENT ker %innermath;>
<!ELEMENT line EMPTY>
<!ELEMENT marker %innermath;>
<!ELEMENT markers (marker, submarker)>
<!ELEMENT math %innermath;>
<!ELEMENT matrix (row, row+)>
<!ELEMENT num %innermath;>
<!ELEMENT ope (#PCDATA)>
<!ELEMENT opgroup (ope, (marker | markers | submarker))>
<!ELEMENT over (((overbrace, sat*)|(sat+, overbrace?)),(ker|ope|under))>
<!ELEMENT overbrace EMPTY>
<!ELEMENT overline %innermath;>
<!ELEMENT row (cell, cell+)>
<!ELEMENT radical (radix, radicand)>
<!ELEMENT radicand %innermath;>
<!ELEMENT radix %innermath;>
<!ELEMENT sat %innermath;>
<!ELEMENT scope %innermath;>
<!ELEMENT sqrt %innermath;>
<!ELEMENT strike %innermath;>
<!ELEMENT sub %innermath;>
<!ELEMENT subformula %innermath;>
<!ELEMENT submarker %innermath;>
<!ELEMENT sup %innermath;>
<!ELEMENT sur %innermath;>
<!ELEMENT under ((ker|ope|over),((underbrace, sat*)|(sat+, underbrace?)))>
<!ELEMENT underbrace EMPTY>
<!ELEMENT underline %innermath;>
<!ELEMENT value %innermath;>
<!ELEMENT vector (entry, entry+)>
<!ELEMENT wrap EMPTY>

