SGML DTD for the MGML Reference DSD, from: http://www.textuality.com/mgml/mgml.dtd

<!ENTITY amp "&">
<!ENTITY lt "<">

<!ENTITY % S-GI-REF " GI IDREF #REQUIRED">
<!ENTITY GI-REF "<attribute name=GI status=required><typed type=idref></attribute>">

<!ELEMENT DSD - - ((ENTITY | NOTATION)*, (ELEMENT | ATTLIST)+)>

<!ELEMENT ELEMENT - - (EMPTY | CHILD | GROUP)>
<!ATTLIST ELEMENT GI ID #REQUIRED>

<!ELEMENT EMPTY - O EMPTY>
<!ELEMENT ANY - O EMPTY>

<!ELEMENT ATTLIST - - (ATTRIBUTE+)>
<!ATTLIST ATTLIST %S-GI-REF;>

<!ELEMENT GROUP - - (CHILD | PCDATA | GROUP)+>
<!ATTLIST GROUP OCCUR (ONE | ZERO-ONE | ZERO-PLUS | ONE-PLUS) "ONE"
                CONNECT (SEQ | OR) "SEQ">

<!ELEMENT CHILD - O EMPTY>
<!ATTLIST CHILD %S-GI-REF;>

<!ELEMENT PCDATA - O EMPTY>

<!ELEMENT ATTRIBUTE - - ((CDATA | TYPED | NTGROUP | NOT-LIST), DEFAULT?)>
<!ATTLIST ATTRIBUTE NAME   NAME                #REQUIRED
                    STATUS (REQUIRED | OPTIONAL) "OPTIONAL">
 
<!ELEMENT CDATA - O EMPTY>
<!ELEMENT TYPED - O EMPTY>
<!ATTLIST TYPED TYPE (ID | IDREF | IDREFS | NAME | NAMES | NMTOKEN | NMTOKENS | NUMBER | NUMBERS | NUTOKEN | NUTOKENS) #REQUIRED>

<!ELEMENT NTGROUP - - (NT+)>
<!ELEMENT NT - O EMPTY>
<!ATTLIST NT VAL NMTOKEN #REQUIRED>

<!ELEMENT DEFAULT - O EMPTY>
<!ATTLIST DEFAULT DEF-VAL   CDATA    #REQUIRED
                 FIXED (YES | NO) "NO">

<!ELEMENT NOT-LIST - O EMPTY>
<!ATTLIST NOT-LIST NOT-NAMES IDREFS #REQUIRED>

<!ELEMENT ENTITY - - (STRING | EXTERNAL)>
<!ATTLIST ENTITY REF NAME #REQUIRED>

<!ELEMENT STRING - - (CHAR | TEXT)+>
<!ELEMENT CHAR - O EMPTY>
<!ATTLIST CHAR CNUM NUMBER #REQUIRED>
<!ELEMENT TEXT - - (#PCDATA)>

<!ELEMENT EXTERNAL - O EMPTY>
<!ATTLIST EXTERNAL NDATA  IDREF #IMPLIED
                   PUBLIC CDATA #IMPLIED
                   SYS-ID CDATA #IMPLIED>

<!ELEMENT NOTATION - O EMPTY>
<!ATTLIST NOTATION NAME   ID                #REQUIRED
                   CLASS  (PUBLIC | SYSTEM) #REQUIRED
                   EXT-ID CDATA             #REQUIRED>
