GetRecords Operation
Excerpted from OGC 04-021r2 OpenGIS Catalogue Services Specification
1. Introduction
The primary means of resource discovery in the general model
are the two operations search and present. In the HTTP protocol binding these
are combined in the form of the mandatory GetRecords operation, which does a
search and a piggybacked present.
2. XML-Schema
The following XML-Schema fragment defines the XML encoding of the GetRecords operation request:
<xsd:element name="GetRecords"
type="csw:GetRecordsType"/>
<xsd:complexType name="GetRecordsType">
<xsd:complexContent>
<xsd:extension base="csw:RequestBaseType">
<xsd:sequence>
<xsd:element name="DistributedSearch"
type="csw:DistributedSearchType"
minOccurs="0"/>
<xsd:element name="ResponseHandler" type="xsd:anyURI"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="csw:AbstractQuery"/>
</xsd:sequence>
<xsd:attribute name="requestId"
type="xsd:anyURI" use="optional" />
<xsd:attribute name="resultType" type="csw:ResultType"
use="optional" default="hits"/>
<xsd:attributeGroup ref="csw:BasicRetrievalOptions"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:attributeGroup name="BasicRetrievalOptions">
<xsd:attribute name="outputFormat"
type="xsd:string"
use="optional" default="text/xml"/>
<xsd:attribute name="outputSchema"
type="xsd:anyURI"
use="optional" default="OGCCORE"/>
<xsd:attribute name="startPosition"
type="xsd:positiveInteger"
use="optional" default="1"/>
<xsd:attribute name="maxRecords"
type="xsd:nonNegativeInteger"
use="optional" default="10"/>
</xsd:attributeGroup>
<xsd:simpleType name="ResultTypeType" id="ResultTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="HITS"/>
<xsd:enumeration value="VALIDATE"/>
<xsd:enumeration value="RESULTS"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="DistributedSearchType">
<xsd:attribute name="hopCount"
type="xsd:positiveInteger">
use="optional" default="2"/>
</xsd:complexType>
<xsd:element name="AbstractQuery"
type="csw:AbstractQueryType" abstract="true"/>
<xsd:complexType name="AbstractQueryType" abstract="true"/>
<xsd:element name="Query"
type="csw:QueryType"
substitutionGroup="csw:AbstractQuery"/>
<xsd:complexType name="QueryType">
<xsd:complexContent>
<xsd:extension base="csw:AbstractQueryType">
<xsd:sequence>
<xsd:choice>
<xsd:element ref="csw:ElementSetName" />
<xsd:element name="ElementName"
type="xsd:anyURI"
minOccurs="1" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:element ref="csw:Constraint"
minOccurs="0" maxOccurs="1"/>
<xsd:element ref="ogc:SortBy"
minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="typeNames"
type="csw:TypeNameListType" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="TypeNameListType">
<xsd:list itemType="xsd:anyURI"/>
</xsd:simpleType>
<xsd:element name="Constraint" type="csw:QueryConstraintType"/>
<xsd:complexType name="QueryConstraintType">
<xsd:choice>
<xsd:element ref="ogc:Filter"/>
<xsd:element name="CqlText" type="xsd:string" />
</xsd:choice>
<xsd:attribute name="version" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:element name="ElementSetName"
type="csw:ElementSetNameType" default="summary" />
<xsd:complexType name="ElementSetNameType" id="ElementSetNameType">
<xsd:simpleContent>
<xsd:extension base="csw:ElementSetType">
<xsd:attribute name="typeNames"
type="csw:TypeNameListType" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="ElementSetType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="brief"/>
<xsd:enumeration value="summary"/>
<xsd:enumeration value="full"/>
</xsd:restriction>
</xsd:simpleType>