Listing 1: Model.dtd The meta-model
<!ELEMENT class (info?, dependencies?, uses?, parents?, methods?, properties?) > <!ATTLIST class name NMTOKEN #REQUIRED package NMTOKEN #IMPLIED > <!ELEMENT dependencies (dependency*)> <!ELEMENT dependency (#PCDATA)> <!ELEMENT uses (use*)> <!ELEMENT use (#PCDATA)> <!ELEMENT parents (parent*)> <!ELEMENT parent (#PCDATA)> <!ATTLIST parent name NMTOKEN #REQUIRED visibility (public | private) "public" > <!ELEMENT methods (method*)> <!ELEMENT method (info?, return?, params*, exceptions*)> <!ATTLIST method name NMTOKEN #REQUIRED type CDATA #REQUIRED visibility (public | protected | private) "public" modifier (virtual | static) "" const (true | false) "false" > <!ELEMENT params (param*)> <!ELEMENT param (info?)> <!ATTLIST param name NMTOKEN #REQUIRED type CDATA #REQUIRED default CDATA #IMPLIED > <!ELEMENT properties (property*)> <!ELEMENT property (info?)> <!ATTLIST property name NMTOKEN #REQUIRED type CDATA #REQUIRED has_get (true | false) "true" has_set (true | false) "true" has_data (true | false) "true" is_unique (true | false) "false" > <!ELEMENT info (#PCDATA)> <!ENTITY amp "&" > <!ENTITY lt "<" > <!ENTITY gt ">" > <!ENTITY quot """ > End of Listing