<!--DATR1.0.dtd - DATR in XML: VERSION 1.0
Copyright (C) Lee Goddard, 1/6/00 and after. All Rights Reserved.
This DTD is supplied under the GNU PUBLIC LICENSE (www.gnu.org).
-->
<!-- The root element DATR may contain exactly one each of HEADER, OPENING
CLOSING elements, and one or many EQUATION elements.
Elements must appear in the order: HEADER, OPENING, EQUATION, CLOSING. -->
<!ELEMENT DATR (HEADER?,OPENING?,EQUATION*,CLOSING?)>
<!-- A COMMENT can only contain character data -->
<!ELEMENT COMMENT (NMTOKENS)>
<!-- The HEADER can only contain one or several META elements -->
<!ELEMENT HEADER (META+)>
<!-- The META element may not wrap other elements -->
<!ELEMENT META EMPTY>
<!-- AS HTML, the META element's two attributes are 'name' and 'content'
which may only contain only character data -->
<!ATTLIST META name CDATA #REQUIRED
content CDATA #REQUIRED >
<!-- OPENING and CLOSING elements may contain any number of
LOAD, VARS, RESET, ATOM or NODE, SHOW elements
Note that ATOM may be included in the body but that
NODE is unquite. -->
<!ELEMENT OPENING (LOAD|VARS|RESET|ATOM|NODE|SHOW|COMMENT|DELETE)*>
<!ELEMENT CLOSING (LOAD|VARS|RESET|ATOM|NODE|SHOW|COMMENT|DELETE)*>
<!-- The NODE element may not wrap other elements, and
must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT NODE EMPTY>
<!ATTLIST NODE value CDATA #REQUIRED
comment CDATA #IMPLIED>
<!-- The LOAD element may not wrap other elements, and
must contain a 'filename' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT LOAD EMPTY>
<!ATTLIST LOAD filename CDATA #REQUIRED
comment CDATA #IMPLIED>
<!-- The VARS element may not wrap other elements, and
must contain a 'range' attribute of character data and whitespace.
(The whitespace may be used to delimit range values.)
May also contain a 'comment' attribute of character data. -->
<!ELEMENT VARS EMPTY>
<!ATTLIST VARS name CDATA #REQUIRED
range NMTOKENS #REQUIRED
comment CDATA #IMPLIED>
<!-- The RESET element may not wrap other elements, and
may contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT RESET EMPTY>
<!ATTLIST RESET value CDATA #IMPLIED
comment CDATA #IMPLIED>
<!-- The DELETE element may not wrap other elements, and
may contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT DELETE EMPTY>
<!ATTLIST DELETE value CDATA #IMPLIED
comment CDATA #IMPLIED>
<!-- The SHOW element may not wrap other elements, and
must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT SHOW EMPTY>
<!ATTLIST SHOW value CDATA #REQUIRED
comment CDATA #IMPLIED>
<!-- The EQUATION element may wrap any combination of the following
elements: ATOM, QUOTEDATOM, PATH, QUOTEDPATH, NODEPATH, QUOTEDNODEPATH.
It must contain a 'name' attribute of character data.
It has a 'path' attribute that defaults to empty, and
a type attribute that may take a value of either DEFINE or
EXTEND (in upper case only), and which defaults to DEFINE.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT EQUATION (ATOM|QUOTEDATOM|PATH|QUOTEDPATH|NODEPATH|QUOTEDNODEPATH|COMMENT|QUERY)*>
<!ATTLIST EQUATION name CDATA #REQUIRED
path CDATA ""
type (DEFINE|EXTEND) "DEFINE"
comment CDATA #IMPLIED>
<!-- Empty element to represent the ? of DATR -->
<!ELEMENT QUERY EMPTY>
<!-- The ATOM element may not wrap other elements, and
must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT ATOM EMPTY>
<!ATTLIST ATOM value CDATA #REQUIRED
comment CDATA #IMPLIED >
<!-- The QUOTEDATOM element may not wrap other elements, and
must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT QUOTEDATOM EMPTY>
<!ATTLIST QUOTEDATOM value CDATA #REQUIRED
comment CDATA #IMPLIED >
<!-- The PATH element may wrap any or none of the following elements,
in any order or combination:
ATOM, QUOTEDATOM, PATH, QUOTEDPATH, NODEPATH, QUOTEDNODEPATH.
It must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT PATH (ATOM|QUOTEDATOM|PATH|QUOTEDPATH|NODEPATH|QUOTEDNODEPATH)*>
<!ATTLIST PATH value CDATA #REQUIRED
comment CDATA #IMPLIED >
<!-- The QUOTEDPATH element may wrap any or none of the following elements,
in any order or combination:
ATOM, QUOTEDATOM, PATH, QUOTEDPATH, NODEPATH, QUOTEDNODEPATH.
it must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT QUOTEDPATH (ATOM|QUOTEDATOM|PATH|QUOTEDPATH|NODEPATH|QUOTEDNODEPATH)*>
<!ATTLIST QUOTEDPATH value CDATA #REQUIRED
comment CDATA #IMPLIED >
<!-- The NODEPATH element may wrap any or none of the following elements,
in any order or combination:
ATOM, QUOTEDATOM, PATH, QUOTEDPATH, NODEPATH, QUOTEDNODEPATH.
it must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT NODEPATH (ATOM|QUOTEDATOM|PATH|QUOTEDPATH|NODEPATH|QUOTEDNODEPATH)*>
<!ATTLIST NODEPATH value CDATA #REQUIRED
comment CDATA #IMPLIED >
<!-- The QUOTEDNODEPATH element may wrap any or none of the following elements,
in any order or combination:
ATOM, QUOTEDATOM, PATH, QUOTEDPATH, NODEPATH, QUOTEDNODEPATH.
it must contain a 'value' attribute of character data.
May also contain a 'comment' attribute of character data. -->
<!ELEMENT QUOTEDNODEPATH (ATOM|QUOTEDATOM|PATH|QUOTEDPATH|NODEPATH|QUOTEDNODEPATH)*>
<!ATTLIST QUOTEDNODEPATH value CDATA #REQUIRED
comment CDATA #IMPLIED >
<!-- doc end -->