On Thu, 13 Apr 2006, Mike Taylor wrote:
>I can't find a ZeeRex 2.1 schema or DTD on the Web, corresponding to
>the one in Appendix A of the Z39.92 DSTU. Do you have it? Thanks.
Attached the DTD and auto-generated schema.
Rob
<!-- ZeeRex DTD, version 2.1/2005-08-04 -->
<!-- Maintainer: Robert Sanderson, [log in to unmask] -->
<!ELEMENT explain (serverInfo, databaseInfo?, metaInfo?, indexInfo?,
(recordInfo|schemaInfo)?, configInfo?)>
<!ATTLIST explain
id CDATA #IMPLIED>
<!-- Server Info -->
<!ELEMENT serverInfo (host, port, database, authentication?)>
<!ATTLIST serverInfo
protocol CDATA #IMPLIED
version CDATA #IMPLIED
transport CDATA #IMPLIED
method CDATA #IMPLIED>
<!ELEMENT host (#PCDATA)>
<!ELEMENT port (#PCDATA)>
<!ELEMENT database (#PCDATA)>
<!ELEMENT authentication (open | (user?, group?, password?))>
<!ATTLIST authentication
type CDATA #IMPLIED
required (true|false) "true">
<!ELEMENT open (#PCDATA)>
<!ELEMENT user (#PCDATA)>
<!ELEMENT group (#PCDATA)>
<!ELEMENT password (#PCDATA)>
<!-- Database Info -->
<!ELEMENT databaseInfo (title*, description*, (extent | history | langUsage | restrictions)*, agents?, links?, implementation?)>
<!-- 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 extent (#PCDATA)>
<!ATTLIST extent
numberOfRecords CDATA #IMPLIED
primary (true|false) #IMPLIED
lang CDATA #IMPLIED>
<!ELEMENT history (#PCDATA)>
<!ATTLIST history
lastUpdate CDATA #IMPLIED
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 agents (agent+)>
<!ELEMENT agent (#PCDATA)>
<!ATTLIST agent
type CDATA #IMPLIED
identifier CDATA #IMPLIED>
<!ELEMENT implementation (agents?, title*)>
<!ATTLIST implementation
identifier CDATA #IMPLIED
version CDATA #IMPLIED>
<!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 ((set | index | sortKeyword)+)>
<!ELEMENT set (title*)>
<!ATTLIST set
name CDATA #REQUIRED
identifier 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
set CDATA #IMPLIED>
<!ELEMENT attr (#PCDATA)>
<!ATTLIST attr
type CDATA #REQUIRED
set CDATA #IMPLIED>
<!-- Record Info and Schema Info -->
<!ELEMENT recordInfo (recordSyntax+)>
<!ELEMENT recordSyntax (elementSet+)>
<!ATTLIST recordSyntax
name CDATA #IMPLIED
identifier CDATA #IMPLIED>
<!ELEMENT elementSet (title*)>
<!ATTLIST elementSet
name CDATA #REQUIRED
identifier CDATA #IMPLIED>
<!ELEMENT schemaInfo (schema+)>
<!ELEMENT schema (title*)>
<!ATTLIST schema
identifier CDATA #REQUIRED
name CDATA #REQUIRED
location CDATA #IMPLIED
sort (true|false) "false"
retrieve (true|false) "true">
<!-- Config Info -->
<!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>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:annotation>
-- This schema was automatically generated by Syntext Dtd2Schema --
-- conversion tool (from file: zeerex-2.1.dtd) --
-- Copyright (C) 2002, 2003 Syntext Inc. See http://www.syntext.com for updates. --
</xs:annotation>
<xs:element name='agent'>
<xs:complexType mixed='true'>
<xs:attribute name='type'/>
<xs:attribute name='identifier'/>
</xs:complexType>
</xs:element>
<xs:element name='agents'>
<xs:complexType>
<xs:sequence>
<xs:element ref='agent' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='aggregatedFrom'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='attr'>
<xs:complexType mixed='true'>
<xs:attribute name='type' use='required'/>
<xs:attribute name='set'/>
</xs:complexType>
</xs:element>
<xs:element name='authentication'>
<xs:complexType>
<xs:choice>
<xs:element ref='open'/>
<xs:sequence>
<xs:element ref='user' minOccurs='0'/>
<xs:element ref='group' minOccurs='0'/>
<xs:element ref='password' minOccurs='0'/>
</xs:sequence>
</xs:choice>
<xs:attribute name='type'/>
<xs:attribute name='required' default='true'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name='configInfo'>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs='0' maxOccurs='unbounded'>
<xs:element ref='default'/>
<xs:element ref='setting'/>
<xs:element ref='supports'/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='database'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='databaseInfo'>
<xs:complexType>
<xs:sequence>
<xs:element ref='title' minOccurs='0' maxOccurs='unbounded'/>
<xs:element ref='description' minOccurs='0' maxOccurs='unbounded'/>
<xs:choice minOccurs='0' maxOccurs='unbounded'>
<xs:element ref='extent'/>
<xs:element ref='history'/>
<xs:element ref='langUsage'/>
<xs:element ref='restrictions'/>
<xs:element ref='agents'/>
<xs:element ref='links'/>
<xs:element ref='implementation'/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='dateAggregated'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='dateModified'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='default'>
<xs:complexType mixed='true'>
<xs:attribute name='type' use='required'/>
</xs:complexType>
</xs:element>
<xs:element name='description'>
<xs:complexType mixed='true'>
<xs:attribute name='primary'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='lang'/>
</xs:complexType>
</xs:element>
<xs:element name='elementSet'>
<xs:complexType>
<xs:sequence>
<xs:element ref='title' minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='name' use='required'/>
<xs:attribute name='identifier'/>
</xs:complexType>
</xs:element>
<xs:element name='explain'>
<xs:complexType>
<xs:sequence>
<xs:element ref='serverInfo'/>
<xs:element ref='databaseInfo' minOccurs='0'/>
<xs:element ref='metaInfo' minOccurs='0'/>
<xs:element ref='indexInfo' minOccurs='0'/>
<xs:choice minOccurs='0'>
<xs:element ref='recordInfo'/>
<xs:element ref='schemaInfo'/>
</xs:choice>
<xs:element ref='configInfo' minOccurs='0'/>
</xs:sequence>
<xs:attribute name='id'/>
</xs:complexType>
</xs:element>
<xs:element name='extent'>
<xs:complexType mixed='true'>
<xs:attribute name='primary'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='lang'/>
</xs:complexType>
</xs:element>
<xs:element name='group'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='history'>
<xs:complexType mixed='true'>
<xs:attribute name='primary'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='lang'/>
</xs:complexType>
</xs:element>
<xs:element name='host'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='implementation'>
<xs:complexType>
<xs:sequence>
<xs:element ref='title' minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='identifier'/>
<xs:attribute name='version'/>
</xs:complexType>
</xs:element>
<xs:element name='index'>
<xs:complexType>
<xs:sequence>
<xs:element ref='title' minOccurs='0' maxOccurs='unbounded'/>
<xs:element ref='map' maxOccurs='unbounded'/>
<xs:element ref='configInfo' minOccurs='0'/>
</xs:sequence>
<xs:attribute name='id'/>
<xs:attribute name='search'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='scan'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='sort'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name='indexInfo'>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs='unbounded'>
<xs:element ref='set'/>
<xs:element ref='index'/>
<xs:element ref='sortKeyword'/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='langUsage'>
<xs:complexType mixed='true'>
<xs:attribute name='codes'/>
<xs:attribute name='primary'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='lang'/>
</xs:complexType>
</xs:element>
<xs:element name='link'>
<xs:complexType mixed='true'>
<xs:attribute name='type'/>
</xs:complexType>
</xs:element>
<xs:element name='links'>
<xs:complexType>
<xs:sequence>
<xs:element ref='agents' minOccurs='0'/>
<xs:element ref='link' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='map'>
<xs:complexType>
<xs:choice>
<xs:element ref='attr' maxOccurs='unbounded'/>
<xs:element ref='name'/>
</xs:choice>
<xs:attribute name='primary' default='false'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name='metaInfo'>
<xs:complexType>
<xs:sequence>
<xs:element ref='dateModified'/>
<xs:sequence minOccurs='0'>
<xs:element ref='aggregatedFrom'/>
<xs:element ref='dateAggregated'/>
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='name'>
<xs:complexType mixed='true'>
<xs:attribute name='set'/>
</xs:complexType>
</xs:element>
<xs:element name='open'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='password'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='port'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='recordInfo'>
<xs:complexType>
<xs:sequence>
<xs:element ref='recordSyntax' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='recordSyntax'>
<xs:complexType>
<xs:sequence>
<xs:element ref='elementSet' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='name'/>
<xs:attribute name='identifier'/>
</xs:complexType>
</xs:element>
<xs:element name='restrictions'>
<xs:complexType mixed='true'>
<xs:attribute name='primary'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='lang'/>
</xs:complexType>
</xs:element>
<xs:element name='schema'>
<xs:complexType>
<xs:sequence>
<xs:element ref='title' minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='identifier' use='required'/>
<xs:attribute name='name' use='required'/>
<xs:attribute name='location'/>
<xs:attribute name='sort' default='false'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='retrieve' default='true'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name='schemaInfo'>
<xs:complexType>
<xs:sequence>
<xs:element ref='schema' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='serverInfo'>
<xs:complexType>
<xs:sequence>
<xs:element ref='host'/>
<xs:element ref='port'/>
<xs:element ref='database'/>
<xs:element ref='authentication' minOccurs='0'/>
</xs:sequence>
<xs:attribute name='protocol'/>
<xs:attribute name='version'/>
<xs:attribute name='transport'/>
<xs:attribute name='method'/>
</xs:complexType>
</xs:element>
<xs:element name='set'>
<xs:complexType>
<xs:sequence>
<xs:element ref='title' minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='name' use='required'/>
<xs:attribute name='identifier' use='required'/>
</xs:complexType>
</xs:element>
<xs:element name='setting'>
<xs:complexType mixed='true'>
<xs:attribute name='type' use='required'/>
</xs:complexType>
</xs:element>
<xs:element name='sortKeyword'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
<xs:element name='supports'>
<xs:complexType mixed='true'>
<xs:attribute name='type' use='required'/>
</xs:complexType>
</xs:element>
<xs:element name='title'>
<xs:complexType mixed='true'>
<xs:attribute name='primary'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='true'/>
<xs:enumeration value='false'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='lang'/>
</xs:complexType>
</xs:element>
<xs:element name='user'>
<xs:complexType mixed='true'>
</xs:complexType>
</xs:element>
</xs:schema>
|