Cúram XML

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.

Figure 1. Cúram XML Document Type Definition (DTD)
<!--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>