<?xml version="1.0" encoding="UTF-8"?>
  <!-- PDS4 XML/Schema for Name Space Id:img  Version:1.6.1.0 - Thu Jun 06 15:42:29 PDT 2019 -->
  <!-- Generated from the PDS4 Information Model Version 1.11.0.0 - System Build 9a -->
  <!-- *** This PDS4 product schema is an operational deliverable. *** -->
  <!--                                                                           -->
  <!--               Dictionary Stack                                            -->
  <!-- 1.11.0.0 - pds: - Common Dictionary - N/A                                 -->
  <!-- 1.6.1.0 - img: - Imaging - PDS4_IMG_IngestLDD.xml                         -->
  <!--                                                                           -->
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://pds.nasa.gov/pds4/img/v1"
    xmlns:img="http://pds.nasa.gov/pds4/img/v1"
    xmlns:pds="http://pds.nasa.gov/pds4/pds/v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1.6.1.0">
 
    <xs:import namespace="http://pds.nasa.gov/pds4/pds/v1" schemaLocation="https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1B00.xsd"/>
 
  <xs:annotation>
    <xs:documentation>
 This dictionary contains high level classes and attributes used in imaging and
    spectrometer products. It also contains classes with attributes used during active mission
    operations. Many of these classes are designed to be extended into local mission dictionaries.
    
    ## CHANGE LOG ##
    1.4.0.0
    - upgraded to v1900 of the IM
    - removed specific Autoexposure algorithm classes and introduced generic Algorithm_Parameter class
    - new/improved definitions for Companding_Parameters, Downsampling_Parameters, Exposure_Parameters
    - removed the following attributes: Data_Correction.data_correction_subtype
    - removed the following classes because they were insufficiently multi-mission:
    - Derived_Product_Parameters
    - Frame_Parameters
    - Product_Identification 
    - Stereo_Product_Parameters
    - Vector_Range_Origin
    - added exposure_type enumeration
    - new flat_field_algorithm attribute
    - changed compression_type to compression_class and compression_mode_name to compression_type
    - added new enumerations for compression_class and compression_type
    - added new Instrument_Device_Currents class
    
    1.5.0.0
    - upgraded to v1A10 of the IM
    - removed old blocks of commented out XML
    
    1.5.1.0
    - changed unit of bandwidth attribute from Units_of_Frequency to Units_of_Length
    
    1.6.0.0
    - Upgraded to v1B00 of the IM.
    - Re-organized attributes into alphabetical order.
    - Re-organized classes to make most commonly used parts of label easier to find.
    - Created new classes for housekeeping data (Instrument_State_Parameters, Commanded_Parameters) and placed them at the bottom.
    - Re-wrote numerous class and attribute definitions, to make dictionary easier for users to understand.
    - Renamed some classes and attributes to remove redundant words.
    - Re-designed data correction classes (such as Flat_Field_Correction, Radiometric_Correction, etc.) and 
      other data processing classes such as Companding, Downsampling, etc. to share a common base class.
    - Renamed Compression class and related attributes to Onboard_Compression_*. This is to make it clear 
      that any image compression was performed for data storage/transmission. PDS4 does not allow compressed images.
    - Renamed Filter_Parameters to Optical_Filter
    
    1.6.1.0
    - Added Brightness_Correction class and associated subclasses/attributes
    - Added Pointing_Correction class and associated subclasses/attributes (moved from IMG_SURFACE LDD)
    - Added attributes to Color_Processing class: color_dn_scaling_method, color_dn_scaling_factor
    - Corrected typo in local_reference_type_check_optical_filter rule
    
  
    </xs:documentation>
  </xs:annotation>
 
  <xs:element name="Imaging" type="img:Imaging"> </xs:element>

  <xs:complexType name="Autoexposure">
    <xs:annotation>
      <xs:documentation>The Autoexposure class contains attributes used
        to identify or describe the algorithm used to automatically
        calculate the proper exposure time. This is generally based on
        some kind of histogram analysis. The specific autoexposure
        algorithm used is defined in the processing_algorithm attribute,
        and the specific set of attributes needed to describe it will
        vary based on the algorithm. Examples of autoexposure algorithms
        include "Maki 2003" used on MER, MSL ECAMs, M2020 ECAMS;
        "Maurice 2012" used on MSL ChemCam; "Smith 1997" used on Mars
        Pathfinder Imager.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="auto_exposure_data_cut" type="img:auto_exposure_data_cut" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="auto_exposure_percent" type="img:auto_exposure_percent" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="auto_exposure_pixel_fraction" type="img:auto_exposure_pixel_fraction" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="max_auto_exposure_iteration_count" type="img:max_auto_exposure_iteration_count" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Brightness_Correction">
    <xs:annotation>
      <xs:documentation>The Brightness_Correction class describes
        brightness corrections that were applied to an image or mosaic.
        Brightness correction is the process of adjusting the DN values
        of adjacent frames in a mosaic so they match visually. It may
        also involve contrast or vignetting adjustments. The result may
        no longer be radiometrically calibrated due to the adjustments.
        The processing_algorithm child of Brightness_Correction
        describes the type of brightness correction, and should
        correspond to the classes within Brightness_Correction_Image. If
        the algorithm is "MIXED", multiple algorithms were used, in
        which case the specific information in each
        Brightness_Correction_Image must be used.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="Brightness_Correction_File" type="img:Brightness_Correction_File" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="Brightness_Correction_Image" type="img:Brightness_Correction_Image" minOccurs="1" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Brightness_Correction_File">
    <xs:annotation>
      <xs:documentation>The Brightness_Correction_File identifies a file
        containing brightness correction information. The project SIS
        should define the format of this file. Correction information
        may appear in the file, in instances of the
        Brightness_Correction_Image class, or both (if both, they should
        be consistent).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="img:Data_Processing_File">
        <xs:sequence>
          <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element ref="pds:External_Reference"> </xs:element>
            <xs:element ref="pds:Internal_Reference"> </xs:element>
          </xs:choice>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Brightness_Correction_HSI_Linear">
    <xs:annotation>
      <xs:documentation>The Brightness_Correction_HSI_Linear class works
        just like Brightness_Correction_Linear, except that the color
        image is first converted to HSI (Hue, Saturation, Intensity)
        space, the correction is applied only to Intensity, and then the
        result is converted back to RGB space.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="brightness_scale" type="img:brightness_scale" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="brightness_offset" type="img:brightness_offset" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Brightness_Correction_Image">
    <xs:annotation>
      <xs:documentation>The Brighness_Correction_Image class describes
        the brightness correction that was applied to a single image,
        whether alone or part of a mosaic. The image this correction
        applies to may be identified via the enclosed
        Internal_Reference, or via the order in which the
        Brightness_Correction_Image objects appear (which matches the
        order given in Input_Product_List).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="Brightness_Correction_HSI_Linear" type="img:Brightness_Correction_HSI_Linear"> </xs:element>
        <xs:element name="Brightness_Correction_Linear" type="img:Brightness_Correction_Linear"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Brightness_Correction_Linear">
    <xs:annotation>
      <xs:documentation>The Brightness_Correction_Linear class describes
        a simple linear brightness correction, with an additive
        (brightness_offset) and multiplicative (brightness_scale) factor
        applied. The result is: output = input * brightness_scale +
        brightness_offset. If there are multiple bands, the same
        correction is applied to each band.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="brightness_scale" type="img:brightness_scale" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="brightness_offset" type="img:brightness_offset" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Color_Filter_Array">
    <xs:annotation>
      <xs:documentation>The Color_Filter_Array class describes whether
        or not an image was acquired using a Color Filter Array (CFA)
        and if so, whether and how the CFA pattern was removed. A CFA is
        a method for making color images using one exposure on a single
        sensor plane, where microfilters of different wavelengths are
        put in front of pixels in a specific pattern. The most common
        pattern is the Bayer pattern, which has a red, blue, and two
        green pixels in every 2x2 pixel square. Although generally used
        for RGB color, CFA filters can be of any number and wavelength
        (see color_filter_array_type).</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="color_filter_array_type" type="img:color_filter_array_type" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="color_filter_array_state" type="img:color_filter_array_state" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="img:color_filter_array_type = ('Bayer RGGB')"/> -->
        <!-- <xs:assert test="img:color_filter_array_state = ('Decoded', 'Encoded', 'No CFA')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Color_Processing">
    <xs:annotation>
      <xs:documentation>The Color_Processing class contains parameters
        describing color correction or processing and how the image is
        represented in color.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="color_space" type="img:color_space" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="color_component" type="img:color_component" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="illuminant" type="img:illuminant" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="encoded_display_gamma" type="img:encoded_display_gamma" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="color_dn_scaling_method" type="img:color_dn_scaling_method" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="color_dn_scaling_factor" type="img:color_dn_scaling_factor" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="Onboard_Responsivity" type="img:Onboard_Responsivity" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="Onboard_Color_Matrix" type="img:Onboard_Color_Matrix" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Commanded_Parameters">
    <xs:annotation>
      <xs:documentation>The Commanded_Parameters class contains
        attributes used to identify or describe the commands sent to a
        spacecraft to perform one or more actions resulting in the
        acquisition of the current data product. These are distinct from
        similar values in the root Imaging class which indicate the
        state of the image as acquired.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Brightness_Correction" type="img:Brightness_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Color_Filter_Array" type="img:Color_Filter_Array" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Color_Processing" type="img:Color_Processing" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Detector" type="img:Detector" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Downsampling" type="img:Downsampling" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Exposure" type="img:Exposure" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Flat_Field_Correction" type="img:Flat_Field_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Focus" type="img:Focus" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Focus_Stack" type="img:Focus_Stack" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Frame" type="img:Frame" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Onboard_Compression" type="img:Onboard_Compression" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Optical_Filter" type="img:Optical_Filter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Pointing_Correction" type="img:Pointing_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Radiometric_Correction" type="img:Radiometric_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Sampling" type="img:Sampling" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Shutter_Subtraction" type="img:Shutter_Subtraction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Subframe" type="img:Subframe" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Companding">
    <xs:annotation>
      <xs:documentation> The Companding class describes whether or not
        data is or has had its bit depth reduced (for example conversion
        from 12 to 8 bits via a lookup table or bit scaling), the venue
        where it occurred (Software or Hardware), and the method used to
        complete the companding. The processing_algorithm attribute
        specifies how data was companded. Generally this will either be
        via a lookup table (such as a square root encoding), or by
        shifting bits to preserve the high order bits and discard the
        low order bits. The value of this keyword is mission specific
        but there are recommended values that should apply across
        missions when possible: NONE - no scaling. LUTn - use the
        numbered lookup table. Lookup tables are defined in the mission
        SIS. It is preferred for "n" to be a number but it could be a
        name, for example LUT_MMM_3 to indicate LUT 3 for the MMM
        instruments (on MSL). MSB_BITn - Shift to make bit "n" the most
        significant. Bits start numbering at 0 so MSB_BIT7 means no
        shift for a 12->8 bit companding, while MSB_BIT11 means to shift
        right 4 bits for a 12->8 bit companding. AUTOSHIFT - Data should
        be shifted to preserve the highest value. This value should only
        appear in a command echo; one of the MSB_BITn values should be
        used in downlinked data to specify what the actual shift
        was.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="companding_state" type="img:companding_state" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="Companding_File" type="img:Companding_File" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="img:companding_state = ('Companded', 'Expanded', 'None')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Companding_File">
    <xs:annotation>
      <xs:documentation>The Companding _File class specifies the file
        containing the decompanding (inverse LUT) table used to process
        the data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="img:Data_Processing_File">
        <xs:sequence>
          <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element ref="pds:External_Reference"> </xs:element>
            <xs:element ref="pds:Internal_Reference"> </xs:element>
          </xs:choice>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Correction_Parameter">
    <xs:annotation>
      <xs:documentation> The Correction_Parameter class specifies
        identifier(s) and value for a data correction parameter
        applicable to the parent class.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="img:List_Index_No_Units_Imaging">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="sequence_number" type="img:sequence_number"> </xs:element>
            <xs:element name="name" type="pds:name"> </xs:element>
            <xs:element name="id" type="img:id"> </xs:element>
          </xs:choice>
          <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element name="value_number" type="img:value_number"> </xs:element>
            <xs:element name="value_string" type="img:value_string"> </xs:element>
        </xs:choice>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Data_Processing">
    <xs:annotation>
      <xs:documentation>The Data_Processing class contains attributes
        describing how processing and/or calibration was performed on a
        data product. It is not intended to be used on its own; rather
        it is intended to be extended by classes specific to a
        particular type of processing, such as Shutter_Subtraction,
        Flat_Field_Correction, Companding, etc. The attributes of this
        class thus become attributes of the extension class.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="active_flag" type="img:active_flag" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="processing_venue" type="img:processing_venue" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="processing_algorithm" type="img:processing_algorithm" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="sequence_number" type="img:sequence_number" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Data_Processing_File">
    <xs:annotation>
      <xs:documentation>The Data_Processing_File class contain
        attributes which identify a file containing calibration data
        that was applied to the science data. It is not intended to be
        used on its own; rather it is intended to be extended by classes
        specific to a particular type of file, such as Flat_Field_File.
        Note that the "name" attribute is the name of the file; this
        attribute should only be used if the file is either not included
        in an archive, or if the delivery status is unknown by the data
        provider. The External_Reference or Internal_Reference class
        should be used instead of name if at all
        possible.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element ref="pds:External_Reference"> </xs:element>
        <xs:element ref="pds:Internal_Reference"> </xs:element>
      </xs:choice>
      <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Detector">
    <xs:annotation>
      <xs:documentation>The Detectorclass contains attributes describing
        the state of the instrument detector. These are values directly
        read from the detector and do not necessarily reflect the state
        of the image after onboard processing. For example, the entire
        image may be read into memory and then subframed in software, in
        which case the subframe attributes in this class reflect the
        entire image (as read from the detector), whereas those in the
        Subframe class represent the final subframe
        results.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="first_line" type="img:first_line" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="first_sample" type="img:first_sample" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="lines" type="img:lines" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="samples" type="img:samples" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="detector_to_image_rotation" type="img:detector_to_image_rotation" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="erase_count" nillable="true" type="img:erase_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="readout_rate" type="img:readout_rate" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="gain_mode_id" type="img:gain_mode_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="gain_number" type="img:gain_number" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="analog_offset" type="img:analog_offset" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Component_State">
    <xs:annotation>
      <xs:documentation>The Device_Component_State class describes the
        state of one component of an imaging instrument or other imaging
        device. The meaning of "state" is
        device-specific.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Device_Parameters">
        <xs:sequence>
          <xs:element name="device_state" type="img:device_state" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Component_States">
    <xs:annotation>
      <xs:documentation>The Device_Component_States class provides a
        container for the set of states of a component of an imaging
        instrument or other imaging device.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Device_Component_State" type="img:Device_Component_State" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Current">
    <xs:annotation>
      <xs:documentation>The Device_Current class provides the current of
        some point on an imaging instrument or other imaging
        device.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Device_Parameters">
        <xs:sequence>
          <xs:element name="current_value" nillable="true" type="img:current_value" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Currents">
    <xs:annotation>
      <xs:documentation>The Device_Currents class provides a container
        for the set of currents of an imaging instrument or other
        imaging device.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Device_Current" type="img:Device_Current" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Motor_Count">
    <xs:annotation>
      <xs:documentation>The Device_Motor_Count class describes the raw
        motor count of one actuator on an imaging instrument or other
        imaging device (such as a filter wheel, focus motor, or zoom
        motor). This information should typically be reported in a more
        specific and useable form in other classes, such as a filter
        number or wavelength in the Optical_Filter class or a focus
        distnace in the Focus class.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Device_Parameters">
        <xs:sequence>
          <xs:element name="motor_count" type="img:motor_count" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Motor_Counts">
    <xs:annotation>
      <xs:documentation>The Device_Motor_Counts class provides a
        container for the set of raw motor counts of actuators on an
        imaging instrument or other imaging device (such as a filter
        wheel, focus motor, or zoom motor).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Device_Motor_Count" type="img:Device_Motor_Count" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Parameters">
    <xs:annotation>
      <xs:documentation>The Device_Parameters class identifies where a
        measurement was made. It may refer to an individual imaging
        instrument, imaging instrument device, or some defined point on
        the instrument or device. The class is intended to be extended
        (for example, by Device_Temperature) to add the associated
        measurement rather than being used directly.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="3">
        <xs:element name="device_name" nillable="true" type="img:device_name"> </xs:element>
        <xs:element name="device_id" type="img:device_id"> </xs:element>
        <xs:element name="sequence_number" type="img:sequence_number"> </xs:element>
    </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Temperature">
    <xs:annotation>
      <xs:documentation>The Device_Temperature class provides a
        container for the temperature of some point on an imaging
        instrument or other imaging device.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Device_Parameters">
        <xs:sequence>
          <xs:element name="raw_count" type="img:raw_count" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="temperature_value" type="img:temperature_value" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="temperature_status" type="img:temperature_status" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Temperatures">
    <xs:annotation>
      <xs:documentation>The Device_Temperatures class provides a
        container for the set of temperatures of an imaging instrument
        or other imaging device.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Device_Temperature" type="img:Device_Temperature" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Voltage">
    <xs:annotation>
      <xs:documentation>The Device_Voltage class provides the voltage of
        some point on an imaging instrument or other imaging
        device.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Device_Parameters">
        <xs:sequence>
          <xs:element name="voltage_value" nillable="true" type="img:voltage_value" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Voltages">
    <xs:annotation>
      <xs:documentation>The Device_Voltage class provides a container
        for the set of voltages of an imaging instrument or other
        imaging device.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Device_Voltage" type="img:Device_Voltage" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Downsampling">
    <xs:annotation>
      <xs:documentation> The Downsampling class describes whether or not
        downsampling occurred, the venue where it occurred (Software or
        Hardware), the method used to downsample, and the pixel
        averaging dimensions. A downsampled image is a smaller version
        of the image, resulting in reduced resolution of the same
        coverage area. The processing_algorithm attribute specifies the
        pixel resolution downsample method used. This varies by mission,
        but examples from MSL include: 'Mean' - Downsampling done in
        software by calculation of the mean., 'Conditional' - Use
        hardware binning if downsampling (by mean calculation) and
        subframe arguments are consistent.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="Pixel_Averaging_Dimensions" type="img:Pixel_Averaging_Dimensions" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Exposure">
    <xs:annotation>
      <xs:documentation>The Exposure class contains attributes
        identifying the image instrument exposure configuration and
        image exposure values. As a child of the Imaging class, these
        attribute values identify the actual exposure values when the
        image was taken. As a child of the Commanded_Parameters class,
        these attribute values are those that were commanded to the
        spacecraft at the time the image was taken.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="exposure_count" type="img:exposure_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="exposure_duration" type="img:exposure_duration" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="exposure_duration_count" type="img:exposure_duration_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="exposure_type" type="img:exposure_type" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Autoexposure" type="img:Autoexposure" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="img:exposure_type = ('Auto', 'Manual', 'Test')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Flat_Field_Correction">
    <xs:annotation>
      <xs:documentation> The Flat_Field_Correction class specifies how
        flat-field correction was performed on this image. This can be
        done either algorithmically, using a
        Radial_Flat_Field_Correction, or using a
        Flat_Field_File.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="Radial_Flat_Field_Function" type="img:Radial_Flat_Field_Function" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="Flat_Field_File" type="img:Flat_Field_File" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Flat_Field_File">
    <xs:annotation>
      <xs:documentation>The Flat_Field_File class specifies the image
        used for flat field correction. The image is divided by this
        flat field image in order to apply the flat field correction
        (which is the opposite of Radial_Flat_Field_Function).
        </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="img:Data_Processing_File">
        <xs:sequence>
          <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element ref="pds:External_Reference"> </xs:element>
            <xs:element ref="pds:Internal_Reference"> </xs:element>
          </xs:choice>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Focus">
    <xs:annotation>
      <xs:documentation>The Focus class contains attributes that
        describe the focus or autofocus parameters for an observation.
        As a child of Commanded_Parameters, these indicate the focus
        settings used to command the instrument. Otherwise, they
        indicate the actual focus used by the
        observation.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="focus_mode" type="img:focus_mode" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="focus_position" type="img:focus_position" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="focus_position_count" type="img:focus_position_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="autofocus_step_size" type="img:autofocus_step_size" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="autofocus_step_count" type="img:autofocus_step_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_focus_distance" type="img:minimum_focus_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="best_focus_distance" type="img:best_focus_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_focus_distance" type="img:maximum_focus_distance" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="img:focus_mode = ('Autofocus', 'Manual', 'Relative', 'ZStack')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Focus_Stack">
    <xs:annotation>
      <xs:documentation>The Focus_Stack class contains attributes that
        describe a set of images taken at different focus settings,
        which are often merged to create a best-focus image or combined
        to extract range information. Focus stacks are also sometimes
        called ZStacks.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="focus_stack_flag" type="img:focus_stack_flag" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="frame_count" type="img:frame_count" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="focus_merge_blending_flag" type="img:focus_merge_blending_flag" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="focus_merge_registration_flag" type="img:focus_merge_registration_flag" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Frame">
    <xs:annotation>
      <xs:documentation>The Frame class contains attributes providing
        information specific to an image frame. A frame consists of a
        sequence of measurements made over a specified time interval,
        and may include measurements from different instrument
        modes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="frame_id" type="img:frame_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="frame_type_name" type="img:frame_type_name" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test=")"/> -->
    <!-- <xs:assert test=")"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="ICER_Parameters">
    <xs:annotation>
      <xs:documentation> The ICER_Parameters class contains attributes
        describing onboard compression parameters specific to Joint
        Photographic Experts Group (JPEG) image compression. ICER is a
        wavelet-based image compression file format used by the NASA
        Mars Rovers. ICER has both lossy and lossless compression
        modes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="wavelet_filter" type="img:wavelet_filter" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="icer_quality" type="img:icer_quality" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="decomposition_stages" type="img:decomposition_stages" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="segment_count" type="img:segment_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Image_Compression_Segment" type="img:Image_Compression_Segment" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Image_Compression_Segment">
    <xs:annotation>
      <xs:documentation> The Image_Compression_Segment class provides
        attributes describing each segment into which data was
        partitioned for error containment purposes as part of the
        compression process. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="segment_number" type="img:segment_number" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="first_line" type="img:first_line" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="first_sample" type="img:first_sample" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="lines" type="img:lines" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="samples" type="img:samples" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="segment_quality" type="img:segment_quality" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="segment_status" type="img:segment_status" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="missing_pixel_count" type="img:missing_pixel_count" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Imaging">
    <xs:annotation>
      <xs:documentation>The Imaging class contains classes and
        attributes describing both the image product itself and the
        imaging instrument. Image product information can include
        exposure duration, filters, data correction, sampling, frame,
        sub-frames, and how the product was derived. For the imaging
        instrument, information can be provided describing the dynamic
        physical or operating characteristics of the imaging
        instrument.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:Local_Internal_Reference" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Brightness_Correction" type="img:Brightness_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Color_Filter_Array" type="img:Color_Filter_Array" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Color_Processing" type="img:Color_Processing" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Detector" type="img:Detector" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Downsampling" type="img:Downsampling" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Exposure" type="img:Exposure" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Flat_Field_Correction" type="img:Flat_Field_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Focus" type="img:Focus" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Focus_Stack" type="img:Focus_Stack" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Frame" type="img:Frame" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Onboard_Compression" type="img:Onboard_Compression" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Optical_Filter" type="img:Optical_Filter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Pointing_Correction" type="img:Pointing_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Radiometric_Correction" type="img:Radiometric_Correction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Sampling" type="img:Sampling" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Shutter_Subtraction" type="img:Shutter_Subtraction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Subframe" type="img:Subframe" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Video" type="img:Video" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Instrument_State" type="img:Instrument_State" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Commanded_Parameters" type="img:Commanded_Parameters" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Instrument_State">
    <xs:annotation>
      <xs:documentation>The Instrument_State class contains classes
        providing the values of any dynamic physical or operating
        characteristics of the imaging instruments.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Device_Component_States" type="img:Device_Component_States" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Currents" type="img:Device_Currents" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Motor_Counts" type="img:Device_Motor_Counts" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Temperatures" type="img:Device_Temperatures" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Voltages" type="img:Device_Voltages" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="JPEG_Parameters">
    <xs:annotation>
      <xs:documentation> The JPEG_Parameters class contains attributes
        describing onboard compression parameters specific to Joint
        Photographic Experts Group (JPEG) image
        compression.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="color_subsampling_mode" type="img:color_subsampling_mode" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="jpeg_quality" type="img:jpeg_quality" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="jpeg_parameter" type="img:jpeg_parameter" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="img:color_subsampling_mode = ('4:2:2', '4:4:4', 'Grayscale')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="JPEG_Progressive_Parameters">
    <xs:annotation>
      <xs:documentation> The JPEG_Progressive_Parameters class contains
        attributes describing an interlaced progressive JPEG format, in
        which data is compressed in multiple passes of progressively
        higher detail. This is ideal for large images that will be
        displayed while downloading over a slow connection, allowing a
        reasonable preview after receiving only a portion of the
        data.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:JPEG_Parameters">
        <xs:sequence>
          <xs:element name="progressive_stage" type="img:progressive_stage" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="img:color_subsampling_mode = ('4:2:2', '4:4:4', 'Grayscale')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="LOCO_Parameters">
    <xs:annotation>
      <xs:documentation> The LOCO_Parameters class contains attributes
        describing onboard compression parameters specific to Low
        Complexity Lossless Compression (LOCO) image compression, a
        lossless submode of ICER</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="wavelet_filter" type="img:wavelet_filter" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="missing_pixel_count" type="img:missing_pixel_count" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="List_Index_No_Units_Imaging">
    <xs:annotation>
      <xs:documentation>Used when the list values have no units.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="3">
        <xs:element name="sequence_number" type="img:sequence_number"> </xs:element>
        <xs:element name="name" type="pds:name"> </xs:element>
        <xs:element name="id" type="img:id"> </xs:element>
      </xs:choice>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="value_number" type="img:value_number"> </xs:element>
        <xs:element name="value_string" type="img:value_string"> </xs:element>
    </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Onboard_Color_Matrix">
    <xs:annotation>
      <xs:documentation>The Onboard_Color_Matrix class represents a 3x3
        matrix that is used onboard to perform color correction. It is
        done after de-Bayering, as all three color bands are needed for
        each pixel. The first three elements are multiplied by the R,G,B
        (respectively) pixel values and summed to get the output Red
        pixel value. Similarly, the second three create the output
        Green, and the last three the output Blue. If the label is not
        present, no correction was performed.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="onboard_R_r" type="img:onboard_R_r" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_R_g" type="img:onboard_R_g" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_R_b" type="img:onboard_R_b" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_G_r" type="img:onboard_G_r" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_G_g" type="img:onboard_G_g" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_G_b" type="img:onboard_G_b" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_B_r" type="img:onboard_B_r" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_B_g" type="img:onboard_B_g" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_B_b" type="img:onboard_B_b" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Onboard_Compression">
    <xs:annotation>
      <xs:documentation>The Onboard_Compression class contains
        attributes describing the compression performed onboard a
        spacecraft or instrument for data storage and
        transmission.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="onboard_compression_class" type="img:onboard_compression_class" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_compression_mode" type="img:onboard_compression_mode" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_compression_type" type="img:onboard_compression_type" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_compression_rate" type="img:onboard_compression_rate" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_compression_ratio" type="img:onboard_compression_ratio" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="onboard_compression_quality" type="img:onboard_compression_quality" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="deferred_flag" type="img:deferred_flag" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="error_pixel_count" type="img:error_pixel_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="ICER_Parameters" type="img:ICER_Parameters"> </xs:element>
        <xs:element name="JPEG_Parameters" type="img:JPEG_Parameters"> </xs:element>
        <xs:element name="JPEG_Progressive_Parameters" type="img:JPEG_Progressive_Parameters"> </xs:element>
        <xs:element name="LOCO_Parameters" type="img:LOCO_Parameters"> </xs:element>
      </xs:choice>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="img:onboard_compression_class = ('Lossless', 'Lossy', 'Uncompressed')"/> -->
    <!-- <xs:assert test="img:onboard_compression_type = ('ICER', 'ICT', 'JPEG', 'JPEG Progressive', 'LOCO', 'MSSS Lossless', 'None')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Onboard_Responsivity">
    <xs:annotation>
      <xs:documentation>The Onboard_Responsivity class specifies factors
        that have been applied to the R, G, and B cells (respectively)
        of the Bayer pattern, before de-Bayering (demosaicking) takes
        place. The intent of these is to approximately balance the
        filters so the de-Bayering process is not skewed, and EDR/ILT
        products look reasonable before full radiometric or color
        correction is done on the ground. If these factors are not
        present, no correction was performed.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="responsivity_factor_r" type="img:responsivity_factor_r" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="responsivity_factor_g" type="img:responsivity_factor_g" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="responsivity_factor_b" type="img:responsivity_factor_b" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Optical_Filter">
    <xs:annotation>
      <xs:documentation>The Optical_Filter class defines the filters
        used by the camera optics (not to be confused with image
        processing software filters). The filter may be identified by
        name, identifier, number, or some combination of
        these.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="filter_name" type="img:filter_name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="filter_id" type="img:filter_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="filter_number" type="img:filter_number" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="bandwidth" type="img:bandwidth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="center_filter_wavelength" type="img:center_filter_wavelength" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:Local_Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Pixel_Averaging_Dimensions">
    <xs:annotation>
      <xs:documentation>The Pixel_Averaging_Dimensions class provides
        the height and width, in pixels, of the area over which pixels
        were averaged prior to image compression.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="height_pixels" type="img:height_pixels" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="width_pixels" type="img:width_pixels" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Pointing_Correction">
    <xs:annotation>
      <xs:documentation>The Pointing_Correction class contains
        attributes used to identify and describe the camera model
        transformations completed in order to update pointing
        information of an image or mosaic.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Pointing_Correction_File" type="img:Pointing_Correction_File" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Pointing_Correction_Image" type="img:Pointing_Correction_Image" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Pointing_Correction_File">
    <xs:annotation>
      <xs:documentation>The Pointing_Correction_File class identifies a
        file containing pointing correction
        information.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="img:Data_Processing_File">
        <xs:sequence>
          <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element ref="pds:External_Reference"> </xs:element>
            <xs:element ref="pds:Internal_Reference"> </xs:element>
          </xs:choice>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Pointing_Correction_Image">
    <xs:annotation>
      <xs:documentation>The Pointing_Correction_Image class contains
        attributes used to identify and describe the camera model
        transformations completed in order to update pointing
        information of a single image, whether alone or part of a
        mosaic.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="pointing_model_name" type="img:pointing_model_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="pointing_model_solution_id" type="img:pointing_model_solution_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Pointing_Model_Parameter" type="img:Pointing_Model_Parameter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Pointing_Model_Parameter">
    <xs:annotation>
      <xs:documentation>The Pointing_Model_Parameter class specifies the
        name and value (numeric) parameters needed by the pointing model
        identified by the pointing_model_name attribute in the
        Pointing_Correction parent class. The meaning of any given
        parameter is defined by the pointing model. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="pds:name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="value" type="pds:value" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Radial_Flat_Field_Function">
    <xs:annotation>
      <xs:documentation>The Radial_Flat_Field_Function class pecifies
        parameters used to generate a synthetic flat field using a
        simple radial function of the form: r = (x-x_center)^2 +
        (y-y_center)^2 ; flat_field(x,y) = 1 + r0 + r1*r + r2*r^2 +
        r3*r^3 . Note that x is in the sample direction of the image,
        and y is in the line direction. The image is multiplied by this
        function in order to perform a flat field correction (which is
        the opposite of Flat_Field_File). </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x_center" type="img:x_center" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="y_center" type="img:y_center" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="r0" type="img:r0" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="r1" type="img:r1" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="r2" type="img:r2" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="r3" type="img:r3" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Flat_Field_File" type="img:Flat_Field_File" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Radiometric_Correction">
    <xs:annotation>
      <xs:documentation> The Radiometric_Correction class is a container
        for the type and details of the radiometric calibration
        performed on the product. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="radiometric_type" type="img:radiometric_type" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="radiometric_zenith_scaling_factor" type="img:radiometric_zenith_scaling_factor" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="responsivity_r" type="img:responsivity_r" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="responsivity_g" type="img:responsivity_g" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="responsivity_b" type="img:responsivity_b" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="responsivity_pan" type="img:responsivity_pan" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Sampling">
    <xs:annotation>
      <xs:documentation> The Sampling class contains attributes and
        classes related to the sampling, scaling, companding, and
        compression or reduction in resolution of
        data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="crosstrack_summing" type="img:crosstrack_summing" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="downtrack_summing" type="img:downtrack_summing" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="sample_bits" type="img:sample_bits" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="sample_bit_mask" type="img:sample_bit_mask" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="sampling_factor" type="img:sampling_factor" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Companding" type="img:Companding" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Shutter_Subtraction">
    <xs:annotation>
      <xs:documentation> The Shutter_Subtraction class specifies
        attributes describing the removal from the image of the shutter,
        or fixed-pattern.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="img:Data_Processing">
        <xs:sequence>
          <xs:element name="shutter_subtraction_mode" type="img:shutter_subtraction_mode" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="exposure_duration_threshold_count" type="img:exposure_duration_threshold_count" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="img:shutter_subtraction_mode = ('Conditional', 'True')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Subframe">
    <xs:annotation>
      <xs:documentation> The Subframe class describes the position and
        other optional characteristics of an image subframe, relative to
        the original image. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="first_line" type="img:first_line" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="first_sample" type="img:first_sample" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="lines" type="img:lines" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="samples" type="img:samples" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="line_fov" type="img:line_fov" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="sample_fov" type="img:sample_fov" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subframe_type" type="img:subframe_type" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Video">
    <xs:annotation>
      <xs:documentation>The Video class contains attributes related to
        video observations, defined as a regular time series of frames.
        The class can be used to describe a single frame within the
        video, or the video as a whole.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="video_flag" type="img:video_flag" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="frame_count" type="img:frame_count" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="interframe_delay" type="img:interframe_delay" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="frame_rate" type="img:frame_rate" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="frame_interval" type="img:frame_interval" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="gop_frame_index" type="img:gop_frame_index" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="gop_frame_count" type="img:gop_frame_count" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test=")"/> -->
    <!-- <xs:assert test=")"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

    <xs:annotation>
      <xs:documentation>This section contains the simpleTypes that provide more constraints
        than those at the base data type level. The simpleTypes defined here build on the base data
        types. This is another component of the common dictionary and therefore falls within the
        common namespace.
      </xs:documentation>
    </xs:annotation>

  <xs:simpleType name="active_flag">
    <xs:annotation>
      <xs:documentation>The active_flag attribute indicates whether or
        not the data processing described by the parent class is active.
        In general, the presence of the parent class implies it is
        active and thus active_flag is optional. The primary purpose for
        active_flag is to either explicitly indicate a correction is not
        active (for example, if it normally is but was explicitly turned
        off), or to be able to provide parameters for historical reasons
        that may no longer be relevant to a current correction.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Boolean">
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="analog_offset">
    <xs:annotation>
      <xs:documentation>The analog_offset attribute identifies the
        analog value that is subtracted from the signal prior to the
        analog/digital conversion.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="auto_exposure_data_cut">
    <xs:annotation>
      <xs:documentation>The auto_exposure_data_cut attribute specifies
        the DN value which a specified fraction of pixels is permitted
        to exceed. The fraction is specified using the
        auto_exposure_data_fraction attribute.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="auto_exposure_percent">
    <xs:annotation>
      <xs:documentation>The auto_exposure_percent attribute specifies
        the auto-exposure early-termination percent. If the desired DN
        (auto_exposure_data_cut) is within this percentage of the
        measured DN (the DN at which the percentage of pixels above that
        DN equals or exceeds the auto_exposure_pixel_fraction), then the
        auto exposure algorithm is terminated and the calculated time is
        accepted.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="auto_exposure_pixel_fraction">
    <xs:annotation>
      <xs:documentation>The auto_exposure_pixel_fraction attribute
        specifies the percentage of pixels whose DN values may exceed
        the auto_expsoure_data_cut.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="autofocus_step_count">
    <xs:annotation>
      <xs:documentation> The autofocus_step_count attribute specifies
        the number of steps (images) to be taken by an autofocus
        algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="autofocus_step_size">
    <xs:annotation>
      <xs:documentation> The autofocus_step_size attribute specifies the
        size in motor counts of each (or the initial) step taken by the
        focus adjustment mechanism in an autofocus
        algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="bandwidth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="bandwidth">
    <xs:annotation>
      <xs:documentation>The bandwidth attribute provides a measure of
        the spectral width of a filter. For a root-mean-square detector
        this is the effective bandwidth of the filter, i.e. the full
        width of an ideal square filter having a flat response over the
        bandwidth and zero response elsewhere. Another common method for
        measuring bandwidth is Full Width at Half Maximum, which is the
        width of a "bump" on a curve or function. It is given by the
        distance between points on the curve at which the function
        reaches half of its maximum value.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:bandwidth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="best_focus_distance_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="best_focus_distance">
    <xs:annotation>
      <xs:documentation>The best_focus_distance attribute specifies the
        estimated distance to best focus.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:best_focus_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="brightness_offset">
    <xs:annotation>
      <xs:documentation>The brightness_offset attribute defines the
        additive factor used for a linear brightness
        correction.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="brightness_scale">
    <xs:annotation>
      <xs:documentation>The brightness_scale attribute defines the
        multiplicative factor used for a linear brightness
        correction.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="center_filter_wavelength_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="center_filter_wavelength">
    <xs:annotation>
      <xs:documentation>The center_filter_wavelength attribute provides
        the wavelength of the center of the passband, or the peak
        transmissivity, for an instrument filter. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:center_filter_wavelength_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="color_component">
    <xs:annotation>
      <xs:documentation>For single-band images, this defines which
        component of the color space is represented by this band. This
        keyword is not needed for 3-band images, as all bands are
        represented.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="color_dn_scaling_factor">
    <xs:annotation>
      <xs:documentation>The color_dn_scaling_factor attribute specifies
        the actual value used to scale the color values. This value is
        determined using the color_dn_scaling_method.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="color_dn_scaling_method">
    <xs:annotation>
      <xs:documentation>The color_dn_scaling_method attribute defines
        how the color values are scaled. EXPOSURE_NORMALIZED_COLOR means
        that the color values have been normalized based on exposure
        time, so neighboring images in a mosaic will have the same color
        values. DN_COLOR means that the color values are based on the
        raw DNs, so images take full advantage of the available dynamic
        range but may not match with neighbors in a
        mosaic.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="color_filter_array_state">
    <xs:annotation>
      <xs:documentation>Specifies whether the image still has a CFA
        pattern ("Encoded"), the CFA pattern has been removed
        ("Decoded") or it never had a pattern ("No
        CFA").</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="color_filter_array_type">
    <xs:annotation>
      <xs:documentation>Defines the type of Color Filter Array (CFA)
        used to encode multiple colors in a single exposure. The most
        common example of this is the Bayer pattern. This is optional if
        there is no CFA. Additional attributes, specific to each CFA
        type, define whether or not the CFA pattern has been removed,
        and if so, how (e.g. bayer_algorithm).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="color_space">
    <xs:annotation>
      <xs:documentation>Defines the color space in which this product is
        expressed. Some color spaces (e.g. XYZ or xyY) are independent
        of illuminant, while for others (e.g. sRGB or pRGB) the
        illuminant matters. It is expected that the defined color spaces
        will increase over time.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="color_subsampling_mode">
    <xs:annotation>
      <xs:documentation> The color_subsampling_mode attribute specifies
        the JPEG color subsampling mode used during compression. Valid
        values: '4:2:2' - 4:2:2 chroma subsampling, which is the typical
        case, '4:4:4' - 4:4:4 chroma sampling, which indicates no
        subsampling, 'Grayscale' - indicates a grayscale
        image</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="companding_state">
    <xs:annotation>
      <xs:documentation>The companding_state attribute specifies whether
        the data is or has had its bit depth reduced, for example
        conversion from 12 to 8 bits via a lookup table or bit scaling.
        Valid values: None - values have not been companded. Companded -
        values are currently companded. Expanded - values have been
        companded but are now expanded back to original
        size.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="crosstrack_summing">
    <xs:annotation>
      <xs:documentation>The crosstrack_summing attribute provides the
        number of detector pixel values in the crosstrack direction that
        have been averaged to produce the final output
        pixel.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="current_value_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="current_value">
    <xs:annotation>
      <xs:documentation>The current_value attribute provides provides
        the current, in the specified units, of an imaging instrument or
        some part of the imaging instrument.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:current_value_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Current" use="required" />
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="decomposition_stages">
    <xs:annotation>
      <xs:documentation> The decomposition_stages attribute identifies
        the number of stages of decomposition.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="deferred_flag">
    <xs:annotation>
      <xs:documentation> The deferred_flag attribute specifies whether
        compression was done at the time of image acquisition, or was
        deferred until later (typically at downlink time).
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Boolean">
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="detector_to_image_rotation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0.0"/>
     <xs:maxInclusive value="360.0"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="detector_to_image_rotation">
    <xs:annotation>
      <xs:documentation> The detector_to_image_rotation attribute
        specifies the clockwise rotation, in degrees, that was applied
        to an image along its optical path through an instrument, from
        detector to final image orientation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:detector_to_image_rotation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="device_id">
    <xs:annotation>
      <xs:documentation>The device_id attribute supplies the identifier
        of an imaging instrument, an imaging instrument device, or some
        point on the instrument or device.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="device_name">
    <xs:annotation>
      <xs:documentation>The device_name attribute supplies the formal
        name for an imaging instrument, an imaging instrument device, or
        some point on the instrument or device.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_Short_String_Collapsed">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="device_state">
    <xs:annotation>
      <xs:documentation>The device_state attribute indicates the state
        of a sensor or other device associated with the imaging
        instrument. These states are interpreted in an
        instrument-specific way.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="downtrack_summing">
    <xs:annotation>
      <xs:documentation>The downtrack_summing attribute provides the
        number of detector pixel values in the downtrack direction that
        have been averaged to produce the final output
        pixel.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="encoded_display_gamma">
    <xs:annotation>
      <xs:documentation>Defines the gamma value encoded in this image.
        Gamma correction is used to nonlinearly compress the intensities
        in an image, and most display systems assume that images are
        encoded with an sRGB gamma. Note that this is a string value
        because the most common gamma correction ("sRGB") is not
        precisely expressible as a gamma exponent. A numeric value
        indicates a gamma exponent.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="erase_count">
    <xs:annotation>
      <xs:documentation>The erase_count specifies the number of times a
        detector has been or will be flushed of data in raw counts,
        dependent on the parent class for the
        attribute.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="pds:ASCII_NonNegative_Integer">
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="error_pixel_count">
    <xs:annotation>
      <xs:documentation> The error_pixel_count attribute specifies the
        number of pixels that are outside a valid DN range, after all
        decompression and post decompression processing has been
        completed. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="exposure_count">
    <xs:annotation>
      <xs:documentation>The exposure count attribute provides the number
        of exposures taken during a certain interval, such as the
        duration of one command. For example, this may include the
        number of exposures needed by an autoexpose
        algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="exposure_duration_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="exposure_duration">
    <xs:annotation>
      <xs:documentation>The exposure_duration attribute provides the
        amount of time the instrument sensor was gathering light from
        the scene, such as between opening and closing of a shutter, or
        between flushing and readout of a CCD.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:exposure_duration_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Time" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="exposure_duration_count">
    <xs:annotation>
      <xs:documentation>The exposure_duration_count attribute specifies
        the value, in raw counts, for the amount of time the instrument
        sensor was gathering light from the scene, such as between
        opening and closing of a shutter, or between flushing and
        readout of a CCD. This is the raw count either commanded or
        taken directly from telemetry as reported by the spacecraft.
        This attribute is the same as the exposure_duration but in DN
        counts instead of time, and the translation of
        exposure_duration_count to exposure_duration will differ by
        mission.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="exposure_duration_threshold_count">
    <xs:annotation>
      <xs:documentation>The exposure_duration_threshold specifies the
        exposure time threshold in raw counts, when
        shutter_subtraction_mode = 'Conditional'.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="exposure_type">
    <xs:annotation>
      <xs:documentation>The exposure_type attribute indicates the
        exposure setting on a camera. Valid values: 'Manual' - manual
        exposure setting, 'Auto' - autoexposure is applied by the
        camera, 'Test' - test exposure setting telling the camera to
        return a fixed-pattern test image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="filter_id">
    <xs:annotation>
      <xs:documentation> The filter_id attribute provides a short string
        identifier for an instrument filter through which an image or
        measurement was acquired or which is associated with a given
        instrument mode. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="16"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="filter_name">
    <xs:annotation>
      <xs:documentation>The filter_name attribute provides the name,
        described in the mission documentation, of the optical filter
        through which an image or measurement was
        acquired.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:UTF8_Short_String_Preserved">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="filter_number">
    <xs:annotation>
      <xs:documentation>The filter_number attribute provides the numeric
        identifier of an instrument filter through which an image or
        measurement was acquired or which is associated with a given
        instrument mode.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="first_line">
    <xs:annotation>
      <xs:documentation>The first_line attribute indicates the line
        within a source image that corresponds to the first line in a
        sub-image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="first_sample">
    <xs:annotation>
      <xs:documentation> The first_sample attribute indicates the sample
        within a source image that corresponds to the first sample in a
        sub-image. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="focus_merge_blending_flag">
    <xs:annotation>
      <xs:documentation>The focus_merge_blending_flag attribute
        indicates whether intra-stack image blending has been performed
        during a focus merge operation. A value of 'false' means images
        were merged without blending.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Boolean">
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="focus_merge_registration_flag">
    <xs:annotation>
      <xs:documentation>The focus_merge_registration_flag attribute
        indicates whether intra-stack image registration has been
        performed during a focus merge operation. A value of 'true'
        indicates that intra-stack image registration has been performed
        during the focus merge operation, while 'false' indicates that
        images have been merged without translation.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Boolean">
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="focus_mode">
    <xs:annotation>
      <xs:documentation>The focus_mode attribute specifies the type of
        focus command, for example: Autofocus, Manual, ZStack, or
        Relative (focus adjustment based on a previous
        autofocus).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="focus_position">
    <xs:annotation>
      <xs:documentation>The focus_position attribute defines, in a
        camera-specific way, the focus metric that should be used for
        geometric processing of the data (e.g. for creating camera
        models). This will often be the focus motor
        count.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="focus_position_count">
    <xs:annotation>
      <xs:documentation>The focus_position_count attribute specifies a
        commanded focus, or the initial focus position used by the
        autofocus algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="focus_stack_flag">
    <xs:annotation>
      <xs:documentation> The focus_stack_flag attribute indicates
        whether or not focus stack image products were created during
        the autofocus imaging step.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Boolean">
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="frame_count">
    <xs:annotation>
      <xs:documentation> The frame_count attribute indicates the total
        number of image frames acquired, such as for a video or focus
        stack observation.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="frame_id">
    <xs:annotation>
      <xs:documentation>The frame_id attribute specifies an
        identification for a particular instrument measurement frame. A
        frame consists of a sequence of measurements made over a
        specified time interval, and may include measurements from
        different instrument modes. These sequences repeat from cycle to
        cycle and sometimes within a cycle.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="frame_interval_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="frame_interval">
    <xs:annotation>
      <xs:documentation>The frame_interval attribute defines the time
        between the start of successive frames in a video
        product.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:frame_interval_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Time" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="frame_rate_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="frame_rate">
    <xs:annotation>
      <xs:documentation> The frame_rate attribute specifies the
        calculated frame rate for video products.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:frame_rate_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Frame_Rate" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="frame_type_name">
    <xs:annotation>
      <xs:documentation> The frame_type_name attribute specifies whether
        the image was commanded as part of a stereo pair or as a single
        left or right monoscopic image. If frame_type = 'Stereo', a left
        and a right image should be present.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="gain_mode_id">
    <xs:annotation>
      <xs:documentation>The gain_mode_id attribute identifies the gain
        state of an instrument. Gain is a constant value which is
        multiplied with an instrument's output signal to increase or
        decrease the level of that output. These modes may vary by
        mission so the permissible values should be set by the mission
        dictionaries.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="gain_number">
    <xs:annotation>
      <xs:documentation>The gain_number attribute specifies the gain
        value used in the analog to digital conversion. The gain value
        is a multiplicative factor used in the analog to digital
        conversion.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="gop_frame_count">
    <xs:annotation>
      <xs:documentation> The gop_frame_count attribute indicates, for
        video products compressed into a group of images (Group Of
        Pictures or GOP), the number of images in a GOP. This is not
        necessarily the total number of frames in the observation (see
        frame_count), as the observation may consist of a number of
        GOPs.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="gop_frame_index">
    <xs:annotation>
      <xs:documentation> The gop_frame_index attribute specifies the
        frame index within a Group Of Pictures (GOP).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="height_pixels_WO_Units">
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="height_pixels">
    <xs:annotation>
      <xs:documentation>The height_pixels attribute provides the
        vertical dimension, in pixels.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:height_pixels_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Misc" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="icer_quality">
    <xs:annotation>
      <xs:documentation> The icer_quality attribute is a ICER specific
        variable for on-board ICER data compression.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="id">
    <xs:annotation>
      <xs:documentation>The id attribute supplies a short name
        (identifier) for the associated value in a group of related
        values. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="illuminant">
    <xs:annotation>
      <xs:documentation>Defines the illuminant that was used in order to
        process this image. The valid values are open-ended but examples
        of valid values include: None, D65, 3000K,
        5000K.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="interframe_delay_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="interframe_delay">
    <xs:annotation>
      <xs:documentation>The interframe_delay attribute provides the time
        between the end of one frame and the beginning of the next frame
        in a video product.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:interframe_delay_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Time" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="jpeg_parameter">
    <xs:annotation>
      <xs:documentation>The jpeg_parameter attribute is a JPEG specific
        variable which specifies on-board compression determination by
        image quality or by compression factor, based on a selected
        on-board compression mode. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="jpeg_quality">
    <xs:annotation>
      <xs:documentation>The jpeg_quality attribute is a JPEG specific
        variable which identifies the resultant or targeted image
        quality index for on-board data compression.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="100"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="line_fov_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0.0"/>
     <xs:maxInclusive value="360.0"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="line_fov">
    <xs:annotation>
      <xs:documentation>The line_fov attribute specifies the angular
        measure of the field of view of an imaged scene, as measured in
        the image line direction (generally vertical).</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:line_fov_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="lines">
    <xs:annotation>
      <xs:documentation>The lines attribute indicates the total number
        of data instances along the vertical axis of an image or
        sub-image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="max_auto_exposure_iteration_count">
    <xs:annotation>
      <xs:documentation>The max_auto_exposure_iteration_count attribute
        specifies the maximum number of exposure iterations the
        instrument will perform in order to obtain the requested
        exposure.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="maximum_focus_distance_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_focus_distance">
    <xs:annotation>
      <xs:documentation>The maximum_focus_distance attribute specifies
        the estimated distance to the farthest pixel with less than 1
        pixel of gaussian blur.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:maximum_focus_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_focus_distance_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_focus_distance">
    <xs:annotation>
      <xs:documentation>The minimum_focus_distance attribute specifies
        the estimated distance to the nearest pixel with less than 1
        pixel of gaussian blur.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:minimum_focus_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="missing_pixel_count">
    <xs:annotation>
      <xs:documentation> The missing_pixel_count attribute identifies
        the total number of missing pixels defined by the image or image
        segment.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="motor_count">
    <xs:annotation>
      <xs:documentation>The motor_count attribute specifies the raw
        motor counts for the specified device, which indicates the
        position of the associated mechanism in a device-specific
        way.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_B_b">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the B pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied R and G pixel values to
        produce the output Blue value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_B_g">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the G pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied R and B pixel values to
        produce the output Blue value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_B_r">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the R pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied G and B pixel values to
        produce the output Blue value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_G_b">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the B pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied R and G pixel values to
        produce the output Green value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_G_g">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the G pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied R and B pixel values to
        produce the output Green value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_G_r">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the R pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied G and B pixel values to
        produce the output Green value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_R_b">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the B pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied R and G pixel values to
        produce the output Red value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_R_g">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the G pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied R and B pixel values to
        produce the output Red value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_R_r">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been multiplied by
        the R pixel value after de-Bayering (demosaicking) takes place.
        This value is summed with the multiplied G and B pixel values to
        produce the output Red value.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_compression_class">
    <xs:annotation>
      <xs:documentation>The onboard_compression_class attribute
        identifies the type of on-board compression used for data
        storage and transmission. Note that the onboard_compression_type
        identifies the specific compression algorithm used (for example,
        ICER), whereas the onboard_compression_class gives a simple
        indicator of the type of compression mode. Valid values:
        'Lossless', 'Lossy', 'Uncompressed'</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_compression_mode">
    <xs:annotation>
      <xs:documentation>The onboard_compression_mode attribute
        identifies the method used for on-board compression, performed
        for the purpose of data storage and transmission. The value for
        this attributes represents the raw integer value for
        compression, which is then translated to the full name captured
        by the onboard_compression_type attribute.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_compression_quality">
    <xs:annotation>
      <xs:documentation> The onboard_compression_quality attribute is an
        indication of compression quality, in the range of 0.0 to 1.0.
        Losslessly compressed or uncompressed data have a value of 1.0.
        Other values are assigned in a manner specific to the
        compression mode, but with the property that a higher value
        means better quality. Although the values are not directly
        comparable across compression types, this facilitates comparison
        of compression quality across images independent of compression
        mode.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="1.0"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_compression_rate">
    <xs:annotation>
      <xs:documentation>The onboard_compression_rate attribute provides
        the average number of bits needed to represent a pixel for image
        that was compressed on-board for data storage and
        transmission.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_compression_ratio">
    <xs:annotation>
      <xs:documentation>The onboard_compression_ratio attribute provides
        the ratio of the size, in bytes, of the original uncompressed
        data object to its compressed form (original size / compressed
        size). Onboard compression is performed for data storage and
        transmission.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0.0"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="onboard_compression_type">
    <xs:annotation>
      <xs:documentation>The onboard_compression_type attribute
        identifies the type of on-board compression used for data
        storage and transmission. Valid Values: 'ICER', 'LOCO', 'JPEG',
        'JPEG Progressive', 'MSSS Lossless', 'None'.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="pointing_model_name">
    <xs:annotation>
      <xs:documentation>The pointing_model_name attribute specifies
        which of several "pointing models" were used to transform the
        camera model based on updated pointing information. These
        updates are typically derived from mosaic seam corrections. This
        attribute and the associated Pointing_Model_Index classes define
        what the updated pointing information is, providing enough
        information to re-create the camera model from calibration data.
        If present, this attribute overrides the default pointing based
        on telemetry. The special value "NONE" shall be interpreted the
        same as if the attribute is absent (i.e. the default pointing
        model should be used). New model names can be created at any
        time; the models themselves should be described in a
        mission-specific ancillary file. See also the geom:solution_id
        attribute within the geom:Camera_Model_Parameters
        class.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="pointing_model_solution_id">
    <xs:annotation>
      <xs:documentation>The pointing_model_solution_id attribute
        specifies the identifier of the pointing correction solution
        used to derive the model specified via the enclosing
        Pointing_Correction class. This identifier should also appear in
        the pointing correction file referenced by the
        Data_Correction_File. If there is only one identifier in the
        correction file, then pointing_model_solution_id may be omitted.
        The pointing_model_solution_id attribute may be reused in the
        context of pointing corrections, although uniqueness is
        recommended. The pointing correction solution ID namespace is
        separate from the coordinate system namespace.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="processing_algorithm">
    <xs:annotation>
      <xs:documentation>The processing_algorithm attribute specifies the
        name of the algorithm used to perform the processing specified
        by the enclosing class. Algorithm names should be defined in the
        project documentation, and/or in the enclosing class definition.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="processing_venue">
    <xs:annotation>
      <xs:documentation>The processing_venue attribute specifies where
        the processing described by the parent class was performed.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="progressive_stage">
    <xs:annotation>
      <xs:documentation>In cases where each pass of a progressive JPEG
        is downlinked separately, the progressive_stage attribute
        indicates the highest pass number contained in this image, which
        indicates the available level of detail.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="r0">
    <xs:annotation>
      <xs:documentation>The r0 attribute specifies the 0th-order
        polynomial coefficient of the function used to describe an
        algorithmic flat field. See Radial_Flat_Field_Function for the
        formula.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="r1">
    <xs:annotation>
      <xs:documentation>The r1 attribute specifies the 1st-order
        polynomial coefficient of the function used to describe an
        algorithmic flat field. See Radial_Flat_Field_Function for the
        formula.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="r2">
    <xs:annotation>
      <xs:documentation>The r2 attribute specifies the 2nd-order
        polynomial coefficient of the function used to describe an
        algorithmic flat field. See Radial_Flat_Field_Function for the
        formula.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="r3">
    <xs:annotation>
      <xs:documentation>The r3 attribute specifies specifies the
        3rd-order polynomial coefficient of the function used to
        describe an algorithmic flat field. See
        Radial_Flat_Field_Function for the formula.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="radiometric_type">
    <xs:annotation>
      <xs:documentation>The radiometric_type defines the specific type
        of radiance measurement. Possible values include "Radiance",
        "Spectral Radiance", "Scaled Spectral Radiance". Note: There are
        many more possible values, and this definition can be updated to
        include more examples over time. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="radiometric_zenith_scaling_factor">
    <xs:annotation>
      <xs:documentation>Defines the scaling factor used for Scaled
        Radiance or Scaled Spectral Radiance. Scaled radiance is created
        by dividing radiance by this factor, which scales the radiance
        to what it would be if the sun were at the zenith with a clear
        atmosphere.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="raw_count">
    <xs:annotation>
      <xs:documentation>The raw_count attribute provides the value of
        some parameter measured by a spacecraft or instrument sensor in
        the raw units reported by that sensor. A separate attribute
        should be included alongside the raw_count that translates this
        value into the appropriate engineering units. i.e.
        temperature_value in degrees C or voltage_value in
        Volts</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="readout_rate_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="readout_rate">
    <xs:annotation>
      <xs:documentation>The readout_rate attribute specifies the clock
        rate at which values are read from the sensor.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:readout_rate_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Frequency" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="responsivity_b">
    <xs:annotation>
      <xs:documentation>Specifies the conversion factor between DN and
        radiance units that has been applied to the blue channel of an
        image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="responsivity_factor_b">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been applied to
        the B cell of the Bayer pattern, before de-Bayering
        (demosaicking) takes place.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="responsivity_factor_g">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been applied to
        the G cell of the Bayer pattern, before de-Bayering
        (demosaicking) takes place.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="responsivity_factor_r">
    <xs:annotation>
      <xs:documentation>Specifies the factor that has been applied to
        the R cell of the Bayer pattern, before de-Bayering
        (demosaicking) takes place.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="responsivity_g">
    <xs:annotation>
      <xs:documentation>Specifies the conversion factor between DN and
        radiance units that has been applied to the green channel of an
        image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="responsivity_pan">
    <xs:annotation>
      <xs:documentation>Specifies the conversion factor between DN and
        radiance units that has been applied to a panchromatic
        image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="responsivity_r">
    <xs:annotation>
      <xs:documentation>Specifies the conversion factor between DN and
        radiance units that has been applied to the red channel of an
        image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="sample_bit_mask">
    <xs:annotation>
      <xs:documentation>The sample_bit_mask attribute Specifies the
        active bits in a sample. Any bit mask is valid in an non-raw
        product. Any 8-bit product, whether a scaled raw product or
        other, will have the value "2#11111111" and be stored in one
        byte. Any 12-bit product, whether an unscaled raw product, or an
        ILUT partially-processed product (see companding_method), will
        have the value "2#0000111111111111" and be stored in two bytes.
        A 15-bit product (e.g. Radiometrically-corrected Calibrated
        product type) will have the value "2#0111111111111111" and be
        stored in two bytes. Any 32-bit integer product (e.g. Histogram
        Raw product) will have the value
        "2#11111111111111111111111111111111" and be stored in four
        bytes. For floating-point data, sample_bit_mask is not valid and
        may be absent. If present, it should be ignored. NOTE: In the
        PDS, the domain of sample_bit_mask is dependent upon the
        currently-described value in the sample_bits attribute and only
        applies to integer values.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="sample_bits">
    <xs:annotation>
      <xs:documentation>The sample_bits attribute specifies the logical
        or active number of bits in the data, which is distinct from the
        physical number of bits (for example, encoding 12-bit data
        within 16-bit words). These logical bits are stored in the low
        order (least significant) bits, with unused bits filled with 0
        (or 1 for negative integers to preserve a two's complement
        representation). This is distinct from the valid data range
        (specified by valid_minimum and valid_maximum in
        Special_Constants class) because all values, including
        missing/invalid flag values, must fit within the sample_bits.
        The intent is that the data should be able to be sent through a
        communication channel that passes only sample_bits with no loss
        in fidelity.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="sample_fov_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0.0"/>
     <xs:maxInclusive value="360.0"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="sample_fov">
    <xs:annotation>
      <xs:documentation>The sample_fov attribute specifies the angular
        measure of the field of view of an imaged scene, as measured in
        the image sample direction (generally
        horizontal).</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:sample_fov_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="samples">
    <xs:annotation>
      <xs:documentation> The samples attribute indicates the total
        number of data instances along the horizontal axis of an image
        or sub-image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="sampling_factor">
    <xs:annotation>
      <xs:documentation> The sampling_factor attribute provides the
        value N, where every Nth data point was kept from the original
        data set by selection, averaging, or taking the median. When
        applied to an image object, the single value represented in
        sampling_factor applies to both the lines and the
        samples.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="segment_count">
    <xs:annotation>
      <xs:documentation> The segment_count attribute identifies the
        number of segments into which the image was partitioned for
        error containment purposes.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="segment_number">
    <xs:annotation>
      <xs:documentation> The segment_number attribute identifies which
        compression segment is described in the current Segment class.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="segment_quality">
    <xs:annotation>
      <xs:documentation> The segment_quality attribute identifies the
        resultant or targeted image quality index for on-board ICER data
        compression. Upon return by the ICER decompress function, the
        output quantity segment_quality provides an indication of the
        quality of the reconstructed segment. Specifically, the value
        returned is a double for which the integer values correspond to
        attained min loss values, but in general is an interpolation
        between these values. Thus lower values of segment_quality
        correspond to higher reconstructed qualities, and a value of
        indicates lossless compression. Note that the compressed stream
        does not directly contain the value of min loss that was given
        to the compressor, but the decompressor does know how far along
        in the decompression process it got before it ran out of bits;
        this information is used to determine segment_quality. In rare
        circumstances the decompressor m ay not be able to determine
        segment_quality for a segment that it decompresses. In this case
        it sets segment_quality to 1.0. The reconstructed segment might
        be either lossy or lossless when this occurs. The technical
        condition under which a quality value is not determined is that
        the decompressor runs out of the data for the segment before
        decoding any bit plane information. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="segment_status">
    <xs:annotation>
      <xs:documentation> The segment_status attribute provides a bit
        mask which provides the status of decoding for the compression
        segment identified by segment_number. Upon return by the ICER
        decompress function, the output quantity of segment_status
        contains a number indicating the decode status. The decode
        status may have one or more of the following flags set:
        SHORTDATASEG FLAG (bit 0): If this flag is set, then the segment
        contained so little data that nothing could be reconstructed in
        the segment. INCONSISTENTDATA FLAG (bit 1): If this flag is set,
        then one or more pieces of information in the segment header
        (specifically, image width, image height, n segs, wavelet
        filter, n decomps) are inconsistent with the value(s) in the
        first (valid) segment. ICER will ignore the data in this
        segment. DUPLICATESEG FLAG (bit 2): If this flag is set, then
        the segment index given in the header equals that given by a
        previous segment. The decompressor will ignore the data in this
        segment. BADBITPLANENUMBER FLAG (bit 3): If this flag is set,
        then an ICER internal parameter in the header for this segment
        has probably been corrupted. The decompressor will ignore the
        data in this segment. BADBITPLANECOUNT FLAG (bit 4): If this
        flag is set, then an ICER internal parameter in the header for
        this segment has probably been corrupted. The decompressor will
        ignore the data in this segment. BADDATA FLAG (bit 5): If this
        flag is set, then either the parameter combination given in the
        header for this segment are not allowed by ICER, or the segment
        number is bad. This probably indicates corrupted data. The
        decompressor will ignore the data in this segment.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Numeric_Base2">
    	<xs:pattern value='[0-1]{1,255}'/>
     <xs:minLength value="1"/>
     <xs:maxLength value="6"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="sequence_number">
    <xs:annotation>
      <xs:documentation>The sequence_number attribute supplies the
        sequence identifier for the associated value in a group of
        related values. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="shutter_subtraction_mode">
    <xs:annotation>
      <xs:documentation>The shutter_subtraction_mode specifies whether
        shutter subtraction will be performed, or if it is dependent on
        the exposure_duration_threshold_count.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="subframe_type">
    <xs:annotation>
      <xs:documentation> The subframe_type attribute specifies the
        method of subframing performed on the image. These methods may
        vary by mission so the permissible values should be set by the
        mission dictionaries. Example values from MSL include a)
        'Software Only' - Software processsing only. b) 'Hardware
        Compatible' - Use hardware only if compatible. c) 'Hardware Else
        Software' - Use hardware then software. d) 'Subframe Around Sun'
        - If the sun is found, send a subframed image of the sun. If sun
        is not found, send back no image.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="temperature_status">
    <xs:annotation>
      <xs:documentation>The temperature_status attribute defines the
        status of the associated temperature measurement. The status is
        interpreted in a device-specific way, but generally 0 indicates
        a successful measurement.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="-9223372036854775808"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="temperature_value_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="temperature_value">
    <xs:annotation>
      <xs:documentation>The temperature_value attribute provides the
        temperature, in the specified units, of some point on an imaging
        instrument or other imaging instrument device.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:temperature_value_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Temperature" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="value_number">
    <xs:annotation>
      <xs:documentation>The value_number attribute provides the value
        with no applicable units as named by the associated id, name, or
        sequence_number. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="value_string">
    <xs:annotation>
      <xs:documentation>The value_string attribute provides the value
        with no applicable units as named by the associated id, name, or
        sequence_number. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="video_flag">
    <xs:annotation>
      <xs:documentation> The video_flag attribute indicates whether or
        not video products were commanded. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Boolean">
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="voltage_value_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="voltage_value">
    <xs:annotation>
      <xs:documentation>The voltage_value attribute provides provides
        the voltage, in the specified units, of an imaging instrument or
        some part of the imaging instrument.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:voltage_value_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Voltage" use="required" />
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="wavelet_filter">
    <xs:annotation>
      <xs:documentation>The wavelet_filter attribute specifies thefilter
        used in the compression and decompression
        algorithm.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Short_String_Collapsed">
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="width_pixels_WO_Units">
    <xs:restriction base="pds:ASCII_NonNegative_Integer">
    	<xs:pattern value='[0-9]+'/>
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="18446744073709551615"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="width_pixels">
    <xs:annotation>
      <xs:documentation>The width_pixels attribute provides the
        horizontal dimension, in pixels.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:width_pixels_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Misc" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="x_center_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="x_center">
    <xs:annotation>
      <xs:documentation>The x_center attribute specifies the sample
        coordinate of the center of the function used to describe an
        algorithmic flat field. See Radial_Flat_Field_Function for the
        formula.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:x_center_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Misc" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="y_center_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1.7976931348623157e308"/>
     <xs:maxInclusive value="1.7976931348623157e308"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="y_center">
    <xs:annotation>
      <xs:documentation>The y_center attribute specifies specifies the
        line coordinate of the center of the function used to describe
        an algorithmic flat field. See Radial_Flat_Field_Function for
        the formula.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="img:y_center_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Misc" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
 
  <xs:annotation>
    <xs:documentation>
[
  {
    "dataDictionary": {
      "Title": "PDS4 Data Dictionary" ,
      "Version": "1.11.0.0" ,
      "Date": "Thu Jun 06 15:42:29 PDT 2019" ,
      "Description": "This document is a dump of the contents of the PDS4 Data Dictionary" ,
      "PropertyMapDictionary": [
      ]
    }
  }
]
    </xs:documentation>
  </xs:annotation>
</xs:schema>
