--- /dev/null
+<!ELEMENT database (collection*)>
+
+<!ELEMENT collection (collection?,data?,link?,scalar?,program?,boolean?,list?,description?,hash?)*>
+<!ATTLIST collection
+ name CDATA #REQUIRED
+ type CDATA #IMPLIED
+ use CDATA #IMPLIED
+ since CDATA #IMPLIED>
+
+<!ELEMENT data (description?)>
+<!ATTLIST data
+ name CDATA #REQUIRED>
+
+
+<!ELEMENT link (default?,description?)>
+<!ATTLIST link
+ name CDATA #REQUIRED
+ type CDATA #IMPLIED
+ since CDATA #IMPLIED>
+<!ELEMENT default (#PCDATA)>
+
+
+<!ELEMENT scalar (default?,description?,restriction?)>
+<!ATTLIST scalar
+ name CDATA #REQUIRED
+ type CDATA #IMPLIED
+ since CDATA #IMPLIED>
+
+
+<!ELEMENT description ANY>
+
+<!ELEMENT program (description?,parameterList?)>
+<!ATTLIST program
+ name CDATA #REQUIRED
+ type CDATA #IMPLIED
+ since CDATA #IMPLIED>
+
+<!ELEMENT boolean (description?)>
+<!ATTLIST boolean
+ name CDATA #REQUIRED
+ default (on|off) #IMPLIED
+ since CDATA #IMPLIED>
+
+<!ELEMENT list (description?,elements?)>
+<!ATTLIST list
+ name CDATA #REQUIRED
+ since CDATA #IMPLIED>
+
+
+<!ELEMENT parameterList (parameter*)>
+<!ELEMENT parameter (description?)>
+<!ATTLIST parameter
+ name CDATA #REQUIRED
+ since CDATA #IMPLIED>
+
+
+<!ELEMENT ulink (#PCDATA)>
+<!ATTLIST ulink
+ url CDATA #REQUIRED
+ since CDATA #IMPLIED>
+
+<!ELEMENT hash (description?,keys*)>
+<!ATTLIST hash
+ name CDATA #REQUIRED
+ since CDATA #IMPLIED>
+
+<!ELEMENT keys (key*)>
+<!ELEMENT key (description?)>
+<!ATTLIST key
+ name CDATA #REQUIRED
+ since CDATA #IMPLIED>
+
+
+<!ELEMENT elements (element*)>
+<!ELEMENT element (description?)>
+<!ATTLIST element
+ name CDATA #REQUIRED
+ since CDATA #IMPLIED>
+
+<!ELEMENT restriction (enumeration*)>
+<!ELEMENT enumeration EMPTY>
+<!ATTLIST enumeration
+ value CDATA #REQUIRED
+ since CDATA #IMPLIED>