<!ENTITY % ServiceType "DODS | ADDE | NetCDF | Catalog | FTP | WMS |
% WFS | WCS | WSDL | Compound | Other">
<!ELEMENT service (property*, service*)>
<!ATTLIST service
name CDATA #REQUIRED
serviceType (%ServiceType;) #REQUIRED
base CDATA #REQUIRED
suffix CDATA #IMPLIED
>
A service element represents a data service. It must contain a name and a serviceType attribute whose value comes from a controlled vocabulary. It must contain a name unique within the catalog (note that catalogs referenced by a catalogRef contain their own ID namespaces). It must have a base attribute and may have an optional suffix atribute which are used to construct the dataset URL (see constructing URLS). A service element may contain 0 or more property elements. These property elements are made available to the application when a dataset is selected, but are not otherwise used.
The scope of a service element is its sibling elements and their descendents, excluding catalogs referenced by catalogRef elements. The service name should be unique within its scope.
A service element with serviceType equal to
Compound must have nested service elements, and services with
type other than Compound may not have nested service
elements. Nested service elements may be used directly by
dataset or access elements. They are at the same
scoping level as their parent service.
Each dataset element must refer to one or more service elements that appear in a parent collection. Since typically there will be only a few service elements in a catalog but many dataset elements, a service element factors out the common properties of the data service for efficient representation within the catalog.