<?xml version="1.0" encoding="utf-8"?>
<!-- 
Changes: 
2006-07-10 valentine 
            removed choice. Replaced with Types
            defined TimePeriodType
                TimeIntervalType
                TimeSingleType
            added GeogLocationType to hold the geometry
                redefined LatLongPoint as a type
                defined LatLongBox to hold
                 defined simpleTypes Latitude and Longitude
            added DataSetLocation Element (type GeogLocationType) to dataset info
            removed xlink namespace. Just used the xlink concept (problems getting it to compile with xlink schema)
2006-08-30 valentine
    MANY CHANGES to:
         sync with the Observations Database terminolog
         simplify. Removed many unneeded types. (initial version was Type happy)
         types mostly used only when needed (Geometry, SourceInfo, TimeSeries, Notes, Enumerations).
       *** Element Case Standardize  ****
           All types are PascalCase
           All CUAHSI elements and attributes are camelCase
       * All root response elements are now elements, and not types
          ** SitesResponse
          ** TimeSeriesResponse (not timeSeriesType)
          ** VariablesResponse
       * extension elements added.
           ** These are extension points for groups like
              the USGS that wish to include more information than the normal community uses.
       * enumerations added
          * unitType
          * censorCode  (characters used because symbols make for unmaintainable source code)
             * lt  - less than
             * gt  - greater than
             * nc  - no code
       * variable types consolidated
       * units element added
       * consistent siteID/variableID pattern (both include a XXXCode)
       * Remove many types
          ** too many to list.
       * values == TsValuesType renamed from TsValuesSingleVariableType
          ** split values element out to type  ValueSingleVar (c# change tsValuesTypeValueType to ValueSingleVar).
          ** qualifier elements can be added after the final value element in the Values element.
          *** we don't know the full list of included qualifiers until we get done with the values.
          *** at present, qualifiers attribute in the value element is an aggregated field.
          element block looks like:
          = values
          == value qualifers="A"
          == value qualifers="Ae"
          == qualifier qualifierCode="A"      "Approved"
          == qualifier qualifierCode="e"      "Estimated. This value has been estimated."
2006-09-08
   variableID renamed variableCode
   siteID renamed siteCode
      siteID and variableID attributes added, xxCode removed
   siteCode name moved into siteInfo

2006-09-15
   variable/name to variable/variableName
   variablePeriod to variablePeriodOfObservation

2006-09-17
   added QualityControlLevelEnum
   added attribute qualityControlLevel to valueAttribute group. (affects ValueSingleVariable)
   added qualityControlLevel element, and element to the TSValuesSingleVariableType
   namespace changed to http://www.cuahsi.org/waterML/1.0/
   return to types for top level elements, without this they get named getValuesResponse
   added note to siteInfoElement. We need to put the URL or Retireved from DB not in this block.
   added TimePeriodRealTime. Need to represent real time data.
2006-0920
   variablePeriodofRecorr to seriesCatalog
   variablePeriodOfObservation to series
   variableObservationCount to valueCount (to match the OD)
   added enumerations from the OD
      valueTypeEnum
      generalCategoryEnum
      sampleMediumEnum
      dataTypeEnum
2006-09-24
   queryInfo/criteria/timeParam is now a sequence, since a start or end time can be null
   The community wants it to be easy, and VB and other .net have problems with some values:
      converted xsd:decimal to xsd:double. decimal is not well handled by VB
      converted tsValuesSingleVaribaleType/count from xsd:nonNegativeInteger to xsd:int.
2006-09-28
   API signature has been changed to strings.
   queryInfo/timeInterval/... changed to strings

-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.cuahsi.org/waterML/1.0/" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" targetNamespace="http://www.cuahsi.org/waterML/1.0/" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1">
  <xs:complexType name="SiteInfoType">
    <xs:annotation>
      <xs:documentation>A sampling station is any place where data are collected.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="SourceInfoType">
        <xs:sequence>
          <xs:element name="siteName" type="xs:string" />
          <xs:element name="siteCode" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A siteID is an identifier that this site is referred to as.
					There may be multiple siteID elements. Only one should be labeled as the defaultID (set attribute defaultID=true)
					Multiple siteID elements are allowed because site identifiers may change, 
					and different observation networks may refer to the same site with different identifiers.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:string">
                  <xs:attribute name="defaultId" type="xs:boolean">
                    <xs:annotation>
                      <xs:documentation>
								True if this is the main identifier that this service uses to access this site.
				default value is false.
							</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="network" type="xs:normalizedString" use="required">
                    <xs:annotation>
                      <xs:documentation>The name of the observation network that this site identification is use for.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="siteID" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>
								An identifier of the site, the type of identifier must be specified.
							</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>
          <xs:element minOccurs="0" ref="timeZoneInfo">
            <xs:annotation>
              <xs:documentation>the default time zone for this site (+00:00) and if this site shifts to daylight savings time (attribute: usesDaylightSavingsTime)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="geoLocation" maxOccurs="1" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="geogLocation" type="GeogLocationType" nillable="false">
                </xs:element>
                <xs:element name="localSiteXY" minOccurs="0" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="X" type="xs:double" />
                      <xs:element name="Y" type="xs:double" />
                      <xs:element name="Z" type="xs:double" />
                      <xs:element minOccurs="0" maxOccurs="unbounded" ref="note" />
                    </xs:sequence>
                    <xs:attribute name="projectionInformation" type="xs:string" />
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element ref="note" minOccurs="0" maxOccurs="unbounded" />
          <xs:element ref="extension" />
        </xs:sequence>
        <xs:attributeGroup ref="DbIdentifiers" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TsValuesSingleVariableType">
    <xs:sequence>
      <xs:element name="value" minOccurs="1" maxOccurs="unbounded" type="ValueSingleVariable">
        <xs:annotation>
          <xs:documentation>text</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="qualifier" minOccurs="0" maxOccurs="unbounded" />
      <xs:element ref="qualityControlLevel" />
    </xs:sequence>
    <xs:attribute name="timeZoneShiftApplied" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>True is a webservice has transformed the time zone from the original data.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="unitsAttr">
      <xs:annotation>
        <xs:documentation>the measurment units of the value elements in this values element
          </xs:documentation>
      </xs:annotation>
    </xs:attributeGroup>
    <xs:attribute name="count" type="xs:nonNegativeInteger">
      <xs:annotation>
        <xs:documentation />
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="unitsAreConverted" type="xs:boolean" default="false">
      <xs:annotation>
        <xs:documentation>True is a webservice has transformed the data from the original units.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="VariableInfoType">
    <xs:sequence>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="unbounded" ref="variableCode">
          <xs:annotation>
            <xs:documentation />
          </xs:annotation>
        </xs:element>
        <xs:element name="variableName" type="xs:string" minOccurs="0">
          <xs:annotation>
            <xs:documentation>A brief name of the variable that could be shown in a menu</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="variableDescription" type="xs:string" minOccurs="0">
          <xs:annotation>
            <xs:documentation>A detailed descriptn of the variable. May include processing information and other details.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="valueType" type="valueTypeEnum" minOccurs="0" maxOccurs="1" />
        <xs:element name="generalCategory" type="generalCategoryEnum" minOccurs="0" maxOccurs="1" />
        <xs:element name="sampleMedium" type="SampleMediumEnum" minOccurs="0" maxOccurs="1" />
        <xs:element ref="units">
          <xs:annotation>
            <xs:documentation>The units of the measurement.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element minOccurs="0" maxOccurs="1" ref="options">
          <xs:annotation>
            <xs:documentation>A list of options. Options are key-value pair elements that control how a variable maght be utilized in a serviced.
            Examples are in the MODIS web service. Information is aggreated over land or ocean or both. The plotarea option can include: plotarea=land, plotarea=land, plotarea=landocean</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="note">
          <xs:annotation>
            <xs:documentation />
          </xs:annotation>
        </xs:element>
        <xs:element name="related" minOccurs="0">
          <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
              <xs:element name="parentID">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attributeGroup ref="VocabularyAttributes" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="relatedID">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attributeGroup ref="VocabularyAttributes" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element ref="extension" />
      </xs:sequence>
    </xs:sequence>
    <xs:attributeGroup ref="DbIdentifiers" />
  </xs:complexType>
  <xs:complexType name="QueryInfoType">
    <xs:annotation>
      <xs:documentation />
    </xs:annotation>
    <xs:sequence>
      <xs:element name="creationTime" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="queryURL" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="querySQL" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="criteria" minOccurs="0">
        <xs:complexType>
          <xs:sequence minOccurs="0">
            <xs:element name="locationParam" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:element>
            <xs:element name="variableParam" type="xs:string" minOccurs="0">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:element>
            <xs:element name="timeParam" minOccurs="0">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="beginDateTime" type="xs:string" minOccurs="0" maxOccurs="1" />
                  <xs:element name="endDateTime" type="xs:string" minOccurs="0" maxOccurs="1" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="note" maxOccurs="unbounded" />
      <xs:element ref="extension" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="variables">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="variable" type="VariableInfoType" maxOccurs="unbounded" minOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="VocabularyAttributes">
    <xs:attribute name="network" type="xs:string">
      <xs:annotation>
        <xs:documentation />
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="vocabulary" type="xs:string">
      <xs:annotation>
        <xs:documentation />
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="default" type="xs:boolean" />
  </xs:attributeGroup>
  <xs:attributeGroup name="DbIdentifiers">
    <xs:attribute name="oid" type="xs:normalizedString" />
    <xs:attribute name="metadataDateTime" type="xs:dateTime" />
  </xs:attributeGroup>
  <xs:complexType name="DataSetInfoType">
    <xs:complexContent>
      <xs:extension base="SourceInfoType">
        <xs:sequence>
          <xs:element name="dataSetIdentifier" type="xs:string" />
          <xs:element ref="timeZoneInfo" minOccurs="0" />
          <xs:element name="dataSetDescription" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="note" />
          <xs:element name="dataSetLocation" type="GeogLocationType" maxOccurs="1" minOccurs="0">
          </xs:element>
          <xs:element ref="extension" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="timeZoneInfo">
    <xs:annotation>
      <xs:documentation>the default time zone for this site (+00:00) and if this site shifts to daylight savings time (attribute: usesDaylightSavingsTime)</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="defaultTimeZone" nillable="true">
          <xs:complexType>
            <xs:attributeGroup ref="timeZoneAttr" />
          </xs:complexType>
        </xs:element>
        <xs:element name="daylightSavingsTimeZone" nillable="true">
          <xs:complexType>
            <xs:attributeGroup ref="timeZoneAttr" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="ValueAttr">
    <xs:attribute name="qualifiers" type="xs:string">
      <xs:annotation>
        <xs:documentation />
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="censorCode" type="CensorCodeEnum">
      <xs:annotation>
        <xs:documentation />
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="dateTime" type="xs:dateTime" />
    <xs:attribute name="qualityControlLevel" type="QualityControlLevelEnum" />
    <xs:attribute name="methodID" type="xs:string" />
    <xs:attribute name="sourceID" type="xs:string" />
    <xs:attribute name="accuracyStdDev" type="xs:double" />
    <xs:attribute name="codedVocabulary" type="xs:boolean" />
    <xs:attribute name="codedVocabularyTerm" type="xs:string" />
  </xs:attributeGroup>
  <xs:attributeGroup name="timeZoneAttr">
    <xs:attribute name="ZoneAbbreviation" type="xs:normalizedString" use="optional">
      <xs:annotation>
        <xs:documentation>the standard abbreviation for this time zone (GMT; EST)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ZoneOffset" use="required" type="xs:string">
      <xs:annotation>
        <xs:documentation>Hours and minutes offset for this time zone  (+00:00).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="optionGroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="option" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="DocumentationType" mixed="true">
    <xs:attribute name="type" type="DocumentationEnumTypes" />
    <xs:attributeGroup ref="XLinkAttr" />
  </xs:complexType>
  <xs:simpleType name="DocumentationEnumTypes">
    <xs:union memberTypes="xs:token                                                                  ">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="funding" />
          <xs:enumeration value="history" />
          <xs:enumeration value="processing_level" />
          <xs:enumeration value="rights" />
          <xs:enumeration value="summary" />
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:attributeGroup name="XLinkAttr">
    <xs:attribute name="href" type="xs:string" />
    <xs:attribute name="title" type="xs:string" />
    <xs:attribute name="show" type="xs:string" />
  </xs:attributeGroup>
  <xs:element name="options">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="option" maxOccurs="unbounded" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="SourceInfoType" abstract="false">
    <xs:sequence />
  </xs:complexType>
  <xs:complexType name="TimePeriodType" abstract="false">
    <xs:sequence />
  </xs:complexType>
  <xs:complexType name="TimeIntervalType">
    <xs:complexContent>
      <xs:extension base="TimePeriodType">
        <xs:sequence>
          <xs:element name="beginDateTime" type="xs:dateTime" />
          <xs:element name="endDateTime" type="xs:dateTime" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TimeSingleType">
    <xs:complexContent>
      <xs:extension base="TimePeriodType">
        <xs:sequence>
          <xs:element name="timeSingle" type="xs:dateTime" />
          <xs:element name="beginDateTime" type="xs:dateTime" />
          <xs:element name="endDateTime" type="xs:dateTime" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="GeogLocationType" abstract="false">
    <xs:sequence />
    <xs:attribute name="srs" type="xs:string" default="EPSG:4326" use="optional" />
  </xs:complexType>
  <xs:complexType name="LatLonPointType">
    <xs:complexContent>
      <xs:extension base="GeogLocationType">
        <xs:sequence>
          <xs:element name="latitude" type="Latitude">
            <xs:annotation>
              <xs:documentation>
            The latitude of the site in a decimal degrees as calculated in terms of the given datum.
          </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="longitude" type="Longitude">
            <xs:annotation>
              <xs:documentation>
            The longitude of the site in a decimal degrees as calculated in terms of the given datum.
          </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="LatLonBoxType">
    <xs:complexContent>
      <xs:extension base="GeogLocationType">
        <xs:sequence>
          <xs:element name="south" type="Latitude" />
          <xs:element name="west" type="Longitude" />
          <xs:element name="north" type="Latitude" />
          <xs:element name="east" type="Longitude" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="Longitude">
    <xs:restriction base="xs:double">
      <xs:minInclusive value="-180.00" />
      <xs:maxInclusive value="180.00" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Latitude">
    <xs:restriction base="xs:double">
      <xs:minInclusive value="-90.00" />
      <xs:maxInclusive value="90.00" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="variablesResponse" type="VariablesResponseType">
  </xs:element>
  <xs:complexType name="seriesCatalogType">
    <xs:sequence>
      <xs:element ref="note" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="series" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="dataType" type="dataTypeEnum" minOccurs="0" maxOccurs="1" />
            <xs:element name="variable" type="VariableInfoType">
            </xs:element>
            <xs:element name="valueCount">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:int">
                    <xs:attribute name="countIsEstimated" type="xs:boolean" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:element name="variableTimeInterval" type="TimePeriodType" />
            <xs:element name="valueType" type="valueTypeEnum" minOccurs="0" maxOccurs="1" />
            <xs:element name="generalCategory" type="generalCategoryEnum" minOccurs="0" maxOccurs="1" />
            <xs:element name="sampleMedium" type="SampleMediumEnum" minOccurs="0" maxOccurs="1" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="menuGroupName" type="xs:string" />
    <xs:attribute name="serviceWsdl" type="xs:anyURI" />
  </xs:complexType>
  <xs:attributeGroup name="offsetAttr">
    <xs:attribute name="offsetValue" type="xs:double" />
    <xs:attribute name="offsetUnitsAbbreviation" type="xs:normalizedString" />
    <xs:attribute name="offsetDescription" type="xs:string" />
    <xs:attribute name="offsetUnitsCode" type="xs:normalizedString" />
  </xs:attributeGroup>
  <xs:simpleType name="CensorCodeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="lt" />
      <xs:enumeration value="gt" />
      <xs:enumeration value="nc" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="QualifiersType">
    <xs:sequence>
      <xs:element name="qualifier">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="qualifierCode" type="xs:token" />
          </xs:sequence>
          <xs:attribute name="qualifierID" type="xs:integer" />
          <xs:attributeGroup ref="VocabularyAttributes" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TimeSeriesType">
    <xs:sequence>
      <xs:element name="sourceInfo" type="SourceInfoType">
      </xs:element>
      <xs:element name="variable" type="VariableInfoType" />
      <xs:element name="values" type="TsValuesSingleVariableType" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
  </xs:complexType>
  <xs:element name="timeSeriesResponse" type="TimeSeriesResponseType">
  </xs:element>
  <xs:element name="sitesResponse" type="SiteInfoResponseType">
  </xs:element>
  <xs:element name="note">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="type" type="xs:string" />
          <xs:attributeGroup ref="XLinkAttr" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="option">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="name" type="xs:normalizedString" />
          <xs:attribute name="optionID" type="xs:integer" />
          <xs:attribute name="optionCode" type="xs:token" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="site">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="siteInfo" type="SiteInfoType" />
        <xs:element name="seriesCatalog" type="seriesCatalogType" maxOccurs="unbounded" />
        <xs:element ref="extension" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="variableCode">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="VocabularyAttributes" />
          <xs:attribute name="variableID" type="xs:integer" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="units" nillable="false">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attributeGroup ref="unitsAttr" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="unitsAttr">
    <xs:attribute name="unitsAbbreviation" type="xs:normalizedString" />
    <xs:attribute name="unitsCode" type="xs:token" />
    <xs:attribute name="unitsType" type="UnitsTypeEnum" />
  </xs:attributeGroup>
  <xs:simpleType name="UnitsTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Angle" />
      <xs:enumeration value="Area" />
      <xs:enumeration value="Dimensionless" />
      <xs:enumeration value="Energy" />
      <xs:enumeration value="Energy Flux" />
      <xs:enumeration value="Flow" />
      <xs:enumeration value="Force" />
      <xs:enumeration value="Frequency" />
      <xs:enumeration value="Length" />
      <xs:enumeration value="Light" />
      <xs:enumeration value="Mass" />
      <xs:enumeration value="Permeability" />
      <xs:enumeration value="Power" />
      <xs:enumeration value="Pressure/Stress" />
      <xs:enumeration value="Resolution" />
      <xs:enumeration value="Scale" />
      <xs:enumeration value="Temperature" />
      <xs:enumeration value="Time" />
      <xs:enumeration value="Velocity" />
      <xs:enumeration value="Volume" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ValueSingleVariable">
    <xs:simpleContent>
      <xs:extension base="xs:decimal">
        <xs:attributeGroup ref="ValueAttr" />
        <xs:attributeGroup ref="offsetAttr" />
        <xs:attributeGroup ref="DbIdentifiers" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="qualifier">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="qualifierCode" type="xs:token" />
          <xs:attribute name="qualifierID" type="xs:normalizedString" />
          <xs:attributeGroup ref="DbIdentifiers" />
          <xs:attributeGroup ref="VocabularyAttributes" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="extension" type="xs:anyType">
  </xs:element>
  <xs:complexType name="VariablesResponseType">
    <xs:sequence>
      <xs:element ref="variables" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TimeSeriesResponseType">
    <xs:sequence>
      <xs:element name="queryInfo" type="QueryInfoType" />
      <xs:element name="timeSeries" type="TimeSeriesType" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SiteInfoResponseType">
    <xs:sequence>
      <xs:element name="queryInfo" type="QueryInfoType" />
      <xs:element maxOccurs="unbounded" minOccurs="0" ref="site" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="QualityControlLevelEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Raw data" />
      <xs:enumeration value="Quality controlled data" />
      <xs:enumeration value="Derived products" />
      <xs:enumeration value="Interpreted products" />
      <xs:enumeration value="Knowledge products" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="qualityControlLevel">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="qualityControlLevelID" type="xs:normalizedString" />
      </xs:sequence>
      <xs:attribute name="qualityControlLevelCode" type="xs:string" />
      <xs:attributeGroup ref="DbIdentifiers" />
      <xs:attributeGroup ref="VocabularyAttributes" />
    </xs:complexType>
  </xs:element>
  <xs:complexType name="TimePeriodRealTimeType">
    <xs:complexContent>
      <xs:extension base="TimePeriodType">
        <xs:sequence>
          <xs:element name="realTimeDataPeriod" type="xs:duration" />
          <xs:element name="beginDateTime" type="xs:dateTime" />
          <xs:element name="endDateTime" type="xs:dateTime" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="SampleMediumEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Surface Water" />
      <xs:enumeration value="Ground Water" />
      <xs:enumeration value="Sediment" />
      <xs:enumeration value="Soil" />
      <xs:enumeration value="Air" />
      <xs:enumeration value="Tissue" />
      <xs:enumeration value="Precipitation" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="generalCategoryEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Water Quality" />
      <xs:enumeration value="Climate" />
      <xs:enumeration value="Hydrology" />
      <xs:enumeration value="Geology" />
      <xs:enumeration value="Biota" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="dataTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Continuous" />
      <xs:enumeration value="Instantaneous" />
      <xs:enumeration value="Cumulative" />
      <xs:enumeration value="Incremental" />
      <xs:enumeration value="Average" />
      <xs:enumeration value="Maximum" />
      <xs:enumeration value="Minimum" />
      <xs:enumeration value="Constant Over Interval" />
      <xs:enumeration value="Categorical" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="sampleTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="FD" />
      <xs:enumeration value="FF" />
      <xs:enumeration value="FL" />
      <xs:enumeration value="LF" />
      <xs:enumeration value="GW" />
      <xs:enumeration value="PB" />
      <xs:enumeration value="PD" />
      <xs:enumeration value="PE" />
      <xs:enumeration value="PI" />
      <xs:enumeration value="PW" />
      <xs:enumeration value="RE" />
      <xs:enumeration value="SE" />
      <xs:enumeration value="SR" />
      <xs:enumeration value="SS" />
      <xs:enumeration value="SW" />
      <xs:enumeration value="TE" />
      <xs:enumeration value="TI" />
      <xs:enumeration value="TW" />
      <xs:enumeration value="VE" />
      <xs:enumeration value="VI" />
      <xs:enumeration value="VW" />
      <xs:enumeration value="Grab" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="valueTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Field Observation" />
      <xs:enumeration value="Sample" />
      <xs:enumeration value="Model Simulation Result" />
      <xs:enumeration value="Derived Value" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>