
<!-- ###### Explain minus minus SGML 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) "false">

<!ELEMENT host - - (#PCDATA)>
<!ATTLIST host
               primary (true|false) "false">

<!ELEMENT port - - (#PCDATA)>
<!ELEMENT database - - (#PCDATA)>
<!ATTLIST database
                   numrecs CDATA #IMPLIED
                   lastupdate CDATA #IMPLIED>

<!-- ###### Database Info ###### -->

<!ELEMENT databaseInfo - - (title, description, (author | contact | extent | history | langUsage | restrictions | subjects)*  )>
<!ELEMENT title - - (#PCDATA)>
<!ATTLIST title
                primary (true|false) "false"
                lang CDATA #IMPLIED>

<!ELEMENT description - - (#PCDATA)>
<!ATTLIST description
                      primary (true|false) "false"
                      lang CDATA #IMPLIED>

<!ELEMENT author - - (#PCDATA)>
<!ATTLIST author
                 primary (true|false) "false"
                 lang CDATA #IMPLIED>

<!ELEMENT contact - - (#PCDATA)>
<!ATTLIST author
                  primary (true|false) "false"
                  lang CDATA #IMPLIED>

<!ELEMENT extent - - (#PCDATA)>
<!ATTLIST extent
                 primary (true|false) "false"
                 lang CDATA #IMPLIED>


<!ELEMENT history - - (#PCDATA)>
<!ATTLIST history
                  primary (true|false) "false"
                  lang CDATA #IMPLIED>

<!ELEMENT langUsage - - (#PCDATA)>
<!ATTLIST langUsage
                    codes CDATA #IMPLIED
                    primary (true|false) "false"
                    lang CDATA #IMPLIED>

<!ELEMENT restrictions - - (#PCDATA)>
<!ATTLIST restrictions
                       primary (true|false) "false"
                       lang CDATA #IMPLIED>

<!ELEMENT subjects - - (subject+)>
<!ELEMENT subject - - (#PCDATA)>


<!-- ###### Meta Info ###### -->

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

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


<!-- ###### Index Info ###### -->

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

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

<!ELEMENT indexType - - (#PCDATA)>
<!ELEMENT indexTitle - - (#PCDATA)>

<!ATTLIST indexTitle
                     primary (true|false) "false"
                     lang CDATA #IMPLIED>

<!ELEMENT sortKeyword - - (#PCDATA)>

<!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) "false">

<!ELEMENT use - - (#PCDATA)>
<!ATTLIST use
              attributeset CDATA #IMPLIED>

<!ELEMENT posit - - (#PCDATA)>
<!ATTLIST posit
                attributeset CDATA #IMPLIED>

<!ELEMENT struct - - (#PCDATA)>
<!ATTLIST struct
                 attributeset CDATA #IMPLIED>

<!ELEMENT relat - - (#PCDATA)>
<!ATTLIST relat
                attributeset CDATA #IMPLIED>

<!ELEMENT trunc - - (#PCDATA)>
<!ATTLIST trunc
                attributeset CDATA #IMPLIED>

<!ELEMENT access - - (#PCDATA)>
<!ATTLIST access
                 attributeset CDATA #IMPLIED>

<!ELEMENT semantic - - (#PCDATA)>
<!ATTLIST semantic
                   attributeset CDATA #IMPLIED>

<!ELEMENT language - - (#PCDATA)>
<!ATTLIST language
                   attributeset CDATA #IMPLIED>

<!ELEMENT content - - (#PCDATA)>
<!ATTLIST content
                  attributeset CDATA #IMPLIED>

<!ELEMENT expan - - (#PCDATA)>
<!ATTLIST expan
                attributeset CDATA #IMPLIED>

<!ELEMENT weight - - (#PCDATA)>
<!ATTLIST weight
                 attributeset CDATA #IMPLIED>

<!ELEMENT hitcount - - (#PCDATA)>
<!ATTLIST hitcount
                   attributeset CDATA #IMPLIED>

<!ELEMENT compar - - (#PCDATA)>
<!ATTLIST compar
                 attributeset CDATA #IMPLIED>

<!ELEMENT occur - - (#PCDATA)>
<!ATTLIST occur
                attributeset CDATA #IMPLIED>

<!ELEMENT indirect - - (#PCDATA)>
<!ATTLIST indirect
                   attributeset CDATA #IMPLIED>

<!ELEMENT func - - (#PCDATA)>
<!ATTLIST func
               attributeset CDATA #IMPLIED>

<!ELEMENT complet - - (#PCDATA)>
<!ATTLIST compet
                  attributeset CDATA #IMPLIED>

<!ELEMENT form - - (#PCDATA)>
<!ATTLIST form
               attributeset CDATA #IMPLIED>


<!-- ###### Record Info ###### -->

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

