<?xml version="1.0" encoding="UTF-8"?>
<!-- ZiNG SRU/SRW WSDL Specification -->
<!-- Version 1.0 -->
<!-- -->
<!-- Editors: -->
<!-- Matthew J. Dovey, Oxford University -->
<!-- Poul Henrik Jorgensen, Portia -->
<!-- Rob Sanderson, Liverpool University -->
<!-- -->
<!-- Contributors: -->
<!-- Ray Denenberg, Library of Congress -->
<!-- Adam Dickmeiss, IndexData -->
<!-- Larry Dixon, Library of Congress -->
<!-- Janifer Gatenby, PICA -->
<!-- Sebastian Hammer, IndexData -->
<!-- Ian Ibbotson, Knowledge Integration -->
<!-- Alan Kent, InQuirion Pty Ltd -->
<!-- Ralph Le Van, OCLC -->
<!-- Pat Stevens, OCLC -->
<!-- Mike Taylor, Independent Consultant -->
<!-- Ashley Sanders, Manchester University -->
<!-- Ben Soares, Edina -->
<!-- Theo van Veen, Koninlijke Bibliotheek -->
<!-- -->
<!-- -->
<!-- History: -->
<!-- 2002-07-14 Initial Draft -->
<!-- 2002-07-24 Service description modifications -->
<!-- 2002-09-12 Removed Authentication parameter -->
<!-- 2002-10-31 Incorporated corrections from PHJ -->
<!-- 2002-11-15 Release candidate -->
<!-- 2002-11-22 recordNumber to recordPosition -->
<!-- 2002-11-22 unknownParameter added -->
<!-- 2002-12-02 Corrected types -->
<!-- 2002-12-04 Removed redundant types -->
<!-- -->
<!-- -->
<xs:schema targetNamespace="http://www.loc.gov/zing/srw/v1.0/"
xmlns:diag="http://www.loc.gov/zing/srw/v1.0/diagnostic/"
xmlns:xsortkeys="http://www.loc.gov/zing/srw/v1.0/xsortkeys/"
xmlns:xcql="http://www.loc.gov/zing/cql/v1.0/xcql/"
xmlns="http://www.loc.gov/zing/srw/v1.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.loc.gov/zing/cql/v1.0/xcql/" schemaLocation="http://www.loc.gov/z3950/agency/zing/cql/xcql.xsd"/>
<xs:import namespace="http://www.loc.gov/zing/srw/v1.0/xsortkeys/" schemaLocation="http://www.loc.gov/z3950/agency/zing/srw/xsort.xsd"/>
<xs:import namespace="http://www.loc.gov/zing/srw/v1.0/diagnostic/" schemaLocation="http://www.loc.gov/z3950/agency/zing/srw/diagnostic.xsd"/>
<xs:complexType name="recordType">
<xs:sequence>
<xs:element name="recordSchema" type="xs:string"/>
<xs:element name="recordData" type="xs:string"/>
<xs:element name="recordPosition" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="searchRetrieveRequestType">
<xs:sequence>
<xs:choice>
<xs:element name="query" type="xs:string"/>
<xs:element name="xQuery" type="xcql:operandType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="sortKeys" type="xs:string"/>
<xs:element name="xSortKeys" type="xsortkeys:xSortKeysType"/>
</xs:choice>
<xs:element name="startRecord" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="maximumRecords" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="recordSchema" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="searchRetrieveResponseType">
<xs:sequence>
<xs:element name="numberOfRecords">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="resultSetId" type="xs:string" minOccurs="0"/>
<xs:element name="resultSetIdleTime" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="records" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="record" type="recordType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="diagnostics" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="diag:diagnostic" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="nextRecordPosition" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="echoedRequest" type="echoedRequestType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="searchRetrieveRequest" type="searchRetrieveRequestType"/>
<xs:element name="searchRetrieveResponse" type="searchRetrieveResponseType"/>
<xs:element name="explainRequest" type="explainRequestType"/>
<xs:element name="explainResponse" type="explainResponseType"/>
<xs:complexType name="explainRequestType"/>
<xs:complexType name="explainResponseType">
<xs:sequence>
<xs:element name="Explain" type="zeerexRecord"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="zeerexRecord">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="echoedRequestType" mixed="false">
<xs:complexContent mixed="false">
<xs:extension base="searchRetrieveRequestType">
<xs:sequence>
<xs:element name="unknownParameter" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="parameterName" type="xs:string"/>
<xs:element name="parameterValue" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>