<!-- see http://www.unidata.ucar.edu/thredds -->
<!ENTITY % DataType "Grid | Image | Station | GIF | Unknown">
<!ENTITY % ServiceType "DODS | ADDE | NetCDF | Catalog | QueryCapability | Resolver | HTTP | FTP | GridFTP | WMS | WFS | WCS | WSDL | Compound | Other | XML">
<!ENTITY % MetadataType "THREDDS | ADN  | Aggregation | CatalogGenConfig | DublinCore | DIF | FGDC | LAS | NetCDF | ESG | Other">
<!-- top-level element -->
<!ELEMENT catalog (dataset)>
<!ATTLIST catalog
	name CDATA #REQUIRED
	version CDATA #REQUIRED
	xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
	xmlns CDATA #FIXED "http://www.unidata.ucar.edu/thredds"
>
<!-- only service type Compound can have nested services-->
<!ELEMENT service (property*, service*)>
<!ATTLIST service
	name CDATA #REQUIRED
	serviceType (%ServiceType;) #REQUIRED
	base CDATA #REQUIRED
	suffix CDATA #IMPLIED
>
<!-- use access elements when there are multiple services -->
<!ELEMENT dataset ((service | documentation | metadata | property)*, access*, (dataset | catalogRef)*)>
<!ATTLIST dataset
	name CDATA #REQUIRED
	dataType (%DataType;) #IMPLIED
	authority CDATA #IMPLIED
	ID ID #IMPLIED
	alias IDREF #IMPLIED
	serviceName CDATA #IMPLIED
	urlPath CDATA #IMPLIED
>
<!-- use serviceID and relative URL -OR- serviceType and absolute URL -->
<!ELEMENT access EMPTY>
<!ATTLIST access
	urlPath CDATA #REQUIRED
	serviceName CDATA #IMPLIED
	serviceType (%ServiceType;) #IMPLIED
>
<!-- display this info to the user during the selection process -->
<!ELEMENT documentation (#PCDATA)>
<!ATTLIST documentation
	xlink:type (simple) #FIXED "simple"
	xlink:href CDATA #IMPLIED
	xlink:title CDATA #IMPLIED
	xlink:show (new | replace | embed) "new"
>
<!-- these are optional structured metadata, not typically shown to the user in the dataset chooser -->
<!ELEMENT metadata ANY>
<!ATTLIST metadata
	xlink:type (simple) #FIXED "simple"
	xlink:href CDATA #IMPLIED
	metadataType (%MetadataType;) #REQUIRED
>
<!-- external catalog gets added as a collection -->
<!ELEMENT catalogRef (documentation*)>
<!ATTLIST catalogRef
	xlink:type (simple) #FIXED "simple"
	xlink:href CDATA #REQUIRED
	xlink:title CDATA #REQUIRED
>
<!-- arbitrary name/value pairs to associate with the dataset, collection or service -->
<!ELEMENT property EMPTY>
<!ATTLIST property
	name CDATA #REQUIRED
	value CDATA #REQUIRED
>

