Appendix 4. TROEPS DTD

Here is the Document type description for Troeps. It can be found under
http://co4.inrialpes.fr/xml/troeps.

<?xml version="1.0" encoding="UTF-8" ?>
<!-- troeps.dtd version="0.6" last-modification="09/07/1999"
                url="http://co4.inrialpes.fr/xml/troeps.dtd" -->

<!ENTITY % naming "name NMTOKEN #REQUIRED
                   xml:lang NMTOKEN #IMPLIED
                   xmlns:trp CDATA #FIXED 'http://co4.inrialpes.fr/xml/troeps.dtd'">
<!ENTITY % aval "trp:VAL*|trp:OBJREF*">
<!ENTITY % domain "trp:VAL+|trp:OBJREF+|trp:SET+|trp:LIST+">
<!ENTITY % val "trp:VAL|trp:OBJREF|trp:SET|trp:LIST">

<!ELEMENT trp:TRPKB (trp:TRPKBDSC)>
<!ELEMENT trp:TRPKBREF EMPTY>
<!ATTLIST trp:TRPKBREF %naming;>
<!ELEMENT trp:TRPKBDSC (trp:CONCEPTDSC*)>
<!ATTLIST trp:TRPKBDSC %naming;>

<!ELEMENT trp:CONCEPT (trp:TRPKBREF,trp:CONCEPTDSC)>
<!ELEMENT trp:CONCEPTREF EMPTY>
<!ATTLIST trp:CONCEPTREF %naming;>
<!ELEMENT trp:CONCEPTDSC (trp:KEYDSC,trp:KFIELDDSC*,trp:VIEWDSC*,trp:BRIDGEDSC*,trp:OBJDSC*)>
<!ATTLIST trp:CONCEPTDSC %naming;>

<!ELEMENT trp:KEYDSC (trp:KFIELDDSC+)>

<!ELEMENT trp:KFIELD (trp:CONCEPTREF,trp:KFIELDDSC)>
<!ELEMENT trp:KFIELDDSC (trp:CONCEPTREF|trp:TYPEREF)>
<!ATTLIST trp:KFIELDDSC %naming;
                    nature (property|component|link) "property"
                    constructor (un|set|list) "un">
<!ELEMENT trp:KFIELDREF (trp:CONCEPTREF)>
<!ATTLIST trp:KFIELDREF %naming;>

<!ELEMENT trp:VIEW (trp:CONCEPTREF,trp:VIEWDSC)>
<!ELEMENT trp:VIEWDSC (trp:CLASSDSC,trp:CLASSDSC*)>
<!ATTLIST trp:VIEWDSC %naming;>
<!ELEMENT trp:VIEWREF (trp:CONCEPTREF)>
<!ATTLIST trp:VIEWREF %naming;>

<!ELEMENT trp:CLASS (trp:VIEWREF,trp:CLASSDSC)>
<!ELEMENT trp:CLASSDSC (trp:CLASSREF?,trp:CFIELDDSC*)>
<!ATTLIST trp:CLASSDSC %naming;>
<!ELEMENT trp:CLASSREF (trp:VIEWREF)>
<!ATTLIST trp:CLASSREF %naming;>

<!ELEMENT trp:FILTER (trp:FILTERDSC)>
<!ELEMENT trp:FILTERDSC ((trp:CONCEPTREF|trp:CLASSREF*),trp:CFIELDDSC*)>

<!ELEMENT trp:CFIELD (trp:CLASSREF,trp:CFIELDDSC)>
<!ELEMENT trp:CFIELDDSC ((trp:TYPEDSCTR|trp:DOMAINDSCTR|trp:EXCEPTDSCTR|trp:INTERVALSDSCTR|trp:CARDINALDSCTR
						|trp:DEFAULTDSCTR|trp:ASSIGNDSCTR|trp:FILTERDSCTR|trp:METHODDSCTR)*)>
<!ATTLIST trp:CFIELDDSC %naming;>
<!ELEMENT trp:CFIELDREF (trp:CLASSREF)>
<!ATTLIST trp:CFIELDREF %naming;>

<!ELEMENT trp:TYPEDSCTR ((trp:FILTER|trp:CLASSREF)+)>
<!ELEMENT trp:DOMAINDSCTR (%domain;)>
<!ELEMENT trp:EXCEPTDSCTR (%domain;)>
<!ELEMENT trp:INTERVALSDSCTR (trp:INTERV+)>
<!ELEMENT trp:CARDINALDSCTR (trp:INTERV)>
<!ELEMENT trp:DEFAULTDSCTR (%val;)>
<!ELEMENT trp:ASSIGNDSCTR (trp:PATH+)>
<!ELEMENT trp:FILTERDSCTR (trp:FILTER+)>
<!ELEMENT trp:METHODDSCTR (trp:TASK+)>

<!ELEMENT trp:BRIDGE (trp:CONCEPTREF,trp:BRIDGEDSC)>
<!ELEMENT trp:BRIDGEDSC (trp:CLASSREF,trp:CLASSREF+)>
<!ATTLIST trp:BRIDGEDSC %naming;>
<!ELEMENT trp:BRIDGEREF (trp:CONCEPTREF)>
<!ATTLIST trp:BRIDGEREF %naming;>

<!ELEMENT trp:OBJECT (trp:CONCEPTREF,trp:OBJDSC)>
<!ELEMENT trp:OBJDSC (trp:CLASSREF*,trp:ATTVAL+)>
<!ELEMENT trp:OBJREF (trp:CONCEPTREF,trp:ATTVAL+)>

<!ELEMENT trp:ATTVAL (%val;)>
<!ATTLIST trp:ATTVAL %naming;>

<!ELEMENT trp:PATH (trp:CONCEPTREF,trp:PATHLINE*)>
<!ELEMENT trp:PATHLINE (trp:KFIELDREF)>
<!ATTLIST trp:PATHLINE comp (coll|conc) "conc">

<!ELEMENT trp:TASK ((trp:PATH|%val;)*)>
<!ATTLIST trp:TASK %naming;>

<!ELEMENT trp:INF EMPTY>
<!ELEMENT trp:INTERV ((trp:VAL|trp:INF),(trp:VAL|trp:INF))>
<!ATTLIST trp:INTERV begin (open|closed) "closed"
                 end (open|closed) "closed">
                 
<!-- Constructors -->
<!ELEMENT trp:SET (%aval;)>
<!ELEMENT trp:LIST (%aval;)>

<!-- External types and values -->
<!ELEMENT trp:TYPEREF EMPTY>
<!ATTLIST trp:TYPEREF %naming;>
<!-- THIS PCDATA CAN BE REPLACED WHEN XML-SCHEMA IS READY?
     NOT SURE FOR THE SAME PROBLEM OF DYNAMICITY... -->
<!ELEMENT trp:VAL (#PCDATA)>