<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Nathan Potter (OSU-COAS) -->
<xs:schema 
 targetNamespace="http://xml.opendap.org/ns/DAP2"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:dap2="http://xml.opendap.org/ns/DAP2"
 xmlns="http://xml.opendap.org/ns/DAP2"
 elementFormDefault="qualified" 
 attributeFormDefault="unqualified">
	<!--
	
	-->
	<xs:element name="Dataset" type="DODS_Dataset"/>
	<xs:element name="Map" type="Array"/>
	<xs:element name="Attribute" type="DASAttribute"/>
	<xs:element name="Alias" type="DASAlias"/>
	<xs:element name="Byte" type="BaseType"/>
	<xs:element name="Int16" type="BaseType"/>
	<xs:element name="UInt16" type="BaseType"/>
	<xs:element name="Int32" type="BaseType"/>
	<xs:element name="UInt32" type="BaseType"/>
	<xs:element name="Float32" type="BaseType"/>
	<xs:element name="Float64" type="BaseType"/>
	<xs:element name="String" type="BaseType"/>
	<xs:element name="Url" type="BaseType"/>
	<xs:element name="Array" type="Array"/>
	<xs:element name="Grid" type="Grid"/>
	<xs:element name="Structure" type="Structure"/>
	<xs:element name="Sequence" type="Sequence"/>
	<!-- -->
	<xs:element name="dataBLOB" type="BLOB"/>
	<!--
	
	-->
	<xs:group name="allDodsTypes">
		<xs:annotation>
			<xs:documentation>Reusable Content Model for Complex DODS types</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element ref="Byte" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Int16" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="UInt16" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Int32" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="UInt32" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Float32" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Float64" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="String" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Url" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Array" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Grid" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Structure" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Sequence" minOccurs="0" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:group>
	<!--
	
	-->
	<xs:complexType name="DODS_Dataset">
		<xs:annotation>
			<xs:documentation>This is the XML representation of a DODS DDS object.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="Attribute" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Alias" minOccurs="0" maxOccurs="unbounded"/>
			<xs:group ref="allDodsTypes" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dataBLOB" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string" use="required"/>
	</xs:complexType>
	<!--
	
	-->
	<xs:complexType name="DASAttribute">
		<xs:annotation>
			<xs:documentation>DAS Attribute Type</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:sequence>
				<xs:element name="value" type="xs:string" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:sequence>
				<xs:element ref="Attribute" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="Alias" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:choice>
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="type" type="dap2:DataType" use="required"/>
	</xs:complexType>
	<!--
	
	 -->
	<xs:complexType name="DASAlias">
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="Attribute" type="xs:string" use="required"/>
	</xs:complexType>
	<!--
	
	 -->
	<!-- possible data types for Variable, Attribute objects -->
	<xs:simpleType name="DataType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Byte"/>
			<xs:enumeration value="Int16"/>
			<xs:enumeration value="UInt16"/>
			<xs:enumeration value="Int32"/>
			<xs:enumeration value="UInt32"/>
			<xs:enumeration value="Float32"/>
			<xs:enumeration value="Float64"/>
			<xs:enumeration value="String"/>
			<xs:enumeration value="URL"/>
			<xs:enumeration value="Container"/>
		</xs:restriction>
	</xs:simpleType>
	<!--
	
	-->
	<xs:complexType name="BaseType">
		<xs:annotation>
			<xs:documentation>DODS Base Type</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="Attribute" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="Alias" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string"/>
	</xs:complexType>
	<!--
	
	-->
	<xs:complexType name="Array">
		<xs:complexContent>
			<xs:extension base="BaseType">
				<xs:sequence>
					<xs:choice minOccurs="1" maxOccurs="1">
						<xs:element ref="Byte"/>
						<xs:element ref="Int16"/>
						<xs:element ref="UInt16"/>
						<xs:element ref="Int32"/>
						<xs:element ref="UInt32"/>
						<xs:element ref="Float32"/>
						<xs:element ref="Float64"/>
						<xs:element ref="String"/>
						<xs:element ref="Url"/>
						<xs:element ref="Grid"/>
						<xs:element ref="Structure"/>
						<xs:element ref="Sequence"/>
					</xs:choice>
					<xs:element name="dimension" type="dap2:ArrayDimension" minOccurs="1" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--
	-->
	<xs:complexType name="ArrayDimension">
		<xs:attribute name="name" type="xs:string"/>
		<xs:attribute name="size" type="xs:integer" use="required"/>
	</xs:complexType>
	<!--
	
	-->
	<xs:complexType name="Grid">
		<xs:complexContent>
			<xs:extension base="dap2:BaseType">
				<xs:sequence>
					<xs:element ref="Array" minOccurs="1" maxOccurs="1"/>
					<xs:element ref="Map" minOccurs="1" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--

	-->
	<xs:complexType name="Structure">
		<xs:complexContent>
			<xs:extension base="BaseType">
				<xs:group ref="allDodsTypes" minOccurs="1" maxOccurs="unbounded"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--

	-->
	<xs:complexType name="Sequence">
		<xs:complexContent>
			<xs:extension base="BaseType">
				<xs:group ref="allDodsTypes" minOccurs="1" maxOccurs="unbounded"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!--	

	-->
	<xs:complexType name="BLOB">
		<xs:attribute name="href" type="xs:string" use="required"/>
	</xs:complexType>
	<!--
	
	 -->
</xs:schema>
