<?xml version="1.0" encoding="UTF-8"?>

<xs:schema
  version         = "1.0"
  xmlns:xs        = "http://www.w3.org/2001/XMLSchema"
  targetNamespace = "http://www.nrao.edu/namespaces/sss"
  xmlns:sss       = "http://www.nrao.edu/namespaces/sss"
  elementFormDefault = "qualified">

  <xs:include schemaLocation="../../util/1.37.02/commons.xsd"/>
  <xs:include schemaLocation="../../util/1.37.02/measure.xsd"/>
  <xs:include schemaLocation="../../util/1.37.02/astronomy.xsd"/>
  <xs:include schemaLocation="../../util/1.37.02/geom.xsd"/>
  <xs:include schemaLocation="resource.xsd"/>
  <xs:include schemaLocation="source.xsd"/>
    
  <!-- ================================================== -->
  <!-- ||||||||||||||||  ELEMENTS  |||||||||||||||||||||| -->
  <!-- ================================================== -->
  
  <!--
    JIRA EVL-2294: the scans can no longer be root elements
    because they reference sources and resources found in
    other elements.   
    -->
   
  <!-- ================================================== -->
  <!-- ||||||||||||||||  COMPLEX TYPES  ||||||||||||||||| -->
  <!-- ================================================== -->
              
  <xs:complexType name="scanLoop">
    <xs:sequence>
      <xs:group    ref="sss:userTrackable"/>
      <xs:element name="comments"        type="xs:string"    minOccurs="0"/>
      <xs:element name="maximumDuration" type="sss:timeDuration"/>
      <xs:sequence>
        <xs:element name="elements" type="sss:scanLoopElement"/>
      </xs:sequence>
    </xs:sequence>
    <xs:attribute name="id"             type="xs:long"         use="required"/>
    <xs:attribute name="name"           type="sss:nameString"  use="required"/>
    <xs:attribute name="iterationCount" type="xs:int"          use="required"/>
    <xs:attribute name="bracketed"      type="xs:boolean"      use="optional"/>
  </xs:complexType>

  <xs:complexType name="subarrayLoop">
      <xs:complexContent>
          <xs:extension base="sss:scanLoop">
              <xs:sequence minOccurs="0" maxOccurs="unbounded">
                  <xs:element name="subarrayAntennas" type="xs:string"/>
              </xs:sequence>
          </xs:extension>
      </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="scanLoopElement">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="scanLoop"       type="sss:scanLoop"/>
      <xs:element name="subarrayLoop"   type="sss:subarrayLoop"/>
      <xs:element name="simpleScan"     type="sss:simpleScan"/>
      <xs:element name="focusScan"      type="sss:focusScan"/>
      <xs:element name="holographyScan" type="sss:holographyScan"/>
      <xs:element name="otfHolographyScan" type="sss:otfHolographyScan"/>
      <xs:element name="mosaicScan"     type="sss:mosaicScan"/>
      <!--<xs:element name="otfMappingScan"  type="sss:otfMappingScan"/>-->
      <xs:element name="otfMosaicScan"  type="sss:otfMosaicScan"/>
      <xs:element name="otfGalacticScan" type="sss:otfGalacticScan"/>
      <xs:element name="pointingScan"   type="sss:pointingScan"/>
      <xs:element name="singleDishPointingScan"   type="sss:singleDishPointingScan"/>
      <xs:element name="stationaryScan" type="sss:stationaryScan"/>
      <xs:element name="tippingScan"    type="sss:tippingScan"/>
      <xs:element name="solarScan"      type="sss:solarScan"/>
    </xs:choice>
  </xs:complexType>
        
  <xs:group name="scanBase">
    <xs:sequence>
      <xs:group    ref="sss:userTrackable"/>
      <xs:element name="comments"  type="xs:string"    minOccurs="0"/>
      <xs:element name="intents">
        <xs:simpleType>
          <xs:list itemType="sss:scanIntent"/>
        </xs:simpleType>
      </xs:element>
      <xs:element name="referenceAntennas"       type="sss:textList"       minOccurs="0"/>
      <xs:element name="dopplerTracking"        type="sss:dopplerTracking" minOccurs="0"/>
      <xs:element name="useResourceOfPriorScan" type="xs:boolean"/>
    </xs:sequence>
  </xs:group>
        
  <xs:attributeGroup name="scanAttrBase">
    <xs:attribute name="id"                         type="xs:long"         use="required"/>
    <xs:attribute name="name"                       type="sss:nameString"  use="required"/>
    <xs:attribute name="mode"                       type="sss:scanMode"    use="required"/>
    <xs:attribute name="applyLastPhase"             type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="applyLastReferencePointing" type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="applyLastReferenceFocus"    type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="applyLastReferenceDelay"    type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="recordOnMark5"              type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="recordPulsar"               type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="recordVDif"               type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="solarObserving"             type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="allowOverTheTop"            type="xs:boolean"      use="optional"   default="false"/>
    <xs:attribute name="tenHertzSwitchedPower"      type="xs:boolean"      use="optional"   default="true"/>
    <xs:attribute name="antennaWrap"                type="sss:antennaWrap" use="optional"/>
    <xs:attribute name="scanResource"               type="xs:IDREF"        use="optional"/>
  </xs:attributeGroup>
     
  <!--              
  <xs:complexType name="antennaSelection">
    <xs:sequence>
      <xs:element name="idType" type="sss:antennaIdType" minOccurs="0"/>
      <xs:element name="method" type="sss:antennaSelectionMethod" minOccurs="0"/>
      <xs:element name="minimumNumber" type="xs:int" minOccurs="0"/>
      <xs:element name="persistentUserPicks" minOccurs="0">
        <xs:simpleType>
          <xs:list itemType="xs:string"/>
        </xs:simpleType>
      </xs:element>
      <xs:element name="requiredReceiver" type="sss:receiverBand" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType> -->

  <xs:complexType name="dopplerTracking">
    <xs:sequence>
      <xs:element name="dopplerSpecs" type="sss:scanDopplerSpecs" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

