The GetCapapbilities element is used to request that a Web Feature Service generate an XML document describing the organization providing the service, the WFS operations that the service supports, a list of feature types that the service can operate on and list of filtering capabilities that the service support. Such an XML document is called a capabilities document. The DescribeFeatureType element is used to request that a Web Feature Service generate a document describing one or more feature types. The GetFeature element is used to request that a Web Feature Service return feature instances of one or more feature types. This element is a container for the response to a GetFeature or GetFeatureWithLock (WFS-transaction.xsd) request. This type defines the GetCapabilities operation. In response to a GetCapabilities request, a Web Feature Service must generate a capabilities XML document that validates against the schemas defined in WFS-capabilities.xsd. The DescribeFeatureType operation allows a client application to request that a Web Feature Service describe one or more feature types. A Web Feature Service must be able to generate feature descriptions as valid GML2 application schemas. The schemas generated by the DescribeFeatureType operation can be used by a client application to validate the output. Feature instances within the WFS interface must be specified using GML2. The schema of feature instances specified within the WFS interface must validate against the feature schemas generated by the DescribeFeatureType request. The TypeName element is used to enumerate the feature types to be described. If no TypeName elements are specified then all features should be described. The outputFormat attribute is used to specify what schema description language should be used to describe features. The default value of XMLSCHEMA means that the Web Feature Service must generate a GML2 application schema that can be used to validate the GML2 output of a GetFeature request or feature instances specified in Transaction operations. A GetFeature element contains one or more Query elements that describe a query operation on one feature type. In response to a GetFeature request, a Web Feature Service must be able to generate a GML2 response that validates using a schema generated by the DescribeFeatureType request. A Web Feature Service may support other possibly non-XML (and even binary) output formats as long as those formats are advertised in the capabilities document. The outputFormat attribute is used to specify the output format that the Web Feature Service should generate in response to a GetFeature or GetFeatureWithLock element. The default value of GML2 indicates that the output is an XML document that conforms to the Geography Markup Language (GML) Implementation Specification V2.0. Other values may be used to specify other formats as long as those values are advertised in the capabilities document. For example, the value WKB may be used to indicate that a Well Known Binary format be used to encode the output. The maxFeatures attribute is used to specify the maximum number of features that a GetFeature operation should generate (regardless of the actual number of query hits). The Query element is used to describe a single query. One or more Query elements can be specified inside a GetFeature element so that multiple queries can be executed in one request. The output from the various queries are combined in a wfs:FeatureCollection element to form the response to the request. The Query element is of type QueryType. The PropertyName element is used to specify one or more properties of a feature whose values are to be retrieved by a Web Feature Service. While a Web Feature Service should endeavour to satisfy the exact request specified, in some instance this may not be possible. Specifically, a Web Feature Service must generate a valid GML2 response to a Query operation. The schema used to generate the output may include properties that are mandatory. In order that the output validates, these mandatory properties must be specified in the request. If they are not, a Web Feature Service may add them automatically to the Query before processing it. Thus a client application should, in general, be prepared to receive more properties than it requested. Of course, using the DescribeFeatureType request, a client application can determine which properties are mandatory and request them in the first place. The Filter element is used to define spatial and/or non-spatial constraints on query. Spatial constrains use GML2 to specify the constraining geometry. A full description of the Filter element can be found in the Filter Encoding Implementation Specification. For systems that implement versioning, the featureVersion attribute is used to specify which version of a particular feature instance is to be retrieved. A value of ALL means that all versions should be retrieved. An integer value 'i', means that the ith version should be retrieve if it exists or the most recent version otherwise. This type defines a container for the response to a GetFeature or GetFeatureWithLock request. If the request is GetFeatureWithLock, the lockId attribute must be populated. The lockId attribute can otherwise be safely ignored. The value of the lockId attribute is an identifier that a Web Feature Service generates and which a client application can use in subsequent operations (such as a Transaction request) to reference the set of locked features.