
<!-- ###### Explain minus minus SGML DTD ###### -->
<!-- Author: Rob Sanderson (azaroth@liv.ac.uk)  -->
<!-- Version: 1.3                               -->
<!-- Date: 12 March, 2002                       -->
<!-- Documentation:  http://explain.z3950.org/  -->


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


<!-- ###### Server Info ###### -->
<!ELEMENT serverInfo - - (host+, port, database)>
<!ATTLIST serverInfo
                     protocol CDATA "Z39.50"
                     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)*  )>


<!-- Note that title is used in more than just databaseInfo -->
<!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 - - (title*, map+)>
<!ATTLIST index
                id CDATA #IMPLIED 
                search (true|false) "false"
                scan (true|false) "false"
                sort (true|false) "false">


<!ELEMENT sortKeyword - - (#PCDATA)>

<!ELEMENT map - - (name|attr+)>
<!ATTLIST map
              attributeSet CDATA #IMPLIED
              primary (true|false) "false">

<!ELEMENT name - - (#PCDATA)>

<!ELEMENT attr - - (#PCDATA)>
<!ATTLIST attr
               type CDATA #REQUIRED
               attributeSet CDATA "BIB1">

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

<!ELEMENT recordInfo - - (recordSyntax+)>
<!ELEMENT recordSyntax - - (elementSet+)>
<!ATTLIST recordSyntax
                              name CDATA #REQUIRED>
<!ELEMENT elementSet - - (title*)>
<!ATTLIST elementSet
                              name CDATA #REQUIRED>

