<!-- ###### Explain-- DTD ###### -->

<!ELEMENT explain - - (serverInfo, databaseInfo?, metaInfo?, indexInfo?, recordInfo?)>
<!ATTLIST explain
                                 id CDATA #implied>


<!-- ###### SERVER INFO ###### -->
<!ELEMENT serverInfo - - (host+, port, database)>
<!ATTLIST serverInfo
                                 authentication (true|false) #implied>

<!ELEMENT (host|port|database) - - (#PCDATA)>
<!ATTLIST host
                                  primary (true|false) #implied>
<!ATTLIST database
                                  numrecs CDATA #implied
                                  lastupdate CDATA #implied>

<!-- ###### DATABASE INFO ###### -->

<!ELEMENT databaseInfo - - (title, description)>
<!ELEMENT (title|description) - - (#PCDATA)>


<!-- ###### META INFO ###### -->

<!ELEMENT metaInfo - - (dateCreated, (aggregatedFrom, dateAggregated)?)>

<!ELEMENT (dateCreated|aggregatedFrom|dateAggregated) - - (#PCDATA)>


<!-- ###### INDEX INFO ###### -->

<!ELEMENT indexInfo - - (index+, sortKeyword*)>

<!ELEMENT index - - (indexTitle?, indexType?, map+)>
<!ATTLIST index
                               id CDATA #implied 
                               search (true|false) #implied
                               scan (true|false) #implied
                               sort (true|false) #implied>

<!ELEMENT (indexTitle|indexType) - - (#PCDATA)>
<!ATTLIST indexTitle
                              primary (true|false) #implied
                              lang CDATA #implied>

<!ELEMENT map - - ((use|posit|struct|relat|trunc|complet|access|semantic|language|content|expan|weight|hitcount|compar|occur|indirect|func|form)*)>
<!ATTLIST map
                             attributeset CDATA #implied
                             primary (true|false) #implied>

<!ELEMENT (use|posit|struct|relat|trunc|access|semantic|language|content|expan|weight|hitcount|compar|occur|indirect|func|complet|form) - - (#PCDATA)>
<!ATTLIST (access|semantic|language|content|expan|weight|hitcount|compar|occur|indirect|func|form)
                             attributeset CDATA #implied>

<!ELEMENT sortKeyword - - (#PCDATA)>

<!-- ###### RECORD INFO ###### -->

<!ELEMENT recordInfo - - (format+)>
<!ELEMENT format - - (elementset+)>
<!ATTLIST format
                              name CDATA #required>
<!ELEMENT elementset - - (#PCDATA)>
