<!--        ###### ZeeRex SGML DTD ######       -->
<!-- Author: Rob Sanderson (azaroth@liv.ac.uk)  -->
<!-- Version: 1.8                               -->
<!-- Date: 16 August, 2002                      -->
<!-- Documentation:  http://explain.z3950.org/  -->


<!ELEMENT explain - - (serverInfo, databaseInfo?, metaInfo?, indexInfo?, (recordInfo|schemaInfo)?, configInfo?)>
<!ATTLIST explain
                  authoritative (true|false) "false"
                  id CDATA #IMPLIED>


<!-- ###### Server Info ###### -->
<!ELEMENT serverInfo - - (host, port, database, authentication?)>
<!ATTLIST serverInfo
                     protocol CDATA "Z39.50"
		     version CDATA "3"
		     wsdl CDATA #IMPLIED>

<!ELEMENT host - - (#PCDATA)>
<!ELEMENT port - - (#PCDATA)>
<!ELEMENT database - - (#PCDATA)>
<!ATTLIST database
                   numRecs CDATA #IMPLIED
                   lastUpdate CDATA #IMPLIED>

<!ELEMENT authentication - - (open | (user?, group?, password?))>
<!ATTLIST authentication
                         required (true|false) "true">
<!ELEMENT open - - (#PCDATA)>
<!ELEMENT user - - (#PCDATA)>
<!ELEMENT group - - (#PCDATA)>
<!ELEMENT password - - (#PCDATA)>


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

<!ELEMENT databaseInfo - - (title*, description*, (author | contact | extent | history | langUsage | restrictions | subjects | links)*  )>


<!-- Note that title is used in more than just databaseInfo -->
<!ELEMENT title - - (#PCDATA)>
<!ATTLIST title
                primary (true|false) #IMPLIED
                lang CDATA #IMPLIED>

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

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

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

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


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

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

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

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

<!ELEMENT links - - (link+)>
<!ELEMENT link - - (#PCDATA)>
<!ATTLIST link
               type CDATA #IMPLIED>

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

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

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


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

<!ELEMENT indexInfo - - ((indexSet | index | sortKeyword)*)>

<!ELEMENT indexSet - - EMPTY>
<!ATTLIST indexSet
 	           name CDATA #REQUIRED
 	           uri CDATA #REQUIRED>

<!ELEMENT index - - (title*, map+, configInfo?)>
<!ATTLIST index
                id CDATA #IMPLIED 
                search (true|false) #IMPLIED
                scan (true|false) #IMPLIED
                sort (true|false) #IMPLIED>


<!ELEMENT sortKeyword - - (#PCDATA)>

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

<!ELEMENT name - - (#PCDATA)>
<!ATTLIST name 
               type CDATA #IMPLIED
               attributeSet CDATA #IMPLIED
	       indexSet CDATA #IMPLIED>

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

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

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

<!-- ###### Schema Info ###### -->

<!ELEMENT schemaInfo - - (schema+)>
<!ELEMENT schema - - (title*, name)>
<!ATTLIST schema
                 uri CDATA #REQUIRED>
		 
<!-- ###### Default Values ###### -->

<!ELEMENT configInfo - - (default*, setting*, supports*)>
<!ELEMENT default - - (#PCDATA)>
<!ATTLIST default
                  type CDATA #REQUIRED>
<!ELEMENT setting - - (#PCDATA)>
<!ATTLIST setting
                  type CDATA #REQUIRED>
<!ELEMENT supports - - (#PCDATA)>
<!ATTLIST supports 
                   type CDATA #REQUIRED>
