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>