[This local archive copy is from the official and canonical URL, http://www.xmlxperts.com/xmlmathdtd.htm; please refer to the canonical source document if possible.]


ISO 12083 Math XML DTD

This DTD was developed according to XML conversion specifications from the November meeting in Chicago. You can link to the minutes for complete details and comments.

This DTD is a Draft. We ask you to Parse it with your XML parser of choice and provide feedback. We need your help to validate our work! Send all comments to Dianne Kennedy.

<!-- This is the ISO12083:1998 XML document type definition for Mathematics.-->
<!-- Draft XML version of the Mathematics DTD for Public Review             -->


<!-- ===================================================================== -->
<!--            PUBLIC DOCUMENT TYPE DEFINITION SUBSET                 -->
<!-- ===================================================================== -->

<!--
This DTD is included by the XML Book and Article DTDs of ISO12083:1998.
As it is a separate entity it may also be included by other DTDs.

Since there is no consensus on how to describe the semantics of formulas,
it only describes their presentational or visual structure. Since, however,
there is a strong need for such description (especially within the
print-disabled community), it is recommended that the following
declaration be added where there is a requirement for a consistent,
standardized mechanism to carry semantic meanings for the SGML
elements declared throughout this part of this International Standard:

<!ENTITY % SDAMAP       "SDAMAP   NAME    #IMPLIED"           >

and that the attribute represented by %SDAMAP; be made available for
all elements which may require a semantic association, or, in the simpler
case, be added to all elements in this DTD.                     -->



<!-- ===================================================================== -->
<!--  Parameter entities describing the possible contents of formulas.     -->
<!-- ===================================================================== -->

<!ENTITY % p.trans "bold|italic|sansser|typewrit|smallcap|roman"
		   -- character transformations                            -->
<!ENTITY % m.math "#PCDATA |fraction|subform|sup|inf|top|bottom|middle|fence|mark|
   post|box|overline|undrline|radical|array|hspace|vspace|break|markref" -->
 <!--       mathematical formula elements                               -->



<!-- ===================================================================== -->
<!-- Accessible Document and other Parameter Entities        
     If this DTD is not imbedded by a ISO12083:1994 Book or Article,
     the comment delimiters should be removed.                             -->
<!-- ===================================================================== -->

<!--ENTITY % SDAFORM      "SDAFORM   CDATA    #FIXED"                      -->
<!--ENTITY % SDARULE      "SDARULE   CDATA    #FIXED"                      --> 
<!--ENTITY % SDAPREF      "SDAPREF   CDATA    #FIXED"                      -->
<!--ENTITY % SDASUFF      "SDASUFF   CDATA    #FIXED"                      -->
<!--ENTITY % SDASUSP      "SDASUSP   CDATA    #FIXED"                      -->



<!-- ===================================================================== -->
<!-- This entity is for an attribute to indicate which alphabet is 
     used in the element (formula, dformula). You may change this to 
     a notation attribute, where the notation could describe a 
     keyboard mapping. Please modify the set as necessary.                 
     If this DTD is not imbedded by a ISO12083:1994 Book or Article,
     the comment delimiters should be removed.                             -->
<!-- ===================================================================== -->

<!--ENTITY % a.types "(latin|greek|cyrillic|hebrew|kanji) 'latin'"           -->


<!-- ===================================================================== -->
<!-- character transformations                                             --> 
<!-- ===================================================================== -->

<!--      ELEMENT                   CONTENT              EXPLANATIONS      -->
<!ELEMENT bold                   (#PCDATA|%p.trans;)*                     >
<!ELEMENT italic                 (#PCDATA|%p.trans;)*                     >
<!ELEMENT sansser                (#PCDATA|%p.trans;)*                     >
<!ELEMENT typewrit               (#PCDATA|%p.trans;)*                     >
<!ELEMENT smallcap               (#PCDATA|%p.trans;)*                     >
<!ELEMENT roman                  (#PCDATA|%p.trans;)*                     >


<!-- ===================================================================== -->
<!-- Fractions                                                             -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT fraction               (num, den)                                 >
<!ELEMENT num                    (%m.math;|%p.trans;)*                      >   
<!ELEMENT den                    (%m.math;|%p.trans;)*                      >
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST fraction  shape      (built|case) #IMPLIED
		    align      (left|center|right)   
						center
		    style      (single|double|triple|dash|dot|bold|blank|none)
						single                       >



<!-- ===================================================================== -->
<!-- Superiors, inferiors, accents, over and under                         -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT sup                    (%m.math;|%p.trans;)*                       >
<!ELEMENT inf                    (%m.math;|%p.trans;)*                       >
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST sup       location   (pre|post)       post
		    arrange    (compact|stagger)
						compact                                  >
<!ATTLIST inf       location   (pre|post) post
		    arrange    (compact|stagger) compact                         >


<!-- ===================================================================== -->
<!-- Embellishments                                                        -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT top                    (%m.math;|%p.trans;)*                       >
<!ELEMENT middle                 (%m.math;|%p.trans;)*                       >

<!ELEMENT bottom                 (%m.math;|%p.trans;)*                       > 

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST top       align      (left|center|right) 
						center
		    sizeid     ID               #IMPLIED                         >

<!ATTLIST middle    align      (left|center|right) 
						center
		    sizeid     ID               #IMPLIED                         >     

<!ATTLIST bottom    align      (left|center|right) 
						center
		    sizeid    ID               #IMPLIED                          > 


<!-- The subform element is defined later                                  -->



<!-- ===================================================================== -->
<!-- Fences, boxes, overlines and underlines                               -->
<!-- ===================================================================== -->

<!--      ELEMENT              CONTENT               EXPLANATIONS     -->
<!ELEMENT mark                 EMPTY                                    >
<!ELEMENT fence                (%m.math;|%p.trans;)*                    >
<!ELEMENT post                 EMPTY                                    >
<!ELEMENT box                    (%m.math;|%p.trans;)*                  >
<!ELEMENT overline               (%m.math;|%p.trans;)*                  >
<!ELEMENT undrline               (%m.math;|%p.trans;)*                  >
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST mark      id         ID               #REQUIRED                    >
<!ATTLIST fence     lpost      CDATA            "|" 
		    rpost      CDATA            "|" 
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						single
		    sizeid     ID               #IMPLIED 
		    sizeref    IDREF            #IMPLIED                    >
<!ATTLIST post      post       CDATA            "|"
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						single
		    sizeid     ID               #IMPLIED 
		    sizeref    IDREF            #IMPLIED                    >

<!ATTLIST box       style      (single|double|triple|dash|dot|bold|blank|none) 
						single                       >
<!ATTLIST overline  type       CDATA            "-" 
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						single
		    start      IDREF            #IMPLIED
		    end        IDREF            #IMPLIED                     >

<!ATTLIST undrline  type       CDATA            "_" 
		    style      (single|double|triple|dash|dot|bold|blank|none) 
						single
		    start      IDREF            #IMPLIED
		    end        IDREF            #IMPLIED                     >


<!-- ===================================================================== -->
<!-- Labelled arrows                                                       -->
<!-- ===================================================================== -->

<!--      ELEMENT              CONTENT               EXPLANATIONS     -->
<!ELEMENT subform                (%m.math;|%p.trans;)*                       >
<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST subform   sizeid     ID               #IMPLIED
		        sizeref    IDREF            #IMPLIED                     >


<!-- ===================================================================== -->
<!-- Roots                                                                 -->
<!-- ===================================================================== -->

<!--      ELEMENT              CONTENT               EXPLANATIONS     -->
<!ELEMENT radical                (radix?, radicand)                       >
<!ELEMENT radix                  (%m.math;|%p.trans;)*                    >
<!ELEMENT radicand               (%m.math;|%p.trans;)*                    >


<!-- ===================================================================== -->
<!-- Arrays                                                                -->
<!-- ===================================================================== -->

<!--      ELEMENT              CONTENT               EXPLANATIONS     -->
<!ELEMENT array                (arrayrow+|arraycol+)                        >
<!ELEMENT arrayrow             (arraycel+)                                  >
<!ELEMENT arraycol             (arraycel+)                                  >
<!ELEMENT arraycel             (%m.math;|%p.trans;)*                        >

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST array     rowalign   NMTOKENS         #IMPLIED 
		    colalign   NMTOKENS         #IMPLIED 
		    rowsep     NMTOKENS         #IMPLIED
		    colsep     NMTOKENS         #IMPLIED                      >


<!-- ===================================================================== -->
<!-- Spacing                                                               -->
<!-- ===================================================================== -->

<!--      ELEMENT              CONTENT               EXPLANATIONS     -->
<!ELEMENT hspace               EMPTY                                    >
<!ELEMENT vspace               EMPTY                                    >
<!ELEMENT break                EMPTY                                    >
<!ELEMENT markref              EMPTY                                    >

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST hspace    space      CDATA            "1 mm"                  >
<!ATTLIST vspace    space      CDATA            "1 mm"                  >
<!ATTLIST markref   refid      IDREF            #REQUIRED
		        direct     (hor|ver)        hor                     >

<!-- ===================================================================== -->
<!-- the formula elements                                                  -->
<!-- ===================================================================== -->

<!--      ELEMENT              MIN  CONTENT               EXPLANATIONS     -->
<!ELEMENT formula                (%m.math;|%p.trans;)* 
							-- in-line formula -->
<!ELEMENT dformula               (%m.math;|%p.trans;)* 
							-- display formula -->
<!ELEMENT dformgrp               (formula|dformula)+ 
						  -- display-formula group -->

<!--      ELEMENT   NAME       VALUE            DEFAULT                    -->
<!ATTLIST formula   id         ID               #IMPLIED
		    alphabet   %a.types;
		    %SDAPREF;      "<?SDATRANS>Inline formula"  
		    %SDASUSP;       "SUSPEND"        > 
<!ATTLIST dformula  id         ID               #IMPLIED
		    num        CDATA            #IMPLIED
		    align      (left|center|right) 
						center
		    alphabet   %a.types;
		    %SDAPREF;      "<?SDATRANS>Display formula"  
		    %SDASUSP;       "SUSPEND"        >
<!ATTLIST dformgrp  id         ID               #IMPLIED
		    num        CDATA            #IMPLIED
		    align      (left|center|right) 
						center
		    %SDAPREF;      "<?SDATRANS>Display formula group"    >



(Return to TOC)