Appendix F. Document Type Definitions (DTD's)

Table of Contents
cexml_message.dtd
cexml_en.dtd
cexml_nl.dtd
pce_en_procurement.dtd

cexml_message.dtd

<!-- 	ceXML message model DTD
     	Started 2000-08-14 by Reinout van Rees
	R.vanRees@ct.tudelft.nl

        This DTD is used to make instances of the message model
        according to the specification found in the report written for
        my graduation project

-->


<!--    ************************************************************
        The element "name" serves to hold a string indicating a 
        certain built object, a unit, a symbol or a
        quantification. Needed for this is a attribute ,
        indicating the language this specific "name" uses. For this,
        you should use xml:lang, especially designed for this 
        purpose.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       name            (#PCDATA)>
<!--            target_element  attr_name       attr_type default-->
<!ATTLIST       name            language        NMTOKEN   #IMPLIED >

<!--    ************************************************************
        A "symbol" is used to represent either a unit or a 
        quantification. It is used as a shorthand version.
        e.g. centimeters => cm
        It has possibly one name
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       symbol          (name?)>

<!--    ************************************************************
        A "unit" is a unit of measurement, like centimeters. It has
        at least one name.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       unit            (name*)>


<!--    ************************************************************
        An "amount" is a placeholder for a number.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       amount          (#PCDATA)>

<!--    ************************************************************
        A "quantification" either quantifies a function or it 
        quantifies a built object. So it has a unit and an optional
        amount. Also it can have one or more names.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       quantification  (name+,amount*,unit*)>
<!--            target_element  attr_name       attr_type default-->
<!ATTLIST       quantification  copied          CDATA   #IMPLIED >


<!--    ************************************************************
        A "function" identifies a function of a built object. It can
        have one or more names and possibly a few quantifications.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       function        (name+,quantification*)>
<!--            target_element  attr_name       attr_type default-->
<!ATTLIST       function        copied          CDATA   #IMPLIED >


<!--    ************************************************************
        "characteristics" are used to group the characteristics of 
        built objects (for clarity)
        The characteristics are the subparts (built objects), an 
        optional amount, optional quantifications and optional
        functions.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       characteristics (builtobject*,
                                amount?,
                                quantification*,
                                function*)>


<!--    ************************************************************
        A "builtobject" is the central building block of the
        vocabulary, indicating the actual built objects. They can 
        have other builtobjects in a hierarchy below them and they
        one "characteristics". They also can have names.
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       builtobject     (name+,
                                characteristics?,
                                builtobject*)>
<!-- the following are attributes that I needed to quickly hack
together a working prototype. They'd better be solved in a different
way, imo -->
<!--            target_element  attr_name       attr_type default-->
<!ATTLIST       builtobject     copied          CDATA   #IMPLIED >
<!ATTLIST       builtobject     mode            CDATA   #IMPLIED >
<!ATTLIST       builtobject     selectID        CDATA   #IMPLIED >
<!ATTLIST       builtobject     supplier        CDATA   #IMPLIED >


<!--    ************************************************************
        A "cexml" element serves as a container for the major 
        elements, so that in *one* xml file, there can be:
        * a tree of builtobjects
        * a list of functions
        * a list of quantifications
        * a list of units
        * a list of symbols
        * a list of names
        ************************************************************
-->

<!--            element_name    rule -->
<!ELEMENT       cexml           (builtobject,
                                (function|
                                quantification|
                                unit|
                                symbol|
                                name)*)>