Cúram XML below presents the DTD for Cúram XML. The DTD can also be found in the /lib directory of the SDEJ. The structure is relatively simple and, with the comments, this needs no further explanation.
<!--A DOCUMENT element has an optional META element
followed by a mandatory DATA element.-->
<!ELEMENT DOCUMENT (META?, DATA)>
<!--A META element has a number of optional elements that
it can contain in no particular order.-->
<!ELEMENT META (GENERATED_DATE | GENERATED_BY |
VERSION | COMMENT)*>
<!--A DATA element contains a single mandatory STRUCT_LIST
or STRUCT element.-->
<!ELEMENT DATA ((STRUCT_LIST | STRUCT))>
<!--A STRUCT_LIST element has one or more STRUCT
elements.-->
<!ELEMENT STRUCT_LIST (STRUCT+)>
<!--A STRUCT element has an optional SNAME element and one
or more FIELD elements.-->
<!ELEMENT STRUCT (SNAME?, FIELD+)>
<!--A FIELD element has an FNAME and either a TYPE
element and a VALUE element, or a STRUCT_LIST element,
or a STRUCT element (in that order).-->
<!ELEMENT FIELD (FNAME, ((TYPE, VALUE) | STRUCT_LIST | STRUCT))>
<!--All these elements contain parsed character data only
and do not contain sub-elements. Use ISO-8601 when
formatting date values.-->
<!ELEMENT GENERATED_DATE (#PCDATA)>
<!ELEMENT GENERATED_BY (#PCDATA)>
<!ELEMENT VERSION (#PCDATA)>
<!ELEMENT COMMENT (#PCDATA)>
<!ELEMENT SNAME (#PCDATA)>
<!ELEMENT FNAME (#PCDATA)>
<!ELEMENT VALUE (#PCDATA)>
<!ELEMENT TYPE (#PCDATA)>
<!--A TYPE element can have a SIZE attribute. If not
supplied, the attribute will not be set by default
and will have a null value. This is normally used
for SVR_STRING types.-->
<!ATTLIST TYPE SIZE CDATA #IMPLIED>