
<!-- VAPOR Metadata Speficification DTD --> 
<!-- used to speficy metadata about the Persistable classes to be
     handled by VAPOR. Used to create DB-Schema and system-table rows.
-->

<!-- top level element. can contain one or more classes or modules --> 
<!ELEMENT vapor (class|module)+>

<!-- module: package to group classes together for namespace-handling
     corresponds to Ruby's Module::Class -->
<!ELEMENT module (class)+>
<!ATTLIST module name CDATA #REQUIRED>

<!-- class: a single Class that includes the Vapor::Persistable module -->
<!ELEMENT class (attribute+,(index|uniqueness)*)>
<!ATTLIST class name CDATA #REQUIRED>

<!-- attribute: an attribute of the clas -->
<!ELEMENT attribute EMPTY>
<!ATTLIST attribute type (String|Integer|Float|Date|Reference |Boolean) #REQUIRED>
<!ATTLIST attribute is_array (true|false) 'false'>
<!ATTLIST attribute superclass CDATA #IMPLIED>
<!ATTLIST attribute index (true|false) 'false'>
<!ATTLIST attribute unique (true|false) 'false'>

<!-- hint for index creation -->
<!ELEMENT index (attribute)+>

<!-- uniqueness constraint -->
<!ELEMENT unique (attribute)+>