<!-- Why the BLAZES is this here?  We have a dopp spec in util's astronomy.xsd.
     My guess is it's because of the signalName attribute.  This led to a problem
     when we updated the util version and completely forgot this one existed.
     Today we make a patch, but this should be revisited for the possibility of
     reusing the util version.  DMH 2012-11-27 
 -->
  <xs:complexType name="scanDopplerSpecs">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:element name="simpleSkyPosition"       type="sss:simpleSkyPosition"/>
        <xs:element name="polynomialPosition"      type="sss:polynomialPosition"/>
        <xs:element name="polynomialPositionTable" type="sss:polynomialPositionList"/>
        <xs:element name="ephemerisTable"          type="sss:ephemerisTable"/>
        <xs:element name="solarSystemBodyPosition" type="sss:solarSystemBody"/>
        <xs:element name="solarPointingPosition"   type="sss:solarPointingPosition"/>
      </xs:choice>
      <xs:element name="velocity" type="sss:scanDopplerVelocity" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="signalName" type="xs:string" use="required"/>
    <xs:attribute name="name"       type="xs:string" use="optional"/>
  </xs:complexType>

  <xs:complexType name="scanDopplerVelocity">
    <xs:all>
      <xs:element name="radialVelocity"     type="sss:linearVelocity"/>
    </xs:all>
    <xs:attribute name="restFrame"          type="sss:velocityFrame"      use="required"/>
    <xs:attribute name="velocityConvention" type="sss:velocityConvention" use="required"/>
  </xs:complexType>
      
      <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
      <!-- |||||||||| Scan Subclasses   ||||||||| -->
      <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
      
  <xs:complexType name="simpleScan">
    <xs:sequence>
      <xs:group ref="sss:scanBase"/>
      <xs:element name="timeSpec"    type="sss:scanTimeSpecification"/>
    </xs:sequence>
    <xs:attribute name="scanSource"  type="xs:IDREF" use="optional"/>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
  </xs:complexType>
      
  <xs:complexType name="focusScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"    type="sss:scanTimeSpecification"/>
      <xs:element name="offsets"     type="sss:focusOffsets"/>
    </xs:sequence>
    <xs:attribute name="scanSource"  type="xs:IDREF" use="optional"/>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
  </xs:complexType>
      
  <xs:complexType name="mosaicScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="positions" type="sss:mosaicPositions"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
    <xs:attribute name="mosaicName" type="xs:string" use="required"/>
  </xs:complexType>
      
  <!--<xs:complexType name="otfMappingScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"      type="sss:scanTimeSpecification"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
    <xs:attribute name="scanSource"          type="xs:IDREF" use="optional"/>
    <xs:attribute name="scanSourceEnd"       type="xs:IDREF" use="optional"/>
    <xs:attribute name="numberOfSteps"       type="xs:int" use="required"/>
    <xs:attribute name="integrationsPerStep" type="xs:int" use="required"/>
    <xs:attribute name="raDirection"         type="xs:string" use="required"/>
  </xs:complexType>-->

  <xs:complexType name="otfMosaicScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"      type="sss:scanTimeSpecification"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
    <xs:attribute name="scanSource"          type="xs:IDREF" use="optional"/>
    <xs:attribute name="scanSourceEnd"       type="xs:IDREF" use="optional"/>
    <xs:attribute name="numberOfSteps"       type="xs:int" use="required"/>
    <xs:attribute name="integrationsPerStep" type="xs:int" use="required"/>
    <xs:attribute name="raDirection"         type="xs:string" use="required"/>
  </xs:complexType>

  <xs:complexType name="otfGalacticScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"      type="sss:scanTimeSpecification"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
    <xs:attribute name="scanSource"          type="xs:IDREF" use="optional"/>
    <xs:attribute name="scanSourceEnd"       type="xs:IDREF" use="optional"/>
    <xs:attribute name="numberOfSteps"       type="xs:int" use="required"/>
    <xs:attribute name="integrationsPerStep" type="xs:int" use="required"/>
    <xs:attribute name="raDirection"         type="xs:string" use="required"/>
  </xs:complexType>


  <xs:complexType name="pointingScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"         type="sss:scanTimeSpecification"/>
      <xs:element name="coordinateSystem" type="sss:celestialCoordinateSystem"/>
      <xs:element name="positionType"     type="sss:positionType"/>
      <xs:element name="positions"        type="sss:pointingPositions"/>
    </xs:sequence>
    <xs:attribute name="scanSource"       type="xs:IDREF"     use="optional"/>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
  </xs:complexType>

  <xs:complexType name="singleDishPointingScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"         type="sss:scanTimeSpecification"/>
      <xs:element name="coordinateSystem" type="sss:celestialCoordinateSystem"/>
      <xs:element name="positionType"     type="sss:positionType"/>
      <xs:element name="positions"        type="sss:pointingPositions"/>
    </xs:sequence>
    <xs:attribute name="scanSource"       type="xs:IDREF"     use="optional"/>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
  </xs:complexType>
      
  <xs:complexType name="holographyScan">
    <xs:sequence>
      <xs:group ref="sss:scanBase"/>
      <xs:element name="scanPointingResource" type="xs:IDREF"     minOccurs="0"/>
      <xs:element name="grid"                 type="sss:holographyGrid"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
    <xs:attribute name="scanSource"                     type="xs:IDREF"   use="optional"/>
    <xs:attribute name="maximumHours"                   type="xs:double"  use="required"/>
    <xs:attribute name="secondsPerCalibration"          type="xs:double"  use="required"/>
    <xs:attribute name="rasterLinesBetweenCalibrations" type="xs:int"     use="required"/>
    <xs:attribute name="secondsPerPointing"             type="xs:double"  use="required"/>
    <xs:attribute name="rasterLinesBetweenPointings"    type="xs:int"     use="required"/>
    <xs:attribute name="usePointingResource" type="xs:boolean" use="optional"/>
  </xs:complexType>

  <xs:complexType name="otfHolographyScan">
    <xs:sequence>
      <xs:group ref="sss:scanBase"/>
      <xs:element name="scanPointingResource" type="xs:IDREF"     minOccurs="0"/>
      <xs:element name="grid"                 type="sss:holographyGrid"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
    <xs:attribute name="scanSource"                     type="xs:IDREF"   use="optional"/>
    <xs:attribute name="maximumHours"                   type="xs:double"  use="required"/>
    <xs:attribute name="secondsPerCalibration"          type="xs:double"  use="required"/>
    <xs:attribute name="rasterLinesBetweenCalibrations" type="xs:int"     use="required"/>
    <xs:attribute name="secondsPerPointing"             type="xs:double"  use="required"/>
    <xs:attribute name="rasterLinesBetweenPointings"    type="xs:int"     use="required"/>
    <xs:attribute name="usePointingResource" type="xs:boolean" use="optional"/>
  </xs:complexType>
      
  <xs:complexType name="tippingScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"          type="sss:scanTimeSpecification"/>
      <!-- Tipping-scan-specific elements. -->
      <xs:element name="azimuth"           type="sss:angle"/>
      <xs:element name="order"             type="sss:tippingOrder"/>
      <xs:element name="allowReverseOrder" type="xs:boolean"/>
      <xs:element name="elevations"        type="sss:tippingPositions"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
  </xs:complexType>
         
  <xs:complexType name="stationaryScan">
    <xs:sequence>
      <xs:group    ref="sss:scanBase"/>
      <xs:element name="timeSpec"  type="sss:scanTimeSpecification"/>
      <!-- Stationary-scan-specific elements. -->
      <xs:element name="azimuth"   type="sss:longitude"/>
      <xs:element name="elevation" type="sss:latitude"/>
    </xs:sequence>
    <xs:attributeGroup ref="sss:scanAttrBase"/>
  </xs:complexType>

  <xs:complexType name="solarScan">
        <xs:sequence>
            <xs:group    ref="sss:scanBase"/>
            <xs:element name="timeSpec"  type="sss:scanTimeSpecification"/>
            <!-- Solar-scan-specific elements. -->
           <xs:element name="solarHardwareCfg"   type="xs:int"/>
        </xs:sequence>
        <xs:attributeGroup ref="sss:scanAttrBase"/> 
        <xs:attribute name="scanSource"       type="xs:IDREF"     use="optional"/>     
    </xs:complexType>


      <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
      <!-- ||||||||||  Scan Components  ||||||||| -->
      <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

  <xs:complexType name="scanTimeSpecification">
    <xs:choice>
      <xs:element name="duration" type="sss:timeDuration"/>
      <xs:element name="lst"      type="sss:timeOfDay"/>
      <xs:element name="time"     type="xs:dateTime"/>
    </xs:choice>
    <xs:attribute name="timeType" type="sss:scanTimeType" use="required"/>
  </xs:complexType>
         
  <xs:complexType name="focusOffset">
    <xs:all>
      <xs:element name="offsetLength" type="sss:distance"/>
      <xs:element name="timeAtOffset" type="sss:timeDuration"/>
    </xs:all>
    <xs:attribute name="durationType" type="sss:scanDurationType" use="required"/>
  </xs:complexType>

  <xs:complexType name="focusOffsets">
    <xs:sequence minOccurs="1" maxOccurs="unbounded">
      <xs:element name="focusOffset" type="sss:focusOffset"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="holographyGrid">
    <xs:all>
      <xs:element name="azimuthLine"   type="sss:holographyGridLineAzimuth"/>
      <xs:element name="elevationLine" type="sss:holographyGridLineElevation"/>
    </xs:all>
    <xs:attribute name="dwellSeconds" type="xs:double"  use="required"/>
    <xs:attribute name="moveAzFirst"  type="xs:boolean" use="required"/>
  </xs:complexType>
  
  <xs:attributeGroup name="holographyGridLine">
    <xs:attribute name="pointsPerLine"      type="xs:int"    use="required"/>
    <xs:attribute name="offset"             type="xs:int"    use="optional" default="0"/>
    <xs:attribute name="oversamplingFactor" type="xs:double" use="optional" default="1.0"/>
    <xs:attribute name="useDefaultSize" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="size" type="xs:double" use="optional" default="1.0"/>
  </xs:attributeGroup>
        
  <xs:complexType name="holographyGridLineAzimuth">
    <xs:attributeGroup ref="sss:holographyGridLine"/>
    <xs:attribute name="initialDirection" type="sss:horizontalDirection" use="required"/>
  </xs:complexType>
        
  <xs:complexType name="holographyGridLineElevation">
    <xs:attributeGroup ref="sss:holographyGridLine"/>
    <xs:attribute name="initialDirection" type="sss:verticalDirection" use="required"/>
  </xs:complexType>

  <xs:complexType name="mosaicPosition">
    <xs:attribute name="name"       type="sss:nameString"       use="required"/>
    <xs:attribute name="raDegrees"  type="sss:degreesLongitude" use="required"/>
    <xs:attribute name="decDegrees" type="sss:degreesLatitude"  use="required"/>
  </xs:complexType>
        
  <xs:complexType name="mosaicPositions">
    <xs:sequence minOccurs="1" maxOccurs="unbounded">
      <xs:element name="mosaicPosition" type="sss:mosaicPosition"/>
    </xs:sequence>
  </xs:complexType>
        
  <xs:complexType name="pointingPosition">
    <xs:all>
      <xs:element name="latitude"       type="sss:angle"/>
      <xs:element name="longitude"      type="sss:angle"/>
      <xs:element name="timeAtPosition" type="sss:timeDuration"/>
    </xs:all>
    <xs:attribute name="durationType" type="sss:scanDurationType" use="required"/>
  </xs:complexType>
    
  <xs:complexType name="pointingPositions">
    <!-- Correct min is "1", but for now, while using VLA scripts, we're actually using zero. -->
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="pointingPosition" type="sss:pointingPosition"/>
    </xs:sequence>
  </xs:complexType>
          
  <xs:complexType name="tippingPosition">
    <xs:all>
      <xs:element name="elevation"      type="sss:angle"/>
      <xs:element name="timeAtPosition" type="sss:timeDuration"/>
    </xs:all>
    <xs:attribute name="durationType" type="sss:scanDurationType" use="required"/>
  </xs:complexType>
    
  <xs:complexType name="tippingPositions">
    <!-- Correct min is "1", but for now, while using VLA scripts, we're actually using zero. -->
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="tippingPosition" type="sss:tippingPosition"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- ================================================== -->
  <!-- ||||||||||||||||  SIMPLE TYPES  |||||||||||||||||| -->
  <!-- ================================================== -->
  
  <!-- ================================================== -->
  <!-- ||||||||||||||||  ENUMERATIONS  |||||||||||||||||| -->
  <!-- ================================================== -->
                
  <xs:simpleType name="antennaWrap">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CLOCKWISE"/>
      <xs:enumeration value="COUNTERCLOCKWISE"/>
      <xs:enumeration value="NO_PREFERENCE"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="positionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ABSOLUTE"/>
      <xs:enumeration value="OFFSET"/>
    </xs:restriction>
  </xs:simpleType>
        
  <xs:simpleType name="scanIntent">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OBSERVE_TARGET"/>
      <xs:enumeration value="CALIBRATE_BANDPASS"/>
      <xs:enumeration value="CALIBRATE_FLUX_DENSITY_SCALE"/>
      <xs:enumeration value="CALIBRATE_COMPLEX_GAIN"/>
      <xs:enumeration value="CALIBRATE_POLARIZATION_ANGLE"/>
      <xs:enumeration value="CALIBRATE_POLARIZATION_LEAKAGE"/>
      <xs:enumeration value="DETERMINE_ANTENNA_POSITIONS"/>
      <xs:enumeration value="CALIBRATE_OFFSET_POINTING"/>
      <xs:enumeration value="DETERMINE_AUTOPHASE"/>
      <xs:enumeration value="MEASURE_RFI"/>
      <xs:enumeration value="CALIBRATE_DELAY"/>
      <xs:enumeration value="DETERMINE_ANTENNA_GLOBAL_POINTING_MODEL"/>
      <xs:enumeration value="MAP_ANTENNA_SURFACE"/>
      <xs:enumeration value="CALIBRATE_FOCUS"/>
      <xs:enumeration value="DETERMINE_SINGLE_DISH_POINTING"/>
      <xs:enumeration value="DETERMINE_OPACITY_TIPPING_STYLE"/>
      <xs:enumeration value="OBSERVE_PULSAR"/>
      <xs:enumeration value="TIME_PULSAR"/>
      <xs:enumeration value="CALIBRATE_AMPLITUDE"/>
      <xs:enumeration value="CALIBRATE_PHASE"/>
      <xs:enumeration value="SET_ATTENUATOR_GAIN"/>
      <xs:enumeration value="OBSERVE_PULSAR_RAW"/>
      <xs:enumeration value="OTHER"/>
    </xs:restriction>
  </xs:simpleType>
        
  <xs:simpleType name="scanMode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="STANDARD_OBSERVING"/>
      <xs:enumeration value="HOLOGRAPHY"/>
      <xs:enumeration value="INTERFEROMETRIC_POINTING"/>
      <xs:enumeration value="MOSAICKING"/>
      <!--<xs:enumeration value="ON_THE_FLY_MAPPING"/>-->
      <xs:enumeration value="ON_THE_FLY_MOSAICKING"/>
      <xs:enumeration value="ON_THE_FLY_GALACTIC"/>
      <xs:enumeration value="REFERENCE_FOCUSING"/>
      <xs:enumeration value="SINGLE_DISH_POINTING"/>
      <xs:enumeration value="STATIONARY"/>
      <xs:enumeration value="TIPPING"/>
      <xs:enumeration value="SOLAR"/>
    </xs:restriction>
  </xs:simpleType>
        
  <xs:simpleType name="scanDurationType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DURATION_SIDEREAL"/>
      <xs:enumeration value="ON_SOURCE_SIDEREAL"/>
      <xs:enumeration value="DURATION_UT"/>
      <xs:enumeration value="ON_SOURCE_UT"/>
    </xs:restriction>
  </xs:simpleType>
        
  <xs:simpleType name="scanTimeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DURATION_SIDEREAL"/>
      <xs:enumeration value="ON_SOURCE_SIDEREAL"/>
      <xs:enumeration value="START_LST"/>
      <xs:enumeration value="STOP_LST"/>
      <xs:enumeration value="DURATION_UT"/>
      <xs:enumeration value="ON_SOURCE_UT"/>
      <xs:enumeration value="START_UT"/>
      <xs:enumeration value="STOP_UT"/>
      <xs:enumeration value="DURATION"/>
      <xs:enumeration value="ON_SOURCE"/>
      <xs:enumeration value="START"/>
      <xs:enumeration value="STOP"/>
    </xs:restriction>
  </xs:simpleType>
          
  <xs:simpleType name="tippingOrder">
    <xs:restriction base="xs:string">
      <xs:enumeration value="LOW_TO_HIGH"/>
      <xs:enumeration value="HIGH_TO_LOW"/>
    </xs:restriction>
  </xs:simpleType>
  
</xs:schema>
