<?xml version="1.0" encoding="UTF-8"?>
  <!-- PDS4 XML/Schema for Name Space Id:geom  Version:1.9.7.0 - Thu Nov 02 23:30:31 UTC 2023 -->
  <!-- Generated from the PDS4 Information Model Version 1.21.0.0 - System Build 14.0 -->
  <!-- *** This PDS4 product schema is an operational deliverable. *** -->
  <!--                                                                           -->
  <!--               Dictionary Stack                                            -->
  <!-- 1.21.0.0 - pds: - Common Dictionary                                       -->
  <!-- 1.9.7.0 - geom: - Geometry Dictionary Full                                -->
  <!--                                                                           -->
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://pds.nasa.gov/pds4/geom/v1"
    xmlns:geom="http://pds.nasa.gov/pds4/geom/v1"
    xmlns:pds="http://pds.nasa.gov/pds4/pds/v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1.9.7.0">
 
    <xs:import namespace="http://pds.nasa.gov/pds4/pds/v1" schemaLocation="https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1L00.xsd"/>
 
  <xs:annotation>
    <xs:documentation>

        Build with: lddtool -pl ingest_file >log_file
           add J switch if a JSON file is needed.
           
    	Classes used from the PDS namespace
    	  - Local_Internal_Reference
    	  - Internal_Reference
    	Attributes used from the PDS namespace
    	  - local_identifier
    	  - name
    	  - description
    	  - comment
    	  - kernel_type
    	  - local_reference_type
    	  - reference_type  
    	
    	version 1.0.0 2015-04-30
        - Initial release.
        version 1.1.0 2015-08-17 
        - Updated to IM version 1.4.1.0
        - Removed attributes body_spice_id and frame_spice_id. body_spice_name and frame_spice_name are the supported attributes.
        - Geometry_Identification_Base was replaced by Body_Identification_Base and Frame_Identification_Base. 
          -- The preceding two changes affect these classes: Central_Body_Identification, 
             Coordinate_System_Origin_Identification, Observer_Identification, Target_Identification.
        - Added the class Coordinate_Space_SPICE. 
        - SPICE_Kernel_Identification was replaced with the new class Coordinate_Space_SPICE in Coordinate_Space_Identification. 
        - Replaced local_spice_kernel_name with spice_kernel_file_name.
        - Changed kernel_type to pds:kernel_type.
          -- The preceding four changes affect Coordinate_Space_Present and Coordinate_Space_Reference.
        - horizontal/vertical_pixel_scale_factor now have unit of measure type Units_of_Map_scale (these are all of the
          form "[length]/pixel").
        - In Geometry_Orbiter class, expanded description to include class use. 
        - Quaternion_non_SPICE_Style contained a double underscore in the class name. That typo has been corrected.
        - Updated a number of the attribute and class definitions/descriptions 
        - In the Geometry_Orbiter class, Reference_Frame_Identification was removed. 
        - Added class Coordinate_Space_Indexed
        - Moved solution_id attribute from Coordinate_Space_Index to Coordinate_Space_Indexed
        - Removed model_desc_file_name from Camera_Model_Parameters
        - Replaced Coordinate_Space_Index with Coordinate_Space_Indexed in Coordinate_Space_Identification
        - Added Local_Internal_Reference to Coordinate_Space_Index
        - Added attribute coordinate_space_frame_type
        - Renamed Device_Motor_Clicks* to Device_Motor_Counts*
        - Renamed Device_Position_Vector to Vector_Device_Gravity
        - Renamed index_value_no_units to index_value_number.
        - Completely revised quaternions, removed all four existing quaternion classes,
          Quaternion_SPICE, Quaternion_non_SPICE, Rotation_Quaternion, and Device_Orientation_Quaternion. 
          Introduced three new quaternion classes, Quaternion_Base, Quaternion_1, and Quaternion_2. The latter 
          two are extensions of Quaternion_Base. 
        - Revised the definitions of the four components of quaternions.
        - Added the classes Rotate_From, Rotate_To, and the attribute rotation_direction to 
          support the new quaternion classes.
        - Added Coordinate_Space_Present to the Articulation_Device_Parameters class.
        - Renamed Coordinate_System to Coordinate_System_Identification.
        - In Coordinate_Space_Indexed changed Coordinate_Space_Index from parent_of to component_of
        - Removed pds:Local_Internal_Reference from Coordinate_Space_Index, Body_Identification_Base, Frame_Identification_Base.
        - Removed the quaternions from the Articulation_Device_Parameters class.
        - Cleaned up some more definitions.
        version 1.2.0   2015-10-15
        - Updated to IM version 1.5.0.0
        - Redefined the Display_Direction class and removed the import of the 
          Display dictionary.
        - Designated Body_Identification_Base as 'abstract'
        - Renamed Target_Identification to Geometry_Target_Identification
        - Renamed horizontal/vertical_pixel_size_angular to horizontal/vertical_pixel_field_of_view
        - Renamed horizontal/vertical_pixel_size_projected to horizontal/vertical_pixel_footprint
        - Removed Body_Identification_Base from Image_Display
        - removed body_positive_pole_clock_angle
        - added central_body_positive_pole_clock_angle
        - Removed Local_Internal_Reference from several classes
        - Removed horizontal/vertical_pixel_scale_factor
        - Updated horizontal/vertical_pixel_field_of_view descriptions
        - Added new, required attribute pixel_field_of_view_method attribute to Pixel_Dimensions
        - Allow for multiple Pixel_Size_Projected classes to be specified in the Pixel_Dimensions class.
        - Revised the definition of Footprint_Vertices and set the minimum number of vertices to two.
        - Added choice between reference_location and new distance attribute in Pixel_Size_Projected class.
        - Added 'Constant' (or some other applicable term per rationale) as a permissible value to Pixel_Size_Projected and reference_location.
        - Require horizontal_pixel_footprint and vertical_pixel_footprint to be specified in Pixel_Size_Projected class.
        - added cahvore_model_type and cahvore_model_parameter attributes to CAHVORE_Model 
        - added new positive_azimuth_direction and positive_elevation_direction attributes to Coordinate_Space_Definition class
        - added new instrument_azimuth, instrument_elevation attributes to Derived_Geometry
        - added new selected_instrument_id attribute to Articulation_Device_Parameters for currently selected instrument
        - added new device_phase attribute to Articulation_Device_Parameters
        - added new Quaternion_Model_Transform and Vector_Model_Transform classes to the Camera_Model_Parameters class
        - fixed bug with Vector_Cartesian_No_Units class - local identifier was Vector_Cartesian_Unit and overwriting that class
        - changed parent_of Vector_Axis class to Vector_Cartesian_No_Units
        - changed parent_of Vector_Device_Gravity class to Vector_Cartesian_Unit instead of Position_Cartesion_Vector_Base since it is a unit vector
        - added pds:Local_Internal_Reference to Coordinate_Space_Identification class, specifically for properly defining a Coordinate_Space_Reference. 
        - updated the definition for coordinate_space_frame_type
        - changed ordering of Coordinate_Space_Indexed to make more logical sense
        - changed local_identifier attribute in Coordinate_Space_Definition class to allow for mutliple identifiers for a Coordinate Space
        - removed units from x_pixel, y_pixel, z_pixel
        - changed x_no_units, y_no_units, z_no_units to x,y,z
        - removed Coordinate_Space_Reference from CAHV_Model class. It only needs to be in the Camera_Model_Parameters class
        - north/east_azimuth - expanded definition to clarify direction of measurement.
        - renamed the Distances class to Specific_Distances, removed the Distance_Generic class 
          from that class and added it to Geometry_Orbiter. 
        - removed the Specific_Position_Vectors and Specific_Velocity_Vectors classes. The remaining Vector aggragating classss
          are Specific_Cartesian_Vectors and Specific_Planetocentric_Vectors.
        - Renamed 59 classes for clarity or to make the order of the class name segments consistent with SR requirements. See 
          the separate class-rename-20151016.txt document for the complete list.
        version 1.2.1   2015-11-12 (this version not released for review)
        - Inserted a missing ")" in Schematron file to correct a typo.
        - changed several instances of a double underscore to a single underscore.
        - Removed Local_Reference_Type from geom:Display_Direction.
        - Added Schematron rule for Image_Display_Geometry/Local_Internal_Reference/Reference_Type to verify 
          use of the enumerated value "display_to_data_object".
        - In Geometry_Orbiter, moved the class Geometry_Target_Identification ahead of the class Coordinate_System Identification. 
          This results in placing at the beginning of the class, the items most likely to have multiple  
          values and hence result in multiple instances of the Geometry_Orbiter class.
        version 1.3.0.0   2016-07-15
        - Updated to IM version 1.6.0.0
        - Changed to four place version number.
        - Added geometry_start_time and geometry_stop_time, and expanded the definitions for the three variations
          of geometry_*_time.
        - Made geom:Display_Direction required even if the disp:Display_Direction is in the label.
        - Removed the option to use Quaternion_1 from the Image_Display_Geometry class since there is no way to identify 
          the relevant end points in the enclosing class.
        - Revised the definition of right_ascension_angle.
        - Changed the description and units of right_ascension_hour_angle to decimal hours.
        - Revised the definition of declination_angle.
        - In Object_Orientation_Clock_Angles, made Reference_Frame_Identification optional instead of required.
        - Added or modified attributes minimum_*, maximum_*, start_*, stop_*; where * is any of target_geocentric_distance,  
          target_heliocentric_distance, target_ssb_distance, spacecraft_geocentric_distance, spacecraft_heliocentric_distance, 
          spacecraft_to_central_body_distance, spacecraft_to_target_center_distance, spacecraft_to_target_boresight_intercept_distance, 
          spacecraft_to_target_subspacecraft_distance, emission_angle, incidence_angle, phase_angle, solar_elongation, latitude, 
          longitude, subspacecraft_azimuth, subspacecraft_latitude, subspacecraft_longitude, subsolar_azimuth, subsolar_latitude, 
          or subsolar_longitude.
        - Added the attribute lat_long_description to support start_ and stop_ latitude and longitude.
        - Added the classes *_Specific, *_Min_Max, *_Start_Stop; where * is any of Distances, Illumination, or Surface_Geometry.
        - Removed the classes Illumination_FOV_Range_Values (replaced with the class Illumination_Min_Max), and 
          Illumination_Single_Values (replaced with the class Illumination_Specific).
        - Removed the attribute illumination_range_designation.
        - Changed the names of several specific distance classes from spacecraft_to_*_distance to spacecraft_*_distance.
        - Renamed Specific_Distances to Distances_Specific.
        - Renamed Surface_Geometry to Surface_Geometry_Specific.
        - Renamed Illumination_Single_Values to Illumination_Specific.
        - Renamed Specific_Cartesian_Vectors to Vectors_Cartesian_Specific.
        - Renamed Specific_Planetocentric_Vectors to Vectors_Planetocentric_Specific.
        - Added or redefined several classes for grouping: Orbiter_Identification, Distances, Surface_Geometry, 
          Illumination_Geometry, Vectors.
        - Reorganized the contents of Geometry_Orbiter.
        - Provided Schematron rules to ensure if one member of a min-max or start-stop pair is used, both are used.
        - Renamed lat_long_description to lat_long_method
        - Renamed Quaternion_1 to Quaternion_Plus_Direction
        - Renamed Quaternion_2 to Quaternion_Plus_To_From
        - In List_Index_Base removed Local_Internal_Reference and made the cardinality of the choice to require at 
          least one of the options.
        - Updated the definitions of several attributes supporting the Lander portion of the dictionary.
        - Changed pds:Internal_Reference to geom:Internal_Reference
        - Changed pds:Local_Internal_Reference to geom:Local_Internal_Reference
        - In the Geometry class, removed the choice statement which made one of Geometry_Orbiter and Geometry_Lander required. Now both are optional.
        version 1.3.1.0   2016-07-29
        - Added the optional attribute kernel_provenance to the SPICE_Kernel_Identification class.
        - Renamed geometry_reference_time, geometry_start/stop_time, and coordinate_system_time, by appending _utc to the attribute name.
        - Added the optional attribute geometry_reference_time_tdb
        - Changed the cardinality of Quaternion_Plus_To_From in the Image_Display_Geometry to allow multiple instances.
        - Added the optional Expanded_Geometry class to the Geometry class
        version 1.4.0.0   2016-09-26
        - Verified that Internal_Reference and Local_Internal_Reference refer to the PDS namespace in class definitions
        - Edited Schematron rules to change geom:Internal_Reference to pds:Internal_Reference
        - Edited Schematron rules to match Internal_Reference contexts with reference_type rule_test
        - Edited Schematron messages to be more user-friendly
        - Remove reference_type and local_reference_type from Schematron rule contexts
        - Edited Schematron rules to change geom:Local_Internal_Reference to pds:Local_Internal_Reference
        - Edited Schematron rules to match Local_Internal_Reference contexts with local_reference_type rule_text
        version 1.4.0.1  2016-11-10
        - Changed pds:name to geom:name in the schematron rules 
        version 1.5.0.0  2017-06-19
        - Regenerated the schema and other files because of a bug in the LDDTool - This changed the classes:
               Coordinate_Space_Identification, Coordinate_Space_Present, Coordinate_Space_Reference
        - Changed the maxoccurs to unbounded for Coordinate_Space_Index in Coordinate_Space_Indexed
        - Changed the choice in Derived_Geometry to include all optional attributes. This was done to ensure that the class contained at least one
               attribute when included in a label.
        version 1.5.1.0  2017-09-20
        - Added index_value_number to List_Index_Temperature to specify DN temperature counts in addition to the EU temperature
        - Updated the definition for List_Index_Temperature to include that
        - Fixed bug with Vector_Entrance to use Vector_Cartesian_Unit instead of Vector_Cartesian_Position_Base
        - Updated for PDS model 1.9.0.0
        version 1.5.2.0  2018-07-25
        - Updated for PDS information model 1.10.0.0
        - In Image_Display_Geometry, moved Object_Orientation_Clock_Angles into the choice statement.
        version 1.5.3.0  2018-07-25
        - Updated for PDS information model 1.10.1.0
        version 1.6.0.0  2018-07-27
        - Changed Optical_Terms to Vector_Optical, reparented it to Vector_Cartesian_Unit, and fixed the definition.
        - Changed Vector_Entrance to Entrance_Terms, reparented it to Polynomial_Coefficients_3, and fixed the definition.
        - Rewrote definitions for CAHV_Model, CAHVOR_Model, CAHVORE_Model, Vector_Center, Vector_Horizontal, Vector_Vertical, and Radial_Terms.
        - Minor revisions to definitions for Camera_Model_Parameters, Coordinate_Space_Present, Coordinate_Space_Reference, instrument_azimuth,
                instrument_elevation, Quaternion_Plus_Direction, solar_azimuth, geometry_start_time_utc, and geometry_stop_time_utc.
        - Minor changes to definitions of incidence_angle and phase_angle.
        version 1.6.1.0 2018-12-05
        - Changed the cardinality (maxoccurs) of Object_Orientation_RA_Dec in Image_Display_Geometry from 3 to unlimited to support 
                request for MESSENGER MDIS migration to PDS4.
        version 1.7.0.0 2019-04-19     
        - Set the element_flag to "true" for the Coordinate_Space_Reference class so that the class is exposed for others to use.
        version 1.7.1.0 2019-05-06
        - Added attribute quaternion_measurement_method and included it in the Coordinate_Space_Definition class.
        - Added local_identifier to the Articulation_Device_Parameters
        version 1.7.2.0 2020-05-04; 2020-07-10
        - Modified definitions for quaternion_measurment_method.
        - Added the Interpolation class to support documentation of camera model interpolation. Included in the 
               Camera_Model_Parameters class.
        - Added PSPH camera model (5 classes and 2 attributes); added enumerated list for model_type relative
               to camera models.
        version 1.8.0.0 2020-07-31
        - Added Vector_Solar_Direction class to Derived_Geometry; made Vector_Axis_X/Y classes a restriction of the
               Vector_Cartesian_Unit class.
        - Added Coordinate_Space_Quality to Coordinate_Space_Definition.
        - Added Commanded_Geometry to Articulation_Device_Parameters 
        - have to edit schema to fix the "choice bug"
        version 1.8.1.0 2020-08-14 thru 2020-08-28
        - Added target_name, target_heliocentric_distance, and solar_image_clock_angle to the 
               Derived_Geometry class in the Geometry_Lander section. 
        - Changed attitude_propagation_counter data type from integer to real for M2020.
        - Added new attribute geometry_state, pds:description, pds:local_identifier to the start
               of the Geometry_Lander class
        - Added a Vector_Device_Gravity_Magnitude class to Articulation_Device_Parameters to support M2020.
        version 1.9.0.0 2020-10-16 thru 2020-12-09
        - Made  celestial_north_clock_angle and ecliptic_north_clock_angle nillable. 
               Added enumerated values for reference_type in Body_Identification_Base and Frame_Identification_Base.
               Added enumerated values for coordinate_space_frame_type.
               Changed enumerated flag to true for coordinate_space_frame_type
        Version 1.9.1.0?? 2020-12-16
        - Added enumerated value to coordinate_space_frame_type to support Mars2020.
        - Added class Device_Pose to Articulation_Device_Parameters to support Mars 2020.
        Version 1.9.2.0 2021-03-30
        - Added enumerated value to coordinate_space_frame_type to support Mars2020.
        Version 1.9.x.0 2021-04-22
        - Added three enumerated values (ROVER_FRAME, TOOL_FRAME, and Tool_Frame)
               to coordinate_space_frame_type to support Mars2020.
        Version 1.9.3.0 2021-07-13
        - Added yet another enumerated value (TURRET_FRAME and title case version)
               to coordinate_space_frame_type to support Mars2020.
        Version 1.9.3.0 2021-04-27
        - Added seven enumerated values in upper/lower case (PIXL_TOOL, WHEEL_RF, WHEEL_LF, WHEEL_RR, 
               WHEEL_LR, WHEEL_RM, WHEEL_LM) to coordinate_space_frame_type for Mars2020.
        - fixed typo traget -> target
        Version 1.9.5.0 2022-01-06
        - Added ORBITAL (upper and title case) to coordinate_space_frame_type for Mars2020.
        Version 1.9.6.0 2022-05-20
        - Added AEGIS_* (1 to 5) to coordinate_space_frame_type for Mars2020.
        Version 1.9.7.0 2023-10-12
        - Made the Display_Direction class optional and updated the definition. Added the 
        Quaternion_Plus_To_From class to the main Geometry_Orbiter class to support
           migration of NEAR data.
    
    </xs:documentation>
  </xs:annotation>
 
  <xs:element name="Coordinate_Space_Reference" type="geom:Coordinate_Space_Reference"> </xs:element>
  <xs:element name="Geometry" type="geom:Geometry"> </xs:element>

  <xs:complexType name="Articulation_Device_Parameters">
    <xs:annotation>
      <xs:documentation>The Articulation_Device_Parameters class
        contains those attributes and sub-classes that describe an
        articulation device. An articulation device is anything that can
        move independently of the spacecraft to which it is attached.
        Examples include mast heads, wheel bogies, arms, filter wheel,
        scan platforms. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="device_id" type="geom:device_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="device_name" type="geom:device_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="device_mode" type="geom:device_mode" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="device_phase" type="geom:device_phase" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="selected_instrument_id" type="geom:selected_instrument_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="Device_Angle" type="geom:Device_Angle"> </xs:element>
        <xs:element name="Device_Component_State" type="geom:Device_Component_State"> </xs:element>
        <xs:element name="Device_Motor_Counts" type="geom:Device_Motor_Counts"> </xs:element>
        <xs:element name="Device_Pose" type="geom:Device_Pose"> </xs:element>
        <xs:element name="Vector_Device_Gravity" type="geom:Vector_Device_Gravity"> </xs:element>
        <xs:element name="Vector_Device_Gravity_Magnitude" type="geom:Vector_Device_Gravity_Magnitude"> </xs:element>
        <xs:element name="Device_Temperature" type="geom:Device_Temperature"> </xs:element>
        <xs:element name="Coordinate_Space_Present" type="geom:Coordinate_Space_Present"> </xs:element>
        <xs:element ref="geom:Coordinate_Space_Reference"> </xs:element>
        <xs:element name="Commanded_Geometry" type="geom:Commanded_Geometry"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Body_Identification_Base">
    <xs:annotation>
      <xs:documentation>The Body_Identification_Base class provides
        multiple attributes that can be used to identify a physical
        object (spacecraft, planet instrument, transmitter, system
        barycenter, etc.). At least one must be used. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="body_spice_name" type="geom:body_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CAHVORE_Model">
    <xs:annotation>
      <xs:documentation>The CAHVORE model is built upon CAHVOR (see
        CAHVOR_Model), adding support for fisheye lenses. It adds one
        more 3-vector and two scalars to CAHVOR. E (Entrance_Terms)
        contains the coefficients of a polynomial function used to model
        movement of the entrance pupil. The two scalars,
        cahvore_model_type and cahvore_model_parameter, together specify
        the type of lens being modeled. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:CAHVOR_Model">
        <xs:sequence>
          <xs:element name="Entrance_Terms" type="geom:Entrance_Terms" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="cahvore_model_type" type="geom:cahvore_model_type" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="cahvore_model_parameter" type="geom:cahvore_model_parameter" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:cahvore_model_type = ('1', '2', '3')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="CAHVOR_Model">
    <xs:annotation>
      <xs:documentation>The CAHVOR model is built upon CAHV (see
        CAHV_Model), adding radial (barrel or pincushion) distortion to
        the linear model. It adds two more 3-vectors to CAHV. O
        (Vector_Optical) is a unit vector representing the axis of
        symmetry for the radial distortion. R (Radial_Terms) contains
        the coefficients of a polynomial function that describes the
        radial distortion. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:CAHV_Model">
        <xs:sequence>
          <xs:element name="Vector_Optical" type="geom:Vector_Optical" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Radial_Terms" type="geom:Radial_Terms" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="CAHV_Model">
    <xs:annotation>
      <xs:documentation>The CAHV model is a linear,
        perspective-projection camera model (equivalent to a pinhole
        camera). It consists of four 3-vectors (C,A,H,V) that describe
        the internal and external camera model parameters needed to
        translate between 2D image coordinates and 3D world coordinates.
        C (Vector_Center) is the 3D position of the pinhole (center of
        the entrance pupil). A (Vector_Axis) is a unit vector normal to
        the image plane pointing outward. H (Vector_Horizontal) is a
        composite vector encoding three quantities: H' (a vector in the
        image plane perpendicular to the vertical columns), Hs (the
        distance between the lens center and image plane, measured in
        horizontal pixels), and Hc (the horizontal image coordinate
        directly under C when moving parallel to A). V (Vector_Vertical)
        similarly composites the analogous V', Vs, and Vc in the
        vertical direction. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Vector_Center" type="geom:Vector_Center" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Axis" type="geom:Vector_Axis" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Horizontal" type="geom:Vector_Horizontal" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Vertical" type="geom:Vector_Vertical" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Camera_Model_Parameters">
    <xs:annotation>
      <xs:documentation>A camera model describes the mathematical
        relationship between the coordinates of a point in 3-dimensional
        space and its projection onto a 2-dimensional image plane. There
        are numerous types of camera models. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="model_type" type="geom:model_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="calibration_source_id" type="geom:calibration_source_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="solution_id" type="geom:solution_id" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="CAHV_Model" type="geom:CAHV_Model"> </xs:element>
        <xs:element name="CAHVOR_Model" type="geom:CAHVOR_Model"> </xs:element>
        <xs:element name="CAHVORE_Model" type="geom:CAHVORE_Model"> </xs:element>
        <xs:element name="PSPH_Model" type="geom:PSPH_Model"> </xs:element>
      </xs:choice>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="Reference_Frame_Identification" type="geom:Reference_Frame_Identification"> </xs:element>
        <xs:element ref="geom:Coordinate_Space_Reference"> </xs:element>
      </xs:choice>
      <xs:element name="Quaternion_Model_Transform" type="geom:Quaternion_Model_Transform" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Model_Transform" type="geom:Vector_Model_Transform" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Interpolation" type="geom:Interpolation" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:model_type = ('CAHV', 'CAHVOR', 'CAHVORE', 'PSPH')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Central_Body_Identification">
    <xs:annotation>
      <xs:documentation>The Central_Body_Identification class uniquely
        identifies the body that is the central body associated with an
        observation (e.g., Saturn for Saturn system observations).
        </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Body_Identification_Base">
        <xs:sequence>
          <xs:element name="body_spice_name" type="geom:body_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Commanded_Geometry">
    <xs:annotation>
      <xs:documentation> Specifies how the device was commanded in order
        to achieve the state represented in the enclosing
        Articulation_Device_Parameters. Commands are often at a higher
        level, e.g. point at this location or move to this XYZ, which is
        translated by flight software to the actual pose of the device.
        Certain forms of command are measured in a coordinate frame;
        this is specified by the Coordinate_Space_Reference in this
        class (if not present, the Coordinate_Space_Reference in the
        Articulation_Device_Parameters parent should be assumed).
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="command_type" type="geom:command_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Angle" type="geom:Device_Angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Commanded_Position" type="geom:Commanded_Position" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="geom:Coordinate_Space_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:command_type = ('Angle_Absolute', 'Angle_Relative', 'Joint_Absolute', 'Joint_Relative', 'No_Motion', 'No_Motion_No_Arb', 'None', 'XYZ')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Commanded_Position">
    <xs:annotation>
      <xs:documentation> Specifies a Cartesian position used in
        commanding the device. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Definition">
    <xs:annotation>
      <xs:documentation>The Coordinate_Space classes are typically used
        for lander/rover geometry while the Coordinate_System
        construction is used for orbiter/flyby geometry.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:local_identifier" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="positive_azimuth_direction" type="geom:positive_azimuth_direction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="positive_elevation_direction" type="geom:positive_elevation_direction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Coordinate_Space_Present" type="geom:Coordinate_Space_Present" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Origin_Offset" type="geom:Vector_Origin_Offset" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Quaternion_Plus_Direction" type="geom:Quaternion_Plus_Direction" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="quaternion_measurement_method" type="geom:quaternion_measurement_method" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="geom:Coordinate_Space_Reference" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Coordinate_Space_Quality" type="geom:Coordinate_Space_Quality" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:positive_azimuth_direction = ('CCW', 'CW', 'Clockwise', 'Counterclockwise')"/> -->
    <!-- <xs:assert test="geom:positive_elevation_direction = ('Down', 'Nadir', 'Up', 'Zenith')"/> -->
    <!-- <xs:assert test="geom:quaternion_measurement_method = ('Bundle_Adjustment', 'Coarse', 'Fine', 'Sun_Find', 'Tilt_Only', 'Unknown')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Identification">
    <xs:annotation>
      <xs:documentation>The Coordinate_Space_Identification class
        uniquely identifies a coordinate space (i.e., reference frame +
        position) with respect to which the values of the attributes in
        the containing class are defined. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="Coordinate_Space_Indexed" type="geom:Coordinate_Space_Indexed"> </xs:element>
        <xs:element name="Coordinate_Space_SPICE" type="geom:Coordinate_Space_SPICE"> </xs:element>
        <xs:element ref="pds:Local_Internal_Reference"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Index">
    <xs:annotation>
      <xs:documentation>Identifies a coordinate space using an index
        value given in an identified list. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:List_Index_No_Units">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
            <xs:element name="index_name" type="geom:index_name"> </xs:element>
            <xs:element name="index_id" type="geom:index_id"> </xs:element>
          </xs:choice>
          <xs:element name="index_value_number" type="geom:index_value_number" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Indexed">
    <xs:annotation>
      <xs:documentation>The Coordinate_Space_Indexed class contains the
        attributes and classes identifying the indexed coordinate space.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="coordinate_space_frame_type" nillable="true" type="geom:coordinate_space_frame_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Coordinate_Space_Index" type="geom:Coordinate_Space_Index" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="solution_id" type="geom:solution_id" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:coordinate_space_frame_type = ('AEGIS_1', 'AEGIS_2', 'AEGIS_3', 'AEGIS_4', 'AEGIS_5', 'APXS_Frame', 'APXS_Frame', 'ARM_CUSTOM_TCP_FRAME', 'ARM_DOCKING_POST_FRAME', 'ARM_DRILL_FRAME', 'ARM_DRT_FRAME', 'ARM_FCS_FRAME', 'ARM_FRAME', 'ARM_GDRT_FRAME', 'ARM_MAHLI_FRAME', 'ARM_PIXL_FRAME', 'ARM_PORTION_FRAME', 'ARM_SCOOP_TCP_FRAME', 'ARM_SCOOP_TIP_FRAME', 'ARM_SHERLOC_FRAME', 'ARM_TURRET_FRAME', 'ARM_WATSON_FRAME', 'Arm_Custom_TCP_Frame', 'Arm_DRT_Frame', 'Arm_Docking_Post_Frame', 'Arm_Drill_Frame', 'Arm_FCS_Frame', 'Arm_Frame', 'Arm_GDRT_Frame', 'Arm_MAHLI_Frame', 'Arm_PIXL_Frame', 'Arm_Portion_Frame', 'Arm_SHERLOC_Frame', 'Arm_Scoop_TCP_Frame', 'Arm_Scoop_TIP_Frame', 'Arm_Turret_Frame', 'Arm_WATSON_Frame', 'CINT_FRAME', 'CINT_Frame', 'DRILL_BIT_TIP', 'HELI_G_FRAME', 'HELI_M_FRAME', 'HELI_S1_FRAME', 'HELI_S2_FRAME', 'Heli_G_Frame', 'Heli_M_Frame', 'Heli_S1_Frame', 'Heli_S2_Frame', 'LANDER_FRAME', 'LOCAL_LEVEL_FRAME', 'Lander_Frame', 'Local_Level_Frame', 'MB_Frame', 'MCMF_FRAME', 'MCMF_Frame', 'MCZ_CAL_PRIMARY', 'MEDA_RDS', 'MI_Frame', 'Mast_Frame', 'ORBITAL', 'Orbital', 'PIXL_BASE_FRAME', 'PIXL_Base_Frame', 'PIXL_SENSOR_FRAME', 'PIXL_Sensor_Frame', 'PIXL_TOOL', 'PIXL_Tool', 'ROVER_FRAME', 'ROVER_MECH_FRAME', 'ROVER_NAV_FRAME', 'RSM_FRAME', 'RSM_Frame', 'RSM_HEAD_FRAME', 'RSM_Head_Frame', 'Rat_Frame', 'Rover_Frame', 'Rover_Mech_Frame', 'Rover_Nav_Frame', 'SITE_FRAME', 'SUN', 'Site_Frame', 'TOOL_FRAME', 'TURRET_FRAME', 'Tool_Frame', 'Turret_Frame', 'WHEEL_LF', 'WHEEL_LM', 'WHEEL_LR', 'WHEEL_RF', 'WHEEL_RM', 'WHEEL_RR', 'Wheel_LF', 'Wheel_LM', 'Wheel_LR', 'Wheel_RF', 'Wheel_RM', 'Wheel_RR')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Present">
    <xs:annotation>
      <xs:documentation>The Coordinate_Space_Present class includes the
        attributes that identifies the coordinate space presently being
        defined. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Coordinate_Space_Identification">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="unbounded">
            <xs:element name="Coordinate_Space_Indexed" type="geom:Coordinate_Space_Indexed"> </xs:element>
            <xs:element name="Coordinate_Space_SPICE" type="geom:Coordinate_Space_SPICE"> </xs:element>
            <xs:element ref="pds:Local_Internal_Reference"> </xs:element>
          </xs:choice>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Quality">
    <xs:annotation>
      <xs:documentation>Parameters that indicate the quality of the
        coordinate space knowledge. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="quaternion_measurement_method" type="geom:quaternion_measurement_method" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="attitude_propagation_counter" type="geom:attitude_propagation_counter" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="attitude_propagation_duration" type="geom:attitude_propagation_duration" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:quaternion_measurement_method = ('Bundle_Adjustment', 'Coarse', 'Fine', 'Sun_Find', 'Tilt_Only', 'Unknown')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_Reference">
    <xs:annotation>
      <xs:documentation>The Coordinate_Space_Reference class includes
        the attributes that identify the coordinate space being used to
        express coordinates in the class in which it appears.
        </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Coordinate_Space_Identification">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="unbounded">
            <xs:element name="Coordinate_Space_Indexed" type="geom:Coordinate_Space_Indexed"> </xs:element>
            <xs:element name="Coordinate_Space_SPICE" type="geom:Coordinate_Space_SPICE"> </xs:element>
            <xs:element ref="pds:Local_Internal_Reference"> </xs:element>
          </xs:choice>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Coordinate_Space_SPICE">
    <xs:annotation>
      <xs:documentation>Identifies a coordinate space using SPICE names
        for the frame and origin.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="body_spice_name" type="geom:body_spice_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="frame_spice_name" type="geom:frame_spice_name" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Coordinate_System_Identification">
    <xs:annotation>
      <xs:documentation>The Coordinate_System_Identification class fully
        describes a coordinate system. This class is typically used for
        orbiter/flyby geometry while the Coordinate_Space construction
        is used for lander/rover geometry.
        Coordinate_System_Identification provides the reference frame,
        coordinate system type (cartesian, planetocentric, etc.),
        origin, and the instantiation time of the system when
        appropriate. The instantiation time (coordinate_system_time_utc)
        is used when a rotating frame has been 'frozen' at a particular
        epoch. Instantiation time is not needed for inertial or rotating
        frames. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="coordinate_system_type" nillable="true" type="geom:coordinate_system_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="coordinate_system_time_utc" type="geom:coordinate_system_time_utc" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Coordinate_System_Origin_Identification" type="geom:Coordinate_System_Origin_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Reference_Frame_Identification" type="geom:Reference_Frame_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:coordinate_system_type = ('Azimuth-Elevation', 'Cartesian', 'Planetocentric', 'Planetodetic', 'Planetographic', 'Spherical')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Coordinate_System_Origin_Identification">
    <xs:annotation>
      <xs:documentation>The Coordinate_System_Origin_Identification
        class uniquely identifies the "body" that is the origin of a
        coordinate system. Typically body centered coordinate systems
        place the origin at the center of mass of the body. In addition
        to physical bodies, the origin may be defined at a point in
        space such as a system barycenter. Note that the origin of
        coordinate system does not necessarily correspond to either end
        point of a vector. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Body_Identification_Base">
        <xs:sequence>
          <xs:element name="body_spice_name" type="geom:body_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Derived_Geometry">
    <xs:annotation>
      <xs:documentation>The Derived_Geometry class is a container for
        surface based observations (lander or rover). It is used to
        provide some geometric quantities relative to a specific
        Reference Coordinate Space. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="target_name" type="geom:target_name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="incidence_angle" type="geom:incidence_angle"> </xs:element>
        <xs:element name="emission_angle" type="geom:emission_angle"> </xs:element>
        <xs:element name="phase_angle" type="geom:phase_angle"> </xs:element>
        <xs:element name="instrument_azimuth" type="geom:instrument_azimuth"> </xs:element>
        <xs:element name="instrument_elevation" type="geom:instrument_elevation"> </xs:element>
        <xs:element name="solar_azimuth" type="geom:solar_azimuth"> </xs:element>
        <xs:element name="solar_elevation" type="geom:solar_elevation"> </xs:element>
        <xs:element name="start_azimuth" type="geom:start_azimuth"> </xs:element>
        <xs:element name="stop_azimuth" type="geom:stop_azimuth"> </xs:element>
        <xs:element name="target_heliocentric_distance" type="geom:target_heliocentric_distance"> </xs:element>
        <xs:element name="solar_image_clock_angle" type="geom:solar_image_clock_angle"> </xs:element>
      </xs:choice>
      <xs:element name="Vector_Solar_Direction" type="geom:Vector_Solar_Direction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="geom:Coordinate_Space_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Angle">
    <xs:annotation>
      <xs:documentation>The Device_Angle class is a container for the
        set of angles between the various components or devices of the
        spacecraft. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Angle_Index" type="geom:Device_Angle_Index" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Angle_Index">
    <xs:annotation>
      <xs:documentation>The Device_Angle class is a container for the
        set of angles the spacecraft device specified in the parent
        Articulation_Device_Parameters class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:List_Index_Angle">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
            <xs:element name="index_name" type="geom:index_name"> </xs:element>
            <xs:element name="index_id" type="geom:index_id"> </xs:element>
          </xs:choice>
          <xs:element name="index_value_angle" type="geom:index_value_angle" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Component_State">
    <xs:annotation>
      <xs:documentation>The Device_Component_State class is a container
        for the states of the various components of the articulation
        device. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Component_State_Index" type="geom:Device_Component_State_Index" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Component_State_Index">
    <xs:annotation>
      <xs:documentation>The Device_Component_State_Index class is a
        container for one state of a component of the articulation
        device. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:List_Index_Text">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
            <xs:element name="index_name" type="geom:index_name"> </xs:element>
            <xs:element name="index_id" type="geom:index_id"> </xs:element>
          </xs:choice>
          <xs:element name="index_value_string" type="geom:index_value_string" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Motor_Counts">
    <xs:annotation>
      <xs:documentation>The Device_Motor_Counts class is a container for
        the classes that describe the motor step count information for
        device components. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Motor_Counts_Index" type="geom:Device_Motor_Counts_Index" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Motor_Counts_Index">
    <xs:annotation>
      <xs:documentation>The Device_Motor_Counts_Index class is a
        container for the attributes that describe the motor step count
        information for a single motor on a device. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:List_Index_No_Units">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
            <xs:element name="index_name" type="geom:index_name"> </xs:element>
            <xs:element name="index_id" type="geom:index_id"> </xs:element>
          </xs:choice>
          <xs:element name="index_value_number" type="geom:index_value_number" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Device_Pose">
    <xs:annotation>
      <xs:documentation>Defines the pose of this articulation device.
        The name indicates what exactly is being measured and how, and
        disambiguates if there is more than one Device_Pose. For
        example, Mars 2020 has "arm_attitude_reference", which indicates
        the pose of the rover that was used to calculate gravity droop
        of the arm. The interpretation of the pose is mission-specific;
        see the mission documentation.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="pds:name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Quaternion_Plus_Direction" type="geom:Quaternion_Plus_Direction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Origin_Offset" type="geom:Vector_Origin_Offset" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Temperature">
    <xs:annotation>
      <xs:documentation>The Device_Temperature class is a container for
        all available device temperatures of an articulated device
        and/or part(s) of a device. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Device_Temperature_Index" type="geom:Device_Temperature_Index" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Device_Temperature_Index">
    <xs:annotation>
      <xs:documentation>The Device_Temperature_Index class specifies the
        attributes describing the temperature of one device or some part
        of a device. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:List_Index_Temperature">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
            <xs:element name="index_name" type="geom:index_name"> </xs:element>
            <xs:element name="index_id" type="geom:index_id"> </xs:element>
          </xs:choice>
          <xs:element name="index_value_temperature" type="geom:index_value_temperature" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="index_value_number" type="geom:index_value_number" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Display_Direction">
    <xs:annotation>
      <xs:documentation>Note: For all image objects, the expectation is
        that the image orientation will be given using the
        disp:Display_Direction class. In the unusual case where an image
        object does not have an associated disp:Display_Direction class,
        then, and only then, Display_Direction class defined here should
        be present. The Display_Direction class specifies which two of
        the dimensions of an Array object should be displayed and how
        they should be displayed in the vertical (line) and horizontal
        (sample) dimensions of a display device. This class is
        essentially the same as the class of the same name in the
        Display Dictionary, and is redefined here for convenience.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="horizontal_display_axis" type="geom:horizontal_display_axis" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="horizontal_display_direction" type="geom:horizontal_display_direction" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="vertical_display_axis" type="geom:vertical_display_axis" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="vertical_display_direction" type="geom:vertical_display_direction" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:horizontal_display_direction = ('Left to Right', 'Right to Left')"/> -->
    <!-- <xs:assert test="geom:vertical_display_direction = ('Bottom to Top', 'Top to Bottom')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Distance_Generic">
    <xs:annotation>
      <xs:documentation>The distance between the two objects, both of
        which must be specified. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Observer_Identification" type="geom:Observer_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="distance" type="geom:distance" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Distances">
    <xs:annotation>
      <xs:documentation>The Distances class is a container of distance
        classes. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Distances_Specific" type="geom:Distances_Specific" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Distances_Min_Max" type="geom:Distances_Min_Max" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Distances_Start_Stop" type="geom:Distances_Start_Stop" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Distance_Generic" type="geom:Distance_Generic" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Distances_Min_Max">
    <xs:annotation>
      <xs:documentation>The Distances_Min_Max class is a container class
        for named distances given as minimum-maximum pairs. For
        distance, if either the minimum or maximum parameter is given,
        both must be provided. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="minimum_spacecraft_geocentric_distance" type="geom:minimum_spacecraft_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_spacecraft_geocentric_distance" type="geom:maximum_spacecraft_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_spacecraft_heliocentric_distance" type="geom:minimum_spacecraft_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_spacecraft_heliocentric_distance" type="geom:maximum_spacecraft_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_spacecraft_central_body_distance" type="geom:minimum_spacecraft_central_body_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_spacecraft_central_body_distance" type="geom:maximum_spacecraft_central_body_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_spacecraft_target_center_distance" type="geom:minimum_spacecraft_target_center_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_spacecraft_target_center_distance" type="geom:maximum_spacecraft_target_center_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_spacecraft_target_boresight_intercept_distance" type="geom:minimum_spacecraft_target_boresight_intercept_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_spacecraft_target_boresight_intercept_distance" type="geom:maximum_spacecraft_target_boresight_intercept_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_spacecraft_target_subspacecraft_distance" type="geom:minimum_spacecraft_target_subspacecraft_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_spacecraft_target_subspacecraft_distance" type="geom:maximum_spacecraft_target_subspacecraft_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_target_geocentric_distance" type="geom:minimum_target_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_target_geocentric_distance" type="geom:maximum_target_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_target_heliocentric_distance" type="geom:minimum_target_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_target_heliocentric_distance" type="geom:maximum_target_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_target_ssb_distance" type="geom:minimum_target_ssb_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_target_ssb_distance" type="geom:maximum_target_ssb_distance" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Distances_Specific">
    <xs:annotation>
      <xs:documentation>The Distances_Specific class is a container
        class for specific distances defined in this dictionary.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="spacecraft_geocentric_distance" type="geom:spacecraft_geocentric_distance"> </xs:element>
        <xs:element name="spacecraft_heliocentric_distance" type="geom:spacecraft_heliocentric_distance"> </xs:element>
        <xs:element name="spacecraft_central_body_distance" type="geom:spacecraft_central_body_distance"> </xs:element>
        <xs:element name="spacecraft_target_center_distance" type="geom:spacecraft_target_center_distance"> </xs:element>
        <xs:element name="spacecraft_target_boresight_intercept_distance" type="geom:spacecraft_target_boresight_intercept_distance"> </xs:element>
        <xs:element name="spacecraft_target_subspacecraft_distance" type="geom:spacecraft_target_subspacecraft_distance"> </xs:element>
        <xs:element name="target_geocentric_distance" type="geom:target_geocentric_distance"> </xs:element>
        <xs:element name="target_heliocentric_distance" type="geom:target_heliocentric_distance"> </xs:element>
        <xs:element name="target_ssb_distance" type="geom:target_ssb_distance"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Distances_Start_Stop">
    <xs:annotation>
      <xs:documentation>The Distances_Start_Stop class is a container
        class for named distances given as pairs corresponding to the
        beginning and end of the observation. For a distance, if either
        the start or stop parameter is given, both must be provided. If
        any values from this class are included in the label, the
        parameters geometry_start_time_utc and geometry_stop_time_utc
        must be given in the enclosing Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="start_spacecraft_geocentric_distance" type="geom:start_spacecraft_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_spacecraft_geocentric_distance" type="geom:stop_spacecraft_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_spacecraft_heliocentric_distance" type="geom:start_spacecraft_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_spacecraft_heliocentric_distance" type="geom:stop_spacecraft_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_spacecraft_central_body_distance" type="geom:start_spacecraft_central_body_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_spacecraft_central_body_distance" type="geom:stop_spacecraft_central_body_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_spacecraft_target_center_distance" type="geom:start_spacecraft_target_center_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_spacecraft_target_center_distance" type="geom:stop_spacecraft_target_center_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_spacecraft_target_boresight_intercept_distance" type="geom:start_spacecraft_target_boresight_intercept_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_spacecraft_target_boresight_intercept_distance" type="geom:stop_spacecraft_target_boresight_intercept_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_spacecraft_target_subspacecraft_distance" type="geom:start_spacecraft_target_subspacecraft_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_spacecraft_target_subspacecraft_distance" type="geom:stop_spacecraft_target_subspacecraft_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_target_geocentric_distance" type="geom:start_target_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_target_geocentric_distance" type="geom:stop_target_geocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_target_heliocentric_distance" type="geom:start_target_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_target_heliocentric_distance" type="geom:stop_target_heliocentric_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_target_ssb_distance" type="geom:start_target_ssb_distance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_target_ssb_distance" type="geom:stop_target_ssb_distance" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Entrance_Terms">
    <xs:annotation>
      <xs:documentation>The Entrance_Terms contains the coefficients of
        a polynomial function used to model movement of the entrance
        pupil. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Polynomial_Coefficients_3">
        <xs:sequence>
          <xs:element name="c0" type="geom:c0" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="c1" type="geom:c1" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="c2" type="geom:c2" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Expanded_Geometry">
    <xs:annotation>
      <xs:documentation>The Expanded_Geometry class provides a mechanism
        to reference additional geometric metadata contained in a
        separate object or product (e.g., a table of metadata).
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:Local_Internal_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Footprint_Vertices">
    <xs:annotation>
      <xs:documentation>The Footprint_Vertices class provides a set of
        latitude and longitude pairs which are the vertices of a polygon
        representing the projected footprint of the field of view on the
        target surface (or on a map). Note this is intended for products
        such as maps, or where the target fills the field of view. The
        vertices should be listed either in clockwise or
        counterclockwise order. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Pixel_Intercept" type="geom:Pixel_Intercept" minOccurs="2" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Frame_Identification_Base">
    <xs:annotation>
      <xs:documentation>The Frame_Identification_Base class provides
        multiple attributes that can be used to identify a reference
        frame. At least one must be used. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="frame_spice_name" type="geom:frame_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Generic_Vectors">
    <xs:annotation>
      <xs:documentation>The Generic_Vectors class is a container class
        for all of the build your own vector templates.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="Vector_Cartesian_Position_Generic" type="geom:Vector_Cartesian_Position_Generic"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Generic" type="geom:Vector_Cartesian_Velocity_Generic"> </xs:element>
        <xs:element name="Vector_Cartesian_Acceleration_Generic" type="geom:Vector_Cartesian_Acceleration_Generic"> </xs:element>
        <xs:element name="Vector_Planetocentric_Position_Generic" type="geom:Vector_Planetocentric_Position_Generic"> </xs:element>
        <xs:element name="Vector_Planetocentric_Velocity_Generic" type="geom:Vector_Planetocentric_Velocity_Generic"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Geometry">
    <xs:annotation>
      <xs:documentation>The Geometry class is a container for all
        geometric information in the label. The Image_Display_Geometry
        class should have one instance if the primary data object is an
        Array object for which two of the dimensions are suitable for
        display in the vertical (line) and horizontal (sample)
        dimensions of a display device. Multiple instances of the
        Image_Display_Geometry class are only appropriate if the data
        product contains multiple Array objects and the orientations of
        the various objects are not the same. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SPICE_Kernel_Files" type="geom:SPICE_Kernel_Files" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Expanded_Geometry" type="geom:Expanded_Geometry" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Image_Display_Geometry" type="geom:Image_Display_Geometry" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Geometry_Orbiter" type="geom:Geometry_Orbiter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Geometry_Lander" type="geom:Geometry_Lander" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Geometry_Lander">
    <xs:annotation>
      <xs:documentation>The Geometry_Lander class is a container for all
        geometric information in the label relating to a landed
        spacecraft, including rovers. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="geometry_state" type="geom:geometry_state" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="description" type="pds:description" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Articulation_Device_Parameters" type="geom:Articulation_Device_Parameters" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Camera_Model_Parameters" type="geom:Camera_Model_Parameters" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Coordinate_Space_Definition" type="geom:Coordinate_Space_Definition" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Derived_Geometry" type="geom:Derived_Geometry" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Motion_Counter" type="geom:Motion_Counter" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Geometry_Orbiter">
    <xs:annotation>
      <xs:documentation>The Geometry_Orbiter class is a container for
        geometric information (positions, velocities, orientations,
        etc.) relevant to orbiter or flyby spacecraft observations. If
        any of the contained classes or attributes have central body,
        and or target in the class or attribute name (e.g.,
        spacecraft_to_central_body_distance,
        Vector_Planetocentric_Position_Spacecraft_To_Target), then the
        central body and or target must be identified in this class. If
        more than one geometry_reference_time_utc, target or central
        body need to be identified to fully describe the data, use
        multiple instances of the Geometry_Orbiter class. Do not use
        Coordinate_System at this level if more than one coordinate
        system is used in the contained classes. If more than one
        coordinate system is used, specify Coordinate_System in each of
        the subordinate classes where it is appropriate.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="3">
        <xs:element name="geometry_reference_time_utc" type="geom:geometry_reference_time_utc"> </xs:element>
        <xs:element name="geometry_start_time_utc" type="geom:geometry_start_time_utc"> </xs:element>
        <xs:element name="geometry_stop_time_utc" type="geom:geometry_stop_time_utc"> </xs:element>
      </xs:choice>
      <xs:element name="geometry_reference_time_tdb" type="geom:geometry_reference_time_tdb" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Orbiter_Identification" type="geom:Orbiter_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Pixel_Dimensions" type="geom:Pixel_Dimensions" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Distances" type="geom:Distances" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Surface_Geometry" type="geom:Surface_Geometry" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Illumination_Geometry" type="geom:Illumination_Geometry" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Vectors" type="geom:Vectors" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Quaternion_Plus_To_From" type="geom:Quaternion_Plus_To_From" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Geometry_Target_Identification">
    <xs:annotation>
      <xs:documentation>The object to which the associated set of
        geometric parameters are given. Within the Geometry dictionary
        context, a "Target" is the body on the "to" end of a vector, or
        other translation through space. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Body_Identification_Base">
        <xs:sequence>
          <xs:element name="body_spice_name" type="geom:body_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Illumination_Geometry">
    <xs:annotation>
      <xs:documentation>The Illumination_Geometry class is a container
        for illumination geometry classes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Illumination_Specific" type="geom:Illumination_Specific" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Illumination_Min_Max" type="geom:Illumination_Min_Max" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Illumination_Start_Stop" type="geom:Illumination_Start_Stop" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Illumination_Min_Max">
    <xs:annotation>
      <xs:documentation>The Illumination_Min_Max class contains
        attributes providing illumination parameters as minimum/maximum
        pairs. For any given illumination parameter if one of minimum or
        maximum is given, both must be given. If a target is specified
        using the Geometry_Target_Identification class in the
        Orbiter_Identification class under the same parent
        Geometry_Orbiter class, the min-max pairs for each illumination
        parameter provide the range of that parameter in the observation
        on that target. Otherwise the pair provides the range for the
        entire field of view. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="minimum_emission_angle" type="geom:minimum_emission_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_emission_angle" type="geom:maximum_emission_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_incidence_angle" type="geom:minimum_incidence_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_incidence_angle" type="geom:maximum_incidence_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_phase_angle" type="geom:minimum_phase_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_phase_angle" type="geom:maximum_phase_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_solar_elongation" type="geom:minimum_solar_elongation" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_solar_elongation" type="geom:maximum_solar_elongation" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Illumination_Specific">
    <xs:annotation>
      <xs:documentation>The Illumination_Specific class contains
        attributes providing illumination parameters at a single
        location in the field of view. That location is specified by
        using one, and only one of reference_location,
        reference_pixel_location, or Reference_Pixel, If
        reference_location is used, and indicates a point on a target,
        the target must be the one specified using
        Geometry_Target_Identification in the parent Geometry_Orbiter
        class. The provided value for each illumination attribute must
        correspond to the time given by geometry_reference_time_utc.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="reference_location" type="geom:reference_location" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="reference_pixel_location" type="geom:reference_pixel_location" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Reference_Pixel" type="geom:Reference_Pixel" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="4">
        <xs:element name="emission_angle" type="geom:emission_angle"> </xs:element>
        <xs:element name="incidence_angle" type="geom:incidence_angle"> </xs:element>
        <xs:element name="phase_angle" type="geom:phase_angle"> </xs:element>
        <xs:element name="solar_elongation" type="geom:solar_elongation"> </xs:element>
      </xs:choice>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:reference_location = ('Boresight Intercept Point', 'Constant', 'Subspacecraft Point', 'Target Center')"/> -->
    <!-- <xs:assert test="geom:reference_pixel_location = ('Center', 'Lower Left Corner', 'Lower Right Corner', 'Upper Left Corner', 'Upper Right Corner')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Illumination_Start_Stop">
    <xs:annotation>
      <xs:documentation>The Illumination_Start_Stop class contains
        attributes providing illumination parameters as pairs
        corresponding to the beginning and end of the observation. If
        either the start or stop parameter is given, both must be
        provided. If any values from this class are included in the
        label, the parameters geometry_start_time_utc and
        geometry_stop_time_utc must be given in the enclosing
        Geometry_Orbiter class. If a target is specified using the
        Geometry_Target_Identification class in the
        Orbiter_Identification class under the parent Geometry_Orbiter
        class, the start-stop pairs for each illumination parameter
        provide the range of that parameter in the observation on that
        target. Otherwise the pair provides the range for the entire
        field of view. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="start_emission_angle" type="geom:start_emission_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_emission_angle" type="geom:stop_emission_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_incidence_angle" type="geom:start_incidence_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_incidence_angle" type="geom:stop_incidence_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_phase_angle" type="geom:start_phase_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_phase_angle" type="geom:stop_phase_angle" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_solar_elongation" type="geom:start_solar_elongation" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_solar_elongation" type="geom:stop_solar_elongation" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Image_Display_Geometry">
    <xs:annotation>
      <xs:documentation>Image_Display_Geometry class provides an
        unambiguous description of the orientation of the image
        contents. This class assumes an image is displayed as described
        by a disp:Display_Direction class elsewhere in the label. In the
        unusual case where an image object does not have an associated
        disp:Display_Direction class, then, and only then, the
        optionalgeom:Display_Direction class in this class should be
        present. Coupled with the information in the associated
        Display_Direction class, any one of the Object_Orientation_*
        classes should allow unambiguous orientation of the contents of
        the image. The Local_Internal_Reference class is used to
        identify the object to which this instance of the
        Image_Display_Geometry class applies, and must be used if there
        is more than one instance of Image_Display_Geometry in the
        label. The appropriate value for local_reference_type is
        image_display_to_object. The Object_Orientation_North_East class
        is typically used for instruments for which the entire field of
        view is a portion of the target surface (e.g., instruments on
        Mars orbital spacecraft); otherwise use
        Object_Orientation_RA_Dec (e.g., flyby missions, missions with
        orbit radii much larger than the target radius such as Voyager
        or Cassini). At least one of these must be used. The two
        *_Identification classes used here are Central_Body (e.g.,
        Saturn if you are using Planetocentric or planetographic
        coordinates in the Saturn system) and Target when the described
        object in the FoV is not the Central_Body. For example giving
        the orientation of the pole of Enceladus in Saturn
        Planetocentric coordinates, Central_Body = Saturn, Target =
        Enceladus. Bottom line: put in enough information so someone
        else can figure out the orientation of the field of view. We
        also offer an option to provide the pointing information as a
        quaternion. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="pds:Local_Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Display_Direction" type="geom:Display_Direction" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Central_Body_Identification" type="geom:Central_Body_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="Object_Orientation_North_East" type="geom:Object_Orientation_North_East"> </xs:element>
        <xs:element name="Object_Orientation_RA_Dec" type="geom:Object_Orientation_RA_Dec"> </xs:element>
        <xs:element name="Object_Orientation_Clock_Angles" type="geom:Object_Orientation_Clock_Angles"> </xs:element>
      </xs:choice>
      <xs:element name="Quaternion_Plus_To_From" type="geom:Quaternion_Plus_To_From" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Interpolation">
    <xs:annotation>
      <xs:documentation>The Interpolation class defines how the camera
        model was interpolated from the calibration models.
        Interpolation is used to create models in a variable space
        (e.g., focus, zoom) between points at which calibration was
        performed. If more than one dimension of variables were
        interpolated, multiple Interpolation objects can exist, with
        interpolation_sequence defining the order. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="interpolation_algorithm" type="geom:interpolation_algorithm" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="interpolation_variable" type="geom:interpolation_variable" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="interpolation_value" type="geom:interpolation_value" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="interpolation_sequence" type="geom:interpolation_sequence" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="List_Index_Angle">
    <xs:annotation>
      <xs:documentation>Used when the list values are angles.
        </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:List_Index_Base">
        <xs:sequence>
          <xs:element name="index_value_angle" type="geom:index_value_angle" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="List_Index_Base">
    <xs:annotation>
      <xs:documentation>The List_Index class is an abstract class
        designed to enable the use of indexed lists. The minimum
        requirement is at least one of sequence number, name or "id",
        plus the set of values themselves. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="3">
        <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
        <xs:element name="index_name" type="geom:index_name"> </xs:element>
        <xs:element name="index_id" type="geom:index_id"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="List_Index_Length">
    <xs:annotation>
      <xs:documentation>Used when the list values are
        lengths.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:List_Index_Base">
        <xs:sequence>
          <xs:element name="index_value_length" type="geom:index_value_length" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="List_Index_No_Units">
    <xs:annotation>
      <xs:documentation>Used when the list values have no
        units.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:List_Index_Base">
        <xs:sequence>
          <xs:element name="index_value_number" type="geom:index_value_number" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="List_Index_Temperature">
    <xs:annotation>
      <xs:documentation>Used when the list values are temperatures. They
        may also have accompanying temperature counts using
        index_value_number. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:List_Index_Base">
        <xs:sequence>
          <xs:element name="index_value_temperature" type="geom:index_value_temperature" minOccurs="0" maxOccurs="unbounded"> </xs:element>
          <xs:element name="index_value_number" type="geom:index_value_number" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="List_Index_Text">
    <xs:annotation>
      <xs:documentation>Used when the list values are
        strings.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:List_Index_Base">
        <xs:sequence>
          <xs:element name="index_value_string" type="geom:index_value_string" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Motion_Counter">
    <xs:annotation>
      <xs:documentation>The Motion_Counter class provides a set of
        integers that describe a (potentially) unique location (position
        / orientation) for a rover or other movable object. Each time an
        event occurs that results in a movement, a new motion counter
        value is created. This includes intentional motion due to drive
        commands, as well as potential motion due to other articulating
        devices, such as arms or antennae. This motion counter (or part
        of it) is used as a reference to define instances of coordinate
        systems that can move such as SITE or ROVER frames. The motion
        counter is defined in a mission-specific manner. Although the
        original intent was to have incrementing indices (e.g., MER),
        the motion counter could also contain any integer values that
        conform to the above definition, such as time or spacecraft
        clock values. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Motion_Counter_Index" type="geom:Motion_Counter_Index" minOccurs="1" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Motion_Counter_Index">
    <xs:annotation>
      <xs:documentation>The Motion_Counter_Index class identifies and
        populates one element of a Motion_Counter list. The class should
        be repeated for each element of the list. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:List_Index_No_Units">
        <xs:sequence>
          <xs:choice minOccurs="1" maxOccurs="3">
            <xs:element name="index_sequence_number" type="geom:index_sequence_number"> </xs:element>
            <xs:element name="index_name" type="geom:index_name"> </xs:element>
            <xs:element name="index_id" type="geom:index_id"> </xs:element>
          </xs:choice>
          <xs:element name="index_value_number" type="geom:index_value_number" minOccurs="0" maxOccurs="unbounded"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Object_Orientation_Clock_Angles">
    <xs:annotation>
      <xs:documentation>The Object_Orientation_Clock_Angles class
        provides several clock angles which can be used to describe the
        orientation of the field of view with respect to various
        external references such as Celestial or Equatorial North.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="celestial_north_clock_angle" nillable="true" type="geom:celestial_north_clock_angle"> </xs:element>
        <xs:element name="celestial_east_clock_angle" type="geom:celestial_east_clock_angle"> </xs:element>
        <xs:element name="ecliptic_north_clock_angle" nillable="true" type="geom:ecliptic_north_clock_angle"> </xs:element>
        <xs:element name="ecliptic_east_clock_angle" type="geom:ecliptic_east_clock_angle"> </xs:element>
        <xs:element name="central_body_north_pole_clock_angle" type="geom:central_body_north_pole_clock_angle"> </xs:element>
        <xs:element name="central_body_positive_pole_clock_angle" type="geom:central_body_positive_pole_clock_angle"> </xs:element>
        <xs:element name="target_north_pole_clock_angle" type="geom:target_north_pole_clock_angle"> </xs:element>
        <xs:element name="target_positive_pole_clock_angle" type="geom:target_positive_pole_clock_angle"> </xs:element>
        <xs:element name="sun_direction_clock_angle" type="geom:sun_direction_clock_angle"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Object_Orientation_North_East">
    <xs:annotation>
      <xs:documentation>The Object_Orientation_North_East class provides
        the parameters needed to describe the orientation of an external
        coordinate system relative to the image coordinate frame as
        described by the Display_Direction class. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="north_azimuth" type="geom:north_azimuth" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="east_azimuth" type="geom:east_azimuth" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Reference_Frame_Identification" type="geom:Reference_Frame_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Object_Orientation_RA_Dec">
    <xs:annotation>
      <xs:documentation>The Object_Orientation_RA_Dec class provides the
        parameters needed to describe the orientation of the celestial
        reference frame relative to the image coordinate frame as
        described by the Display_Direction class. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Reference_Pixel" type="geom:Reference_Pixel" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="reference_pixel_location" type="geom:reference_pixel_location" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="right_ascension_hour_angle" type="geom:right_ascension_hour_angle"> </xs:element>
        <xs:element name="right_ascension_angle" type="geom:right_ascension_angle"> </xs:element>
      </xs:choice>
      <xs:element name="declination_angle" type="geom:declination_angle" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:choice minOccurs="1" maxOccurs="2">
        <xs:element name="celestial_north_clock_angle" nillable="true" type="geom:celestial_north_clock_angle"> </xs:element>
        <xs:element name="ecliptic_north_clock_angle" nillable="true" type="geom:ecliptic_north_clock_angle"> </xs:element>
      </xs:choice>
      <xs:element name="Reference_Frame_Identification" type="geom:Reference_Frame_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:reference_pixel_location = ('Center', 'Lower Left Corner', 'Lower Right Corner', 'Upper Left Corner', 'Upper Right Corner')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Observer_Identification">
    <xs:annotation>
      <xs:documentation>Within the Geometry dictionary context, an
        "Observer" is the body on the "from" end of a vector, or other
        translation through space. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Body_Identification_Base">
        <xs:sequence>
          <xs:element name="body_spice_name" type="geom:body_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Orbiter_Identification">
    <xs:annotation>
      <xs:documentation>The Orbiter_Identification class is a container
        of classes used to establish global identifications for the
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Central_Body_Identification" type="geom:Central_Body_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PSPH_Model">
    <xs:annotation>
      <xs:documentation> A new camera model designed to perform better
        fisheye-image rectification prior to 1D stereo correlation. The
        primary innovation is the use of a unit projection sphere rather
        than an image plane. For epipolar alignment between stereo
        cameras the rows (for a left/right pair) or the columns (for an
        up/down pair) of both must lie along the same plane. Thus we use
        a pair of planes to define the rows and columns. Each plane will
        rotate around a static dedicated axis passing through the sphere
        center. Pixels will be located where the planes intersect with
        each other and the unit sphere. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Vector_Center" type="geom:Vector_Center" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Axis_X" type="geom:Vector_Axis_X" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Axis_Y" type="geom:Vector_Axis_Y" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Normal_X" type="geom:Vector_Normal_X" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Vector_Normal_Y" type="geom:Vector_Normal_Y" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="psph_model_scale_x" type="geom:psph_model_scale_x" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="psph_model_scale_y" type="geom:psph_model_scale_y" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Pixel_Dimensions">
    <xs:annotation>
      <xs:documentation>The Pixel_Dimensions class contains information
        regarding pixel size. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="pixel_field_of_view_method" type="geom:pixel_field_of_view_method" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="horizontal_pixel_field_of_view" type="geom:horizontal_pixel_field_of_view" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="vertical_pixel_field_of_view" type="geom:vertical_pixel_field_of_view" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Pixel_Size_Projected" type="geom:Pixel_Size_Projected" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:pixel_field_of_view_method = ('Average', 'Central Pixel', 'Constant')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Pixel_Intercept">
    <xs:annotation>
      <xs:documentation>The Pixel_Intercept class provides the latitude
        and longitude on the surface of the target for the projection of
        the specified pixel. The pixel is specified using either
        reference_pixel_location or Reference_Pixel. Although each of
        these is optional, one must be used. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="reference_pixel_location" type="geom:reference_pixel_location" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Reference_Pixel" type="geom:Reference_Pixel" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="pixel_latitude" type="geom:pixel_latitude" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="pixel_longitude" type="geom:pixel_longitude" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:reference_pixel_location = ('Center', 'Lower Left Corner', 'Lower Right Corner', 'Upper Left Corner', 'Upper Right Corner')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Pixel_Size_Projected">
    <xs:annotation>
      <xs:documentation>The Pixel_Size_Projected class gives the size,
        in units of length (e.g., kilometers) of the projection of a
        pixel onto the surface of the target which is specified in the
        parent Geometry_Orbiter class. The reference_location attribute
        is used to identify the specific point on the target.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="reference_location" type="geom:reference_location"> </xs:element>
        <xs:element name="distance" type="geom:distance"> </xs:element>
      </xs:choice>
      <xs:element name="horizontal_pixel_footprint" type="geom:horizontal_pixel_footprint" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="vertical_pixel_footprint" type="geom:vertical_pixel_footprint" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:reference_location = ('Boresight Intercept Point', 'Constant', 'Subspacecraft Point', 'Target Center')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Polynomial_Coefficients_1">
    <xs:annotation>
      <xs:documentation>The Polynomial_Coefficients_1 class provides a
        one polynomial coefficient. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="c0" type="geom:c0" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Polynomial_Coefficients_2">
    <xs:annotation>
      <xs:documentation>The Polynomial_Coefficients_2 class provides two
        polynomial coefficients. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="c0" type="geom:c0" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="c1" type="geom:c1" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Polynomial_Coefficients_3">
    <xs:annotation>
      <xs:documentation>The Polynomial_Coefficients_3 class provides
        three polynomial coefficients. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="c0" type="geom:c0" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="c1" type="geom:c1" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="c2" type="geom:c2" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Quaternion_Base">
    <xs:annotation>
      <xs:documentation>The Quaternion_Base class defines a quaternion
        that represents rotation between two right-handed reference
        frames. In this dictionary, quaternions are always constructed
        so that the application of the quaternion describes the rotation
        of one frame to a second frame. The two frames and the direction
        of rotation must be identified unambiguously in the enclosing
        classes. Quaternions are expressed as a set of four numbers in
        the order (qcos, qsin1, qsin2, qsin3), where qcos = cos(theta/2)
        and qsin(n) = sin(theta/2)*a(n). Theta is the angle of rotation
        and a is the unit vector (x,y,z) around which the rotation
        occurs. A document providing the full mathematical basis for
        this construction, along with examples, and a summary of common
        pitfalls, is in preparation. The current version can be obtained
        by contacting the PDS Engineering Node. In application you need
        to know the four elements of the quaternion, the two end point
        frames, and the direction of the rotation. This dictionary
        provides two extensions to this Base class. In the
        Quaternion_Plus_Direction class we require the direction of
        rotation. This class can only be used if the two end point
        frames are identified in the enclosing class. This is generally
        the case in the Lander section. The Quaternion_Plus_To_From
        class requires the two frames be identified explicitly with one
        designated as the "from frame" and the other as the "to frame".
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="qcos" type="geom:qcos" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="qsin1" type="geom:qsin1" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="qsin2" type="geom:qsin2" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="qsin3" type="geom:qsin3" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Quaternion_Model_Transform">
    <xs:annotation>
      <xs:documentation>The Quaternion_Model_Transform class specifies,
        along with Vector_Model_Transform class, the transform used for
        the camera model in an image. Camera models created by the
        calibration process have associated with them a pose, comprised
        of the position (offset) and orientation (quaternion) of the
        camera at the time it was calibrated. The model is transformed
        ("pointed") for a specific image by computing, generally using
        articulation device kinematics, a final pose for the image. The
        camera model is then translated and rotated from the calibration
        to final pose. This class specifies the quaternion portion of
        the final pose. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Quaternion_Base">
        <xs:sequence>
          <xs:element name="qcos" type="geom:qcos" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="qsin1" type="geom:qsin1" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="qsin2" type="geom:qsin2" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="qsin3" type="geom:qsin3" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Quaternion_Plus_Direction">
    <xs:annotation>
      <xs:documentation>Quaternion_Plus_Direction provides the four
        elements of a quaternion and its direction of rotation. The two
        end point frames must be identified in the enclosing class. See
        the definition of Quaternion_Base for more details on the
        quaternion classes in this dictionary. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Quaternion_Base">
        <xs:sequence>
          <xs:element name="rotation_direction" type="geom:rotation_direction" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:rotation_direction = ('Forward', 'From Base', 'Present to Reference', 'Reference to Present', 'Reverse', 'Toward Base')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Quaternion_Plus_To_From">
    <xs:annotation>
      <xs:documentation>Quaternion_Plus_To_From provides the four
        elements of a quaternion, plus attributes which identify the
        initial (Rotate_From) and final (Rotate_To) frames of the
        rotation. See the defintion of Quaternion_Base for more details
        on the quaternion classes in this dictionary. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Quaternion_Base">
        <xs:sequence>
          <xs:element name="Rotate_From" type="geom:Rotate_From" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Rotate_To" type="geom:Rotate_To" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Radial_Terms">
    <xs:annotation>
      <xs:documentation>Radial_Terms contains the coefficients of a
        polynomial function used to describe the radial distortion of
        the camera. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Polynomial_Coefficients_3">
        <xs:sequence>
          <xs:element name="c0" type="geom:c0" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="c1" type="geom:c1" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="c2" type="geom:c2" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Reference_Frame_Identification">
    <xs:annotation>
      <xs:documentation>The Reference_Frame_Identification class is a
        base class for identifying reference frames. These are frames in
        the NAIF sense, i.e., three orthogonal axes with a specified
        orientation, but without a fixed origin. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Frame_Identification_Base">
        <xs:sequence>
          <xs:element name="frame_spice_name" type="geom:frame_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Reference_Pixel">
    <xs:annotation>
      <xs:documentation>The Reference_Pixel class provides the pixel
        coordinates, line and sample, to which values in the containing
        class apply. Integer values indicate the center of the pixel.
        Sub-pixel values are permitted. For pixel_sample, the leading
        edge (left edge for sample increasing to the right) has a value
        0.5 less than the integer value at the center, and the value for
        the trailing edge is the center integer value + 0.5. For
        pixel_line, the leading and trailing edges (top and bottom
        respectively for line increasing downward) again are -0.5 and
        +0.5 with respect to the center integer value.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="vertical_coordinate_pixel" type="geom:vertical_coordinate_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="horizontal_coordinate_pixel" type="geom:horizontal_coordinate_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Rotate_From">
    <xs:annotation>
      <xs:documentation>A quaternion rotates one reference frame to
        another reference frame. The Rotate_From class identifies the
        initial frame. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Frame_Identification_Base">
        <xs:sequence>
          <xs:element name="frame_spice_name" type="geom:frame_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Rotate_To">
    <xs:annotation>
      <xs:documentation>A quaternion rotates a one reference frame to
        another reference frame. The Rotate_To class identifies the
        destination frame. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Frame_Identification_Base">
        <xs:sequence>
          <xs:element name="frame_spice_name" type="geom:frame_spice_name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="name" type="pds:name" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
          <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SPICE_Kernel_Files">
    <xs:annotation>
      <xs:documentation>The SPICE_Kernel_Files class provides references
        to the SPICE files used when calculating geometric values.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SPICE_Kernel_Identification" type="geom:SPICE_Kernel_Identification" minOccurs="1" maxOccurs="unbounded"> </xs:element>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SPICE_Kernel_Identification">
    <xs:annotation>
      <xs:documentation>The SPICE_Kernel_Identification class optionally
        includes the SPICE kernel type and provides two alternatives for
        identifying the product: LIDVID using Internal_Reference, and
        the file name of the kernel file. Although optional, LIDVID
        should be given if one is available. The optional
        kernel_provenance attribute indicates whether the kernel is a
        predict or reconstructed kernel, or some combination of the two,
        or if it is a kernel type for which such distinctions do not
        apply. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="kernel_type" type="pds:kernel_type" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="spice_kernel_file_name" type="geom:spice_kernel_file_name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="kernel_provenance" type="geom:kernel_provenance" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element ref="pds:Internal_Reference" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="pds:kernel_type = ('CK', 'DBK', 'DSK', 'EK', 'FK', 'IK', 'LSK', 'MK', 'PCK', 'SCLK', 'SPK')"/> -->
    <!-- <xs:assert test="geom:kernel_provenance = ('Mixed', 'Predicted', 'Provenance Not Applicable', 'Reconstructed')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Surface_Geometry">
    <xs:annotation>
      <xs:documentation>The Surface_Geometry class is a container for
        surface geometry classes. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Surface_Geometry_Specific" type="geom:Surface_Geometry_Specific" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Surface_Geometry_Min_Max" type="geom:Surface_Geometry_Min_Max" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Surface_Geometry_Start_Stop" type="geom:Surface_Geometry_Start_Stop" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Surface_Geometry_Min_Max">
    <xs:annotation>
      <xs:documentation>The Surface_Geometry_Min_Max class contains
        attributes providing surface geometry parameters as
        minimum/maximum pairs. For any given parameter if one of minimum
        or maximum is given, both must be given. The min-max pairs for
        each parameter provide the range of that parameter in the
        observation for the target specified using the
        Geometry_Target_Identification class in the
        Orbiter_Identification class under the parent Geometry_Orbiter
        class. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="minimum_latitude" type="geom:minimum_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_latitude" type="geom:maximum_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_longitude" type="geom:minimum_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_longitude" type="geom:maximum_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_subsolar_azimuth" type="geom:minimum_subsolar_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_subsolar_azimuth" type="geom:maximum_subsolar_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_subsolar_latitude" type="geom:minimum_subsolar_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_subsolar_latitude" type="geom:maximum_subsolar_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_subsolar_longitude" type="geom:minimum_subsolar_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_subsolar_longitude" type="geom:maximum_subsolar_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_subspacecraft_azimuth" type="geom:minimum_subspacecraft_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_subspacecraft_azimuth" type="geom:maximum_subspacecraft_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_subspacecraft_latitude" type="geom:minimum_subspacecraft_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_subspacecraft_latitude" type="geom:maximum_subspacecraft_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="minimum_subspacecraft_longitude" type="geom:minimum_subspacecraft_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="maximum_subspacecraft_longitude" type="geom:maximum_subspacecraft_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Surface_Geometry_Specific">
    <xs:annotation>
      <xs:documentation>The Surface_Geometry_Specific class contains
        classes and attributes for various points on the surface of the
        target designated in the enclosing Geometry_Orbiter.
        </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Pixel_Intercept" type="geom:Pixel_Intercept" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Footprint_Vertices" type="geom:Footprint_Vertices" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subsolar_azimuth" type="geom:subsolar_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subsolar_latitude" type="geom:subsolar_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subsolar_longitude" type="geom:subsolar_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subspacecraft_azimuth" type="geom:subspacecraft_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subspacecraft_latitude" type="geom:subspacecraft_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="subspacecraft_longitude" type="geom:subspacecraft_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Surface_Geometry_Start_Stop">
    <xs:annotation>
      <xs:documentation>The Surface_Geometry_Start_Stop class contains
        attributes providing surface geometry parameters given as pairs
        corresponding to the beginning and end of the observation. For a
        parameter, if either the start or stop parameter is given, both
        must be provided. If any values from this class are included in
        the label, the parameters geometry_start_time_utc and
        geometry_stop_time_utc must be given in the enclosing
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="lat_long_method" type="geom:lat_long_method" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_latitude" type="geom:start_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_latitude" type="geom:stop_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_longitude" type="geom:start_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_longitude" type="geom:stop_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_subsolar_azimuth" type="geom:start_subsolar_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_subsolar_azimuth" type="geom:stop_subsolar_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_subsolar_latitude" type="geom:start_subsolar_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_subsolar_latitude" type="geom:stop_subsolar_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_subsolar_longitude" type="geom:start_subsolar_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_subsolar_longitude" type="geom:stop_subsolar_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_subspacecraft_azimuth" type="geom:start_subspacecraft_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_subspacecraft_azimuth" type="geom:stop_subspacecraft_azimuth" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_subspacecraft_latitude" type="geom:start_subspacecraft_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_subspacecraft_latitude" type="geom:stop_subspacecraft_latitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="start_subspacecraft_longitude" type="geom:start_subspacecraft_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="stop_subspacecraft_longitude" type="geom:stop_subspacecraft_longitude" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="geom:lat_long_method = ('Center', 'Mean', 'Median')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Vector_Axis">
    <xs:annotation>
      <xs:documentation>The Vector_Axis is a unit vector that describes
        the axis of the camera, defined as the normal to the image
        plane. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Axis_X">
    <xs:annotation>
      <xs:documentation> Unit column-plane rotation axis, passing
        through the sphere center, typically vertical and pointing down
        so that positive rotations (by the right-hand rule) will rotate
        the forward half of the plane in the (rightward) direction of
        increasing column (as projected on the forward hemisphere).
        </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Axis_Y">
    <xs:annotation>
      <xs:documentation> Unit row-plane rotation axis, passing through
        the sphere center, typically horizontal and pointing left so
        that positive rotations (by the right-hand rule) will rotate the
        forward half of the plane in the (downward) direction of
        increasing row (as projected on the forward hemisphere).
        </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Acceleration_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Acceleration_Base is a
        three dimensional, rectangular coordinates vector. Uses units of
        linear acceleration. The included attributes are not sufficient
        to identify the endpoints of the vector. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x_acceleration" type="geom:x_acceleration" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="y_acceleration" type="geom:y_acceleration" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="z_acceleration" type="geom:z_acceleration" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Acceleration_Extended_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Acceleration_Extended_Base
        is a three dimensional, rectangular coordinates vector. Uses
        units of linear acceleration. The included attributes are not
        sufficient to identify the endpoints of the vector. While the
        class Coordinate_System_Identification is optional, it must be
        used here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Cartesian_Acceleration_Base">
        <xs:sequence>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Acceleration_Generic">
    <xs:annotation>
      <xs:documentation>Vector_Cartesian_Acceleration_Generic is a three
        dimensional, rectangular coordinates vector. Uses units of
        linear acceleration. Includes attributes to identify the
        endpoints of the vector. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Cartesian_Acceleration_Extended_Base">
        <xs:sequence>
          <xs:element name="Observer_Identification" type="geom:Observer_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_No_Units">
    <xs:annotation>
      <xs:documentation>This is a generic vector in Cartesian space. The
        "x", "y", and "z" component have no units. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x" type="geom:x" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="y" type="geom:y" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="z" type="geom:z" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Pixel">
    <xs:annotation>
      <xs:documentation>This a Cartesian pixel vector generally used in
        camera models. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x_pixel" type="geom:x_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="y_pixel" type="geom:y_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="z_pixel" type="geom:z_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_Base is a three
        dimensional, rectangular coordinates vector. Uses units of
        length. The included attributes are not sufficient to identify
        the endpoints of the vector. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Central_Body_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_Central_Body_To_Spacecraft is a
        linear, rectangular coordinates vector from the center of mass
        of the central body (e.g., planet) to the spacecraft. While the
        class Coordinate_System_Identification is optional, it must be
        used here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Central_Body_To_Target">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_Central_Body_To_Target is a linear,
        rectangular coordinates vector from the center of mass of the
        central body (e.g., planet) to the target specified in the
        parent Geometry_Orbiter class. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Earth_To_Central_Body">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_Earth_To_Central_Body is a linear,
        rectangular coordinates vector from the Earth to the central
        body (e.g., planet). While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Earth_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_Earth_To_Spacecraft is a linear,
        rectangular coordinates vector from the Earth to the spacecraft.
        While the class Coordinate_System_Identification is optional, it
        must be used here if the coordinate system has not been
        specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Earth_To_Target">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_Earth_To_Target is
        a linear, rectangular coordinates vector from the Earth to the
        target specified in the parent Geometry_Orbiter class. While the
        class Coordinate_System_Identification is optional, it must be
        used here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Extended_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_Extended_Base is a
        three dimensional, rectangular coordinates vector. Uses units of
        length. The included attributes are not sufficient to identify
        the endpoints of the vector. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Cartesian_Position_Base">
        <xs:sequence>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Generic">
    <xs:annotation>
      <xs:documentation>Vector_Cartesian_Position_Generic is a three
        dimensional, rectangular coordinates vector. Uses units of
        length. Includes attributes to identify the endpoints of the
        vector. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="Observer_Identification" type="geom:Observer_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_SSB_To_Central_Body">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_SSB_To_Central_Body is a linear,
        rectangular coordinates vector from the Solar System Barycenter
        to the central body (e.g., planet). While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_SSB_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_SSB_To_Spacecraft
        is a linear, rectangular coordinates vector from the Solar
        System Barycenter to the spacecraft. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_SSB_To_Target">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_SSB_To_Target is a
        linear, rectangular coordinates vector from the Solar System
        Barycenter to the target specified in the parent
        Geometry_Orbiter class. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Spacecraft_To_Target">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_Spacecraft_To_Target is a linear,
        rectangular coordinates vector from the spacecraft to the target
        specified in the parent Geometry_Orbiter class. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Sun_To_Central_Body">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Position_Sun_To_Central_Body is a linear,
        rectangular coordinates vector from the Sun to the central body
        (e.g., planet). While the class Coordinate_System_Identification
        is optional, it must be used here if the coordinate system has
        not been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Sun_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_Sun_To_Spacecraft
        is a linear, rectangular coordinates vector from the Sun to the
        spacecraft. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Position_Sun_To_Target">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Position_Sun_To_Target is a
        linear, rectangular coordinates vector from the Sun to the
        target specified in the parent Geometry_Orbiter class. While the
        class Coordinate_System_Identification is optional, it must be
        used here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Unit">
    <xs:annotation>
      <xs:documentation>This is a generic unit vector in Cartesian
        space. The "x", "y", and "z" component have no units and are
        restricted to values between -1.0 and 1.0 inclusive. Further the
        length of the vector square root of the (sum of the squares of
        the components) must be 1.0. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Velocity_Base is a three
        dimensional, rectangular coordinates vector. Uses units of
        linear velocity. The included attributes are not sufficient to
        identify the endpoints of the vector. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Extended_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Cartesian_Velocity_Extended_Base is a
        three dimensional, rectangular coordinates vector. Uses units of
        linear velocity. The included attributes are not sufficient to
        identify the endpoints of the vector. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Cartesian_Velocity_Base">
        <xs:sequence>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Generic">
    <xs:annotation>
      <xs:documentation>Vector_Cartesian_Velocity_Generic is a three
        dimensional, rectangular coordinates vector. Uses units of
        linear velocity. Includes attributes to identify the endpoints
        of the vector. While the class Coordinate_System_Identification
        is optional, it must be used here if the coordinate system has
        not been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="Observer_Identification" type="geom:Observer_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body is
        a velocity vector in rectangular coordinates that gives the
        velocity of the spacecraft with respect to the central body
        (e.g., planet). While the class Coordinate_System_Identification
        is optional, it must be used here if the coordinate system has
        not been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth is a
        velocity vector in rectangular coordinates that gives the
        velocity of the spacecraft with respect to Earth. While the
        class Coordinate_System_Identification is optional, it must be
        used here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB is a
        velocity vector in rectangular coordinates that gives the
        velocity of the spacecraft with respect to the Solar System
        Barycenter. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun">
    <xs:annotation>
      <xs:documentation>
        Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun is a
        velocity vector in rectangular coordinates that gives the
        velocity of the spacecraft with respect to the center of the
        Sun. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target is a
        velocity vector in rectangular coordinates that gives the
        velocity of the spacecraft with respect to the target specified
        in the parent Geometry_Orbiter class. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Target_Relative_To_Central_Body">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Target_Relative_To_Central_Body is a
        velocity vector in rectangular coordinates that gives the
        velocity of the designated target with respect to the central
        body (e.g., planet). While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Target_Relative_To_Earth">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Target_Relative_To_Earth is a velocity
        vector in rectangular coordinates that gives the velocity of the
        designated target with respect to Earth. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Target_Relative_To_SSB">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Target_Relative_To_SSB is a velocity
        vector in rectangular coordinates that gives the velocity of the
        designated target with respect to the Solar System Barycenter.
        While the class Coordinate_System_Identification is optional, it
        must be used here if the coordinate system has not been
        specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The
        Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft is a
        velocity vector in rectangular coordinates that gives the
        velocity of the designated target with respect to the
        spacecraft. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Cartesian_Velocity_Target_Relative_To_Sun">
    <xs:annotation>
      <xs:documentation>
        Vector_Cartesian_Velocity_Target_Relative_To_Sun is a velocity
        vector in rectangular coordinates that gives the velocity of the
        designated target with respect to the center of the sun. While
        the class Coordinate_System_Identification is optional, it must
        be used here if the coordinate system has not been specified in
        the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="x_velocity" type="geom:x_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_velocity" type="geom:y_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_velocity" type="geom:z_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Center">
    <xs:annotation>
      <xs:documentation>The Vector_Center describes the location of the
        entrance pupil of a camera. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Device_Gravity">
    <xs:annotation>
      <xs:documentation>The Vector_Device_Gravity class is a unit vector
        that specifies the direction of an external force acting on the
        articulation device, in the spacecraft's coordinate system, at
        the time the pose was computed. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Device_Gravity_Magnitude">
    <xs:annotation>
      <xs:documentation>The Vector_Device_Gravity_Magnitude class is a
        vector (with magnitude) that specifies the direction of an
        external force acting on the articulation device, in the
        spacecraft's coordinate system, at the time the pose was
        computed. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Acceleration_Base">
        <xs:sequence>
          <xs:element name="x_acceleration" type="geom:x_acceleration" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_acceleration" type="geom:y_acceleration" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_acceleration" type="geom:z_acceleration" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Horizontal">
    <xs:annotation>
      <xs:documentation>The Vector_Horizonal is a composite vector
        encoding three quantities: H' (a vector in the image plane
        perpendicular to the vertical columns), Hs (the distance between
        the lens center and image plane, measured in horizontal pixels),
        and Hc (the horizontal image coordinate directly under C when
        moving parallel to A). H' is often thought of as describing the
        orientation of rows in space, but is actually perpendicular to
        the columns. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Pixel">
        <xs:sequence>
          <xs:element name="x_pixel" type="geom:x_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_pixel" type="geom:y_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_pixel" type="geom:z_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Model_Transform">
    <xs:annotation>
      <xs:documentation>The Vector_Model_Transform class specifies,
        along with the Quaternion_Model_Transform class, the transform
        used for the camera model in this image. Camera models created
        by the calibration process have associated with them a pose,
        comprised of the position (offset) and orientation (quaternion)
        of the camera at the time it was calibrated. The model is
        transformed ("pointed") for a specific image by computing,
        generally using articulation device kinematics, a final pose for
        the image. The camera model is then translated and rotated from
        the calibration to final pose. This class specifies the offset
        portion of the final pose. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_No_Units">
        <xs:sequence>
          <xs:element name="x" type="geom:x" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y" type="geom:y" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z" type="geom:z" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Normal_X">
    <xs:annotation>
      <xs:documentation> Unit normal vector to the column plane when x
        equals zero, pointing in the same direction as the cross product
        of axis x with an outward-pointing vector that also lies in the
        plane. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Normal_Y">
    <xs:annotation>
      <xs:documentation> Unit normal vector to the row plane when y
        equals zero, pointing in the same direction as the cross product
        of axis x with an outward-pointing vector that also lies in the
        plane. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Optical">
    <xs:annotation>
      <xs:documentation>The Vector_Optical is a unit vector that
        describes the axis of symmetry for radial distortion in the
        camera. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Origin_Offset">
    <xs:annotation>
      <xs:documentation>The Vector_Origin_Offset class contains
        attributes that specify the offset from the reference coordinate
        system's origin to the origin of the coordinate system. It is
        the location of the current system's origin as measured in the
        reference system. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Position_Base">
        <xs:sequence>
          <xs:element name="x_position" type="geom:x_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_position" type="geom:y_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_position" type="geom:z_position" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Position_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Planetocentric_Position_Base is a
        three dimensional spherical vector (radius, longitude, latitude)
        with the angular coordinates defined to be consistent with the
        Planetocentric coordinate system. Uses linear units for the
        radius dimension, and angular units for the other two
        dimensions. The included attributes are not sufficient to
        identify the endpoints of the vector. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="radius_position" type="geom:radius_position" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="longitude_position" type="geom:longitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="latitude_position" type="geom:latitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Position_Central_Body_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The
        Vector_Planetocentric_Position_Central_Body_To_Spacecraft is a
        spherical position vector in Planetocentric coordinates. It
        extends from the center of mass of the central body (e.g.,
        planet) to the spacecraft. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Planetocentric_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="radius_position" type="geom:radius_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="longitude_position" type="geom:longitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="latitude_position" type="geom:latitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Position_Central_Body_To_Target">
    <xs:annotation>
      <xs:documentation>The
        Vector_Planetocentric_Position_Central_Body_To_Target is a
        spherical position vector in Planetocentric coordinates. It
        extends from the center of mass of the central body (e.g.,
        planet) to the target specified in the parent Geometry_Orbiter
        class. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Planetocentric_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="radius_position" type="geom:radius_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="longitude_position" type="geom:longitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="latitude_position" type="geom:latitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Position_Extended_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Planetocentric_Position_Extended_Base
        is a three dimensional spherical vector (radius, longitude,
        latitude) with the angular coordinates defined to be consistent
        with the Planetocentric coordinate system. Uses linear units for
        the radius dimension, and angular units for the other two
        dimensions. The included attributes are not sufficient to
        identify the endpoints of the vector. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Planetocentric_Position_Base">
        <xs:sequence>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Position_Generic">
    <xs:annotation>
      <xs:documentation>The Vector_Planetocentric_Position_Generic is a
        three dimensional spherical vector (radius, longitude, latitude)
        with the angular coordinates defined to be consistent with the
        Planetocentric coordinate system. Uses linear units for the
        radius dimension, and angular units for the other two
        dimensions. Includes attributes to identify the endpoints of the
        vector. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Planetocentric_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="Observer_Identification" type="geom:Observer_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Position_Spacecraft_To_Target">
    <xs:annotation>
      <xs:documentation>The
        Vector_Planetocentric_Position_Spacecraft_To_Target is a
        spherical position vector in Planetocentric coordinates. It
        extends from the spacecraft to the target specified in the
        parent Geometry_Orbiter class. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Planetocentric_Position_Extended_Base">
        <xs:sequence>
          <xs:element name="radius_position" type="geom:radius_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="longitude_position" type="geom:longitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="latitude_position" type="geom:latitude_position" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Velocity_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Planetocentric_Velocity_Base is a
        three dimensional spherical vector (radius, longitude, latitude)
        with the angular coordinates defined to be consistent with the
        Planetocentric coordinate system. Uses linear velocity units for
        the radius dimension, and angular velocity units for the other
        two dimensions. The included attributes are not sufficient to
        identify the endpoints of the vector. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="radial_velocity" type="geom:radial_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="longitude_velocity" type="geom:longitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="latitude_velocity" type="geom:latitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Velocity_Extended_Base">
    <xs:annotation>
      <xs:documentation>The Vector_Planetocentric_Velocity_Extended_Base
        is a three dimensional spherical vector (radius, longitude,
        latitude) with the angular coordinates defined to be consistent
        with the Planetocentric coordinate system. Uses linear velocity
        units for the radius dimension, and angular velocity units for
        the other two dimensions. The included attributes are not
        sufficient to identify the endpoints of the vector. While the
        class Coordinate_System_Identification is optional, it must be
        used here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Planetocentric_Velocity_Base">
        <xs:sequence>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Velocity_Generic">
    <xs:annotation>
      <xs:documentation>The Vector_Planetocentric_Velocity_Generic is a
        three dimensional spherical vector (radius, longitude, latitude)
        with the angular coordinates defined to be consistent with the
        Planetocentric coordinate system. Uses linear velocity units for
        the radius dimension, and angular velocity units for the other
        two dimensions. Includes attributes to identify the endpoints of
        the vector. While the class Coordinate_System_Identification is
        optional, it must be used here if the coordinate system has not
        been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="geom:Vector_Planetocentric_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="Observer_Identification" type="geom:Observer_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Geometry_Target_Identification" type="geom:Geometry_Target_Identification" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target">
    <xs:annotation>
      <xs:documentation>The
        Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target is
        a spherical velocity vector in Planetocentric coordinates that
        gives the velocity of the spacecraft with respect to the
        designated target. While the class
        Coordinate_System_Identification is optional, it must be used
        here if the coordinate system has not been specified in the
        enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Planetocentric_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="radial_velocity" type="geom:radial_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="longitude_velocity" type="geom:longitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="latitude_velocity" type="geom:latitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body">
    <xs:annotation>
      <xs:documentation>The
        Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body
        is a spherical velocity vector in Planetocentric coordinates
        that gives the velocity of the target with respect to the
        central body. While the class Coordinate_System_Identification
        is optional, it must be used here if the coordinate system has
        not been specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Planetocentric_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="radial_velocity" type="geom:radial_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="longitude_velocity" type="geom:longitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="latitude_velocity" type="geom:latitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft">
    <xs:annotation>
      <xs:documentation>The
        Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft is
        a spherical velocity vector in Planetocentric coordinates that
        gives the velocity of the target with respect to the spacecraft.
        While the class Coordinate_System_Identification is optional, it
        must be used here if the coordinate system has not been
        specified in the enclosing class. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Planetocentric_Velocity_Extended_Base">
        <xs:sequence>
          <xs:element name="radial_velocity" type="geom:radial_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="longitude_velocity" type="geom:longitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="latitude_velocity" type="geom:latitude_velocity" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="light_time_correction_applied" nillable="true" type="geom:light_time_correction_applied" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="Coordinate_System_Identification" type="geom:Coordinate_System_Identification" minOccurs="0" maxOccurs="1"> </xs:element>
        </xs:sequence>
        <!-- Begin assert statements for schematron - Enumerated Values -->
        <!-- <xs:assert test="geom:light_time_correction_applied = ('None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb')"/> -->
        <!-- End assert statements for schematron - Enumerated Values -->
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Solar_Direction">
    <xs:annotation>
      <xs:documentation> Unit vector pointing in the direction of the
        Sun at the time of the observation. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Unit">
        <xs:sequence>
          <xs:element name="x_unit" type="geom:x_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_unit" type="geom:y_unit" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_unit" type="geom:z_unit" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vector_Vertical">
    <xs:annotation>
      <xs:documentation>The Vector_Vertical is a composite vector
        encoding three quantities: V' (a vector in the image plane
        perpendicular to the horizontal rows), Vs (the distance between
        the lens center and image plane, measured in vertical pixels),
        and Vc (the vertical image coordinate directly under C when
        moving parallel to A). V' is often thought of as describing the
        orientation of columns in space, but is actually perpendicular
        to the rows. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:restriction base="geom:Vector_Cartesian_Pixel">
        <xs:sequence>
          <xs:element name="x_pixel" type="geom:x_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="y_pixel" type="geom:y_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
          <xs:element name="z_pixel" type="geom:z_pixel" minOccurs="1" maxOccurs="1"> </xs:element>
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Vectors">
    <xs:annotation>
      <xs:documentation>The Vectors class is a container of vector
        classes. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Vectors_Cartesian_Specific" type="geom:Vectors_Cartesian_Specific" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Vectors_Planetocentric_Specific" type="geom:Vectors_Planetocentric_Specific" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="Generic_Vectors" type="geom:Generic_Vectors" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vectors_Cartesian_Specific">
    <xs:annotation>
      <xs:documentation>The Vectors_Cartesian_Specific class is a
        container class for all cartesian vectors with pre-identified
        endpoints. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="Vector_Cartesian_Position_Central_Body_To_Spacecraft" type="geom:Vector_Cartesian_Position_Central_Body_To_Spacecraft"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Central_Body_To_Target" type="geom:Vector_Cartesian_Position_Central_Body_To_Target"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Spacecraft_To_Target" type="geom:Vector_Cartesian_Position_Spacecraft_To_Target"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_SSB_To_Central_Body" type="geom:Vector_Cartesian_Position_SSB_To_Central_Body"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_SSB_To_Spacecraft" type="geom:Vector_Cartesian_Position_SSB_To_Spacecraft"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_SSB_To_Target" type="geom:Vector_Cartesian_Position_SSB_To_Target"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Sun_To_Central_Body" type="geom:Vector_Cartesian_Position_Sun_To_Central_Body"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Sun_To_Spacecraft" type="geom:Vector_Cartesian_Position_Sun_To_Spacecraft"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Sun_To_Target" type="geom:Vector_Cartesian_Position_Sun_To_Target"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Earth_To_Central_Body" type="geom:Vector_Cartesian_Position_Earth_To_Central_Body"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Earth_To_Spacecraft" type="geom:Vector_Cartesian_Position_Earth_To_Spacecraft"> </xs:element>
        <xs:element name="Vector_Cartesian_Position_Earth_To_Target" type="geom:Vector_Cartesian_Position_Earth_To_Target"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body" type="geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target" type="geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth" type="geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB" type="geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun" type="geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Target_Relative_To_Central_Body" type="geom:Vector_Cartesian_Velocity_Target_Relative_To_Central_Body"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft" type="geom:Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Target_Relative_To_Earth" type="geom:Vector_Cartesian_Velocity_Target_Relative_To_Earth"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Target_Relative_To_SSB" type="geom:Vector_Cartesian_Velocity_Target_Relative_To_SSB"> </xs:element>
        <xs:element name="Vector_Cartesian_Velocity_Target_Relative_To_Sun" type="geom:Vector_Cartesian_Velocity_Target_Relative_To_Sun"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vectors_Planetocentric_Specific">
    <xs:annotation>
      <xs:documentation>The Vectors_Planetocentric_Specific class is a
        container class for all planetocentric vectors with
        pre-identified endpoints. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="Vector_Planetocentric_Position_Central_Body_To_Spacecraft" type="geom:Vector_Planetocentric_Position_Central_Body_To_Spacecraft"> </xs:element>
        <xs:element name="Vector_Planetocentric_Position_Central_Body_To_Target" type="geom:Vector_Planetocentric_Position_Central_Body_To_Target"> </xs:element>
        <xs:element name="Vector_Planetocentric_Position_Spacecraft_To_Target" type="geom:Vector_Planetocentric_Position_Spacecraft_To_Target"> </xs:element>
        <xs:element name="Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target" type="geom:Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target"> </xs:element>
        <xs:element name="Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body" type="geom:Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body"> </xs:element>
        <xs:element name="Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft" type="geom:Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft"> </xs:element>
      </xs:choice>
    </xs:sequence>
  </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="attitude_propagation_counter">
    <xs:annotation>
      <xs:documentation>Count in clock units of how long it has been
        since the last IMU reset, which relates to how good the attitude
        measurement is due to IMU drift.</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="attitude_propagation_duration_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="attitude_propagation_duration">
    <xs:annotation>
      <xs:documentation>The number of seconds for how long it has been
        since the last IMU reset, which relates to how good the attitude
        measurement is due to IMU drift.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:attitude_propagation_duration_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Time" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="body_spice_name">
    <xs:annotation>
      <xs:documentation>The body_spice_name attribute is a
        NAIF-recognized string identifier for a physical object
        (spacecraft, planet, instrument transmitter, system barycenter,
        etc.), associated with the data. </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="c0">
    <xs:annotation>
      <xs:documentation>The first coefficient of a polynomial.
        </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="c1">
    <xs:annotation>
      <xs:documentation>The second coefficient of a polynomial.
        </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="c2">
    <xs:annotation>
      <xs:documentation>The third coefficient of a polynomial.
        </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="cahvore_model_parameter">
    <xs:annotation>
      <xs:documentation>The cahvore_parameter_type attribute is a scalar
        floating-point number used for CAHVORE Type 3 models (see
        cahvore_model_type). If the parameter is 1.0, the model is
        identical to type 1; if 0.0, it is identical to type 2. Most
        fish-eye lenses use a value in between. </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="cahvore_model_type">
    <xs:annotation>
      <xs:documentation>The cahvore_model_type attribute indicates which
        variant of the CAHVORE model to use. Type 1 is a
        perspective-projection model, similar to CAHV and CAHVOR except
        for the moving entrance pupil. Type 2 is a fish-eye lens model
        reflecting fundamentally different geometry. Type 3 is a
        generalization that includes the first two, and is used for most
        fisheye-type lenses (see cahvore_model_parameter).
        </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="calibration_source_id">
    <xs:annotation>
      <xs:documentation>The calibration_source_id is used to identify
        the source used in calibrating the instrument.
        </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="celestial_east_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="celestial_east_clock_angle">
    <xs:annotation>
      <xs:documentation>The celestial_east_clock_angle attribute
        specifies the direction of celestial east at the center of an
        image. It is measured from the 'upward' direction, clockwise to
        the direction toward celestial east, assuming the image is
        displayed as defined by the Display_Direction class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:celestial_east_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="celestial_north_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="celestial_north_clock_angle">
    <xs:annotation>
      <xs:documentation>The celestial_north_clock_angle attribute
        specifies the direction of celestial north at the center of an
        image. It is measured from the 'upward' direction, clockwise to
        the direction toward celestial north, assuming the image is
        displayed as defined by the Display_Direction class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:celestial_north_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="central_body_north_pole_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="central_body_north_pole_clock_angle">
    <xs:annotation>
      <xs:documentation>The central_body_north_pole_clock_angle element
        specifies the direction of the central body's (e.g.,
        planet's)rotation axis in an image. It is measured from the
        'upward' direction in the image, clockwise to the direction of
        the northern rotational pole as projected into the image plane,
        assuming the image is displayed as defined by the
        Display_Direction class. The north pole of a planet or any of
        its satellites in the solar system is the pole of the rotation
        axis that is in the same celestial hemisphere relative to the
        invariable plane of the solar system as Earth's North pole.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:central_body_north_pole_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="central_body_positive_pole_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="central_body_positive_pole_clock_angle">
    <xs:annotation>
      <xs:documentation>The central_body_positive_pole_clock_angle
        element specifies the direction of the central body's rotation
        axis in an image. It is measured from the 'upward' direction in
        the image, clockwise to the direction of the positive rotational
        pole as projected into the image plane, assuming the image is
        displayed as defined by the Display_Direction class. The
        positive pole is defined as the pole toward which the thumb
        points when the fingers of the right hand are curled in the
        body's direction of rotation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:central_body_positive_pole_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="command_type">
    <xs:annotation>
      <xs:documentation> Specifies how the device was commanded.
        </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="coordinate_space_frame_type">
    <xs:annotation>
      <xs:documentation>The coordinate_space_frame_type attribute
        identifies the type of frame being described, such as SITE,
        LOCAL_LEVEL, LANDER, ROVER, ARM, etc. When combined with
        Coordinate_Space_Index and the optional solution_id in the
        Coordinate_Space_Indexed class, this serves to fully name an
        instance of a coordinate space. </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="coordinate_system_time_utc">
    <xs:annotation>
      <xs:documentation>The coordinate_system_time_utc provides the
        instantiation time for the coordinate system. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Date_Time_YMD_UTC">
  <!-- format="YYYY-MM-DDTHH:MM:SS.SSSSSSZ" -->
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="coordinate_system_type">
    <xs:annotation>
      <xs:documentation>The coordinate_system_type distinguishes between
        options such as rectangular, spherical, planetocentric, etc.
        </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="declination_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="declination_angle">
    <xs:annotation>
      <xs:documentation>The declination_angle (Dec) attribute provides
        the value of an angle on the celestial sphere, measured north
        from the celestial equator to the point in question. (For points
        south of the celestial equator, negative values are used.)
        Declination is used in conjunction with right ascension
        (right_ascension_angle or right_ascension_hour_angle) to specify
        a point on the sky. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:declination_angle_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 specifies the
        abbreviated identification of an articulation 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:simpleType name="device_mode">
    <xs:annotation>
      <xs:documentation>The device_mode attribute specifies the
        deployment state (i.e., physical configuration) of an
        articulation device at the time of data acquisition. Examples
        include 'Arm Vibe', 'Deployed', 'Free Space', 'Stowed'. Note:
        the value set for this attribute is mission-specific and should
        be declared in a mission-specific dictionary. </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="device_name">
    <xs:annotation>
      <xs:documentation>The device_name attribute specifies the common
        name of an articulation 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:simpleType name="device_phase">
    <xs:annotation>
      <xs:documentation>The device_phase attribute specifies the current
        phase of the mission, from an articulation-device-centric point
        of view. </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="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="distance">
    <xs:annotation>
      <xs:documentation>The distance attribute provides the scalar
        distance between to objects or points. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="east_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="east_azimuth">
    <xs:annotation>
      <xs:documentation>Assuming the image is displayed as defined by
        the Display_Direction class, the east_azimuth attribute provides
        the value of the angle between a line from the image center to
        the east and a reference line in the image plane. The reference
        line is a horizontal line from the image center to the middle
        right edge of the image. This angle is measured from the
        reference line and increases in a clockwise direction.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:east_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="ecliptic_east_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ecliptic_east_clock_angle">
    <xs:annotation>
      <xs:documentation>The ecliptic_east_clock_angle attribute
        specifies the direction of ecliptic east at the center of an
        image. It is measured from the 'upward' direction, clockwise to
        the direction toward ecliptic east, assuming the image is
        displayed as defined by the Display_Direction class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:ecliptic_east_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="ecliptic_north_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ecliptic_north_clock_angle">
    <xs:annotation>
      <xs:documentation>The ecliptic_north_clock_angle attribute
        specifies the direction of ecliptic north at the center of an
        image. It is measured from the 'upward' direction, clockwise to
        the direction toward ecliptic north, assuming the image is
        displayed as defined by the Display_Direction class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:ecliptic_north_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
        <xs:attribute name="nilReason" type="pds:nil_reason" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="emission_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="emission_angle">
    <xs:annotation>
      <xs:documentation>The emission_angle element provides the value of
        the angle between the surface normal vector at the intercept
        point and a vector from the intercept point to the spacecraft.
        The emission_angle varies from 0 degrees when the spacecraft is
        viewing the subspacecraft point (nadir viewing) to 90 degrees
        when the intercept is tangent to the surface of the target body.
        Thus, higher values of emission_angle indicate more oblique
        viewing of the target. Values in the range of 90 to 180 degrees
        are possible for ring data. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:emission_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="frame_spice_name">
    <xs:annotation>
      <xs:documentation>The frame_spice_name attribute is a
        NAIF-recognized string identifier for a reference frame
        associated with the data. </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="geometry_reference_time_tdb_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="geometry_reference_time_tdb">
    <xs:annotation>
      <xs:documentation>The geometry reference time given in the
        'Barycentric Dynamical Time' system, as a number of elapsed
        seconds since the J2000 epoch. This is consistent with the
        definition of 'ephemeris time' as used in the SPICE toolkit. The
        value must correspond to the time specified in the
        geometry_reference_time_utc attribute. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:geometry_reference_time_tdb_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Time" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="geometry_reference_time_utc">
    <xs:annotation>
      <xs:documentation>For some observations, geometric parameters are
        given as instantaneous values at a specific time. Another set of
        instantaneous parameters are the parameters which give the
        minimum and maximum values in the product. In some cases, these
        range values are all calculated for the same time. If the label
        includes single valued geometric parameters or min/max range
        parameters determined for a specific time,
        geometry_reference_time_utc gives the time for which these
        values were calculated and must be given in the label. For some
        instruments, particularly those with relatively large exposure
        durations, (e.g., push broom cameras, many imaging
        spectrometers), many geometric quantities are given as ranges.
        If those range parameters are associated with the beginning and
        end of the observation (start_parameter/stop_parameter),
        geometry_start_time_utc/stop_time must be given. Comments within
        the label should be used to ensure the parameter vs. time
        association is unambiguous. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Date_Time_YMD_UTC">
  <!-- format="YYYY-MM-DDTHH:MM:SS.SSSSSSZ" -->
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="geometry_start_time_utc">
    <xs:annotation>
      <xs:documentation>The pair of
        geometry_start_time_utc/geometry_stop_time_utc may be given in
        the label for any observation. The pair is generally used for
        fairly long duration observations (a substantial portion of an
        hour to several hours). geometry_start_time_utc gives the time
        at the beginning of the observation. When either
        geometry_start_time_utc or geometry_stop_time_utc is given, both
        must be provided. Within the Geometry discipline, there are two
        options for providing geometric parameters as a range of values.
        A parameter may be given as a pair where the parameter values
        are those at the beginning and end of the observation
        (start_parameter, stop_parameter). If a (start_parameter,
        stop_parameter) pair is used for any geometric parameter, the
        pair (geometry_start_time_utc/geometry_stop_time_utc) must be
        given. Another option to provide geometric parameters as a pair
        is (minimum_parameter, maximum_parameter) defining a range of
        values where the values are the minimum and maximum values of
        that parameter for the entire observation. Comments within the
        label should be used to ensure the parameter vs. time
        association is unambiguous. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Date_Time_YMD_UTC">
  <!-- format="YYYY-MM-DDTHH:MM:SS.SSSSSSZ" -->
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="geometry_state">
    <xs:annotation>
      <xs:documentation>Specifies the state or configuration of this
        instance of Geometry_Lander applies. Use of this attribute
        enables multiple instances of Geometry_Lander, describing the
        geometry under different conditions. Note that it is legal for
        more than one instance to have the same geometry_state, in which
        case the local_identifier should be used to differentiate the
        instances, along with description. If not present, the semantics
        of "Telemetry" should be assumed. It is not required that
        instances be retained; a derived product may have an Adjusted
        instance but remove the Telemetry one, for
        example.</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="geometry_stop_time_utc">
    <xs:annotation>
      <xs:documentation>The pair of
        geometry_start_time_utc/geometry_stop_time_utc may be given in
        the label for any observation. The pair is generally used for
        fairly long duration observations (a substantial portion of an
        hour to several hours). geometry_stop_time_utc gives the time at
        the end of the observation. When either geometry_start_time_utc
        or geometry_stop_time_utc is given, both must be provided.
        Within the Geometry discipline, there are two options for
        providing geometric parameters as a range of values. A parameter
        may be given as a pair where the parameter values are those at
        the beginning and end of the observation (start_parameter,
        stop_parameter). If a (start_parameter, stop_parameter) pair is
        used for any geometric parameter, the pair
        (geometry_start_time_utc/geometry_stop_time_utc) must be given.
        Another option to provide geometric parameters as a pair is
        (minimum_parameter, maximum_parameter) defining a range of
        values where the values are the minimum and maximum values of
        that parameter for the entire observation. Comments within the
        label should be used to ensure the parameter vs. time
        association is unambiguous. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Date_Time_YMD_UTC">
  <!-- format="YYYY-MM-DDTHH:MM:SS.SSSSSSZ" -->
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="horizontal_coordinate_pixel_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="horizontal_coordinate_pixel">
    <xs:annotation>
      <xs:documentation>horizontal_coordinate_pixel (sample) is the
        horizontal coordinate of a specific pixel. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:horizontal_coordinate_pixel_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Misc" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="horizontal_display_axis">
    <xs:annotation>
      <xs:documentation>The horizontal_display_axis attribute
        identifies, by name, the axis of an Array (or Array subclass)
        that is intended to be displayed in the horizontal or "sample"
        dimension on a display device. The value of this attribute must
        match the value of one, and only one, axis_name attribute in an
        Axis_Array class of the associated Array. </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="horizontal_display_direction">
    <xs:annotation>
      <xs:documentation>The horizontal_display_direction attribute
        specifies the direction across the screen of a display device
        that data along the horizontal axis of an Array is supposed to
        be displayed. </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="horizontal_pixel_field_of_view_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="horizontal_pixel_field_of_view">
    <xs:annotation>
      <xs:documentation>The horizontal_pixel_field_of_view provides the
        angular measure of the horizontal field of view of a single
        pixel, and is sometimes referred to as the instantaneous field
        of view. The pixel_field_of_view_method attribute will designate
        the method used to determine this value. If the
        pixel_field_of_view_method attribute is not specified, see the
        camera documentation for more details. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:horizontal_pixel_field_of_view_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="horizontal_pixel_footprint_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="horizontal_pixel_footprint">
    <xs:annotation>
      <xs:documentation>The horizontal_pixel_footprint provides the the
        size of the horizontal field of view of a single pixel projected
        onto the target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:horizontal_pixel_footprint_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="incidence_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="incidence_angle">
    <xs:annotation>
      <xs:documentation>The incidence_angle element provides a measure
        of the lighting condition at the intercept point. Incidence
        angle is the angle between the local vertical at the intercept
        point (surface) and a vector from the intercept point to the
        sun. The incidence_angle varies from 0 degrees when the
        intercept point coincides with the subsolar point to 90 degrees
        when the intercept point is at the terminator (i.e., in the
        shadowed or dark portion of the target body). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:incidence_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="index_id">
    <xs:annotation>
      <xs:documentation>The index_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="index_name">
    <xs:annotation>
      <xs:documentation>The index_name attribute supplies the formal
        name 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="index_sequence_number">
    <xs:annotation>
      <xs:documentation>The index_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="index_value_angle_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="index_value_angle">
    <xs:annotation>
      <xs:documentation>The index_value_angle attribute provides the
        value of an angle as named by the associated index_id,
        index_name, or index_sequence_number. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:index_value_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="index_value_length_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="index_value_length">
    <xs:annotation>
      <xs:documentation>The index_value_length attribute provides the
        value of a length as named by the associated index_id or
        index_name. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:index_value_length_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="index_value_number">
    <xs:annotation>
      <xs:documentation>The index_value_number attribute provides the
        value with no applicable units as named by the associated
        index_id or index_name. </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="index_value_string">
    <xs:annotation>
      <xs:documentation>The index_value attribute provides the string
        value as named by the associated index_id or index_name.
        </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="index_value_temperature_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="index_value_temperature">
    <xs:annotation>
      <xs:documentation>The index_value_temperature attribute provides
        the value of a temperature as named by the associated index_id
        or index_name. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:index_value_temperature_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Temperature" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="instrument_azimuth_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="instrument_azimuth">
    <xs:annotation>
      <xs:documentation>The instrument_azimuth attribute specifies the
        value for an instrument's rotation in the horizontal direction.
        It may be measured from a low hard stop, or relative to a
        coordinate frame. Although it may be used for any instrument
        where it makes sense, it is primarily intended for use in
        surface-based instruments that measure pointing in terms of
        azimuth and elevation. If this value is expressed using a
        coordinate system, the coordinate system is specified by the
        Coordinate_Space_Reference class. The interpretation of exactly
        what part of the instrument is being pointed is
        mission-specific. It could be the boresight, the camera head
        direction, the CAHV camera model A vector direction, or any of a
        number of other things. As such, for multimission use this value
        should be used mostly as an approximation, e.g. identifying
        scenes which might contain a given object. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:instrument_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="instrument_elevation_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="instrument_elevation">
    <xs:annotation>
      <xs:documentation>The instrument_elevation attribute specifies the
        value for an instrument's rotation in the vertical direction. It
        may be usually measured from a low hard stop, or relative to a
        coordinate frame. Although it may be used for any instrument
        where it makes sense, it is primarily intended for use in
        surface-based instruments that measure pointing in terms of
        azimuth and elevation. If this value is expressed using a
        coordinate system, the coordinate system is specified by the
        Coordinate_Space_Reference class. The interpretation of exactly
        what part of the instrument is being pointed is
        mission-specific. It could be the boresight, the camera head
        direction, the CAHV camera model A vector direction, or any of a
        number of other things. As such, for multimission use this value
        should be used mostly as an approximation, e.g. identifying
        scenes that might contain a given object. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:instrument_elevation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="interpolation_algorithm">
    <xs:annotation>
      <xs:documentation>The interpolation_algorithm defines how
        interpolation was performed. For example, "Piecewise Bilinear"
        does a piecewise bilinear interpolation between calibration
        models nearest to the interpolation_value. </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="interpolation_sequence">
    <xs:annotation>
      <xs:documentation>When more than one dimension is interpolated,
        interpolation_sequence define the ordering. Sequence value 1 was
        interpolated first, directly from calibration; sequence value 2
        was interpolated from those results, etc. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="interpolation_value">
    <xs:annotation>
      <xs:documentation>The interpolation_value specifies the value of
        the variable to which the model was interpolated. The
        interpretation of the value depends on what the variable is and
        should be documented in the mission documentation.
        </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="interpolation_variable">
    <xs:annotation>
      <xs:documentation>The interpolation_variable defines the parameter
        across which interpolation is being performed. Examples of
        variables include Focus, Zoom, and Temperature.
        </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="kernel_provenance">
    <xs:annotation>
      <xs:documentation>The kernel_provenance attribute indicates
        whether a kernel file is a predict kernel, a reconstructed
        kernel, some combination of the two, or a kernel for which the
        distinction is not applicable. </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="lat_long_method">
    <xs:annotation>
      <xs:documentation>The lat_long_method is used with the attributes
        start_latitude, stop_latitude, start_longitude and
        stop_longitude. For most observations these parameters would be
        multivalued. lat_long_method is used to characterize the start
        and stop latitude and longitude. The possible values are:
        'center' indicating the latitude and longitude values are those
        at the center of the field of view at the beginning and end of
        the observation. 'median' indicating the latitude and longitude
        values are the median values at the beginning and end of the
        observation. 'mean' indicating the latitude and longitude values
        are the mean values at the beginning and end of the observation.
        </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="latitude_position_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="latitude_position">
    <xs:annotation>
      <xs:documentation>The latitude component of a Planetocentric
        position vector. Planetocentric latitude is the angle between
        the equator plane and a vector connecting the point of interest
        and the origin of the coordinate system. Latitudes are defined
        to be positive in the northern (as defined by the IAU)
        hemisphere. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:latitude_position_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="latitude_velocity_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="latitude_velocity">
    <xs:annotation>
      <xs:documentation>The latitude component of a Planetocentric
        velocity vector. Planetocentric latitude is the angle between
        the equator plane and a vector connecting the point of interest
        and the origin of the coordinate system. Latitudes are defined
        to be positive in the northern (as defined by the IAU)
        hemisphere. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:latitude_velocity_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angular_Velocity" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="light_time_correction_applied">
    <xs:annotation>
      <xs:documentation>The light_time_correction_applied indicates
        whether or not light travel time correction and stellar
        aberration correction were used when calculating the values in
        the enclosing class. The attribute is nillable with nill_reason
        = unknown, but only for migrated data. Note: generally, received
        light travel time is calculated unless a transmitter (e.g.,
        radar, radio) was involved in which the calculation typically is
        transmitted light time. </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="longitude_position_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="longitude_position">
    <xs:annotation>
      <xs:documentation>The longitudinal component of a Planetocentric
        position vector. Planetocentric longitude is measured from the
        IAU approved prime meridian for the body and increases toward
        the east. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:longitude_position_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="longitude_velocity_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="longitude_velocity">
    <xs:annotation>
      <xs:documentation>The longitudinal component of a Planetocentric
        velocity vector. Planetocentric longitude is measured from the
        IAU approved prime meridian for the body and increases toward
        the east. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:longitude_velocity_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angular_Velocity" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_emission_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_emission_angle">
    <xs:annotation>
      <xs:documentation>The maximum_emission_angle element provides the
        largest value during the observation for the emission angle at
        the target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_emission_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_incidence_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_incidence_angle">
    <xs:annotation>
      <xs:documentation>The maximum_incidence_angle element provides the
        largest value during the observation for the incidence angle at
        the target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_incidence_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_latitude">
    <xs:annotation>
      <xs:documentation>The maximum_latitude attribute identifies the
        final end of the range of values for Planetocentric latitude in
        an image. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_longitude">
    <xs:annotation>
      <xs:documentation>The maximum_longitude attribute identifies the
        final end of the range of values for Planetocentric longitude in
        an image. Note that since Planetocentric longitude has values in
        [0,360], if the range in the product crosses the prime meridian,
        the value of minimum_longitude will be greater than the value of
        the maximum_longitude. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_phase_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_phase_angle">
    <xs:annotation>
      <xs:documentation>The maximum_phase_angle element provides the
        largest value during the observation for the phase angle at the
        target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_phase_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_solar_elongation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_solar_elongation">
    <xs:annotation>
      <xs:documentation>The maximum_solar_elongation element provides
        the largest value during the observation for the solar
        elongation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_solar_elongation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_spacecraft_central_body_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_spacecraft_central_body_distance">
    <xs:annotation>
      <xs:documentation>The maximum_spacecraft_central_body_distance
        attribute provides the largest value during the observation for
        the distance between the spacecraft and the center of the
        central body (e.g., the center of Mars when opperating in the
        Mars system). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_spacecraft_central_body_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_spacecraft_geocentric_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_spacecraft_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The maximum_spacecraft_geocentric_distance
        attribute provides the largest value during the observation for
        the distance between the spacecraft and the center of Earth.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_spacecraft_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_spacecraft_heliocentric_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_spacecraft_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The maximum_spacecraft_heliocentric_distance
        attribute provides the largest value during the observation for
        the distance between the spacecraft and the center of the Sun.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_spacecraft_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_spacecraft_target_boresight_intercept_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_spacecraft_target_boresight_intercept_distance">
    <xs:annotation>
      <xs:documentation>The
        maximum_spacecraft_target_boresight_intercept_distance attribute
        provides the largest value during the observation for the
        distance between the spacecraft and the boresight vector
        intercept point on the surface of the target specified in the
        parent Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_spacecraft_target_boresight_intercept_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_spacecraft_target_center_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_spacecraft_target_center_distance">
    <xs:annotation>
      <xs:documentation>The maximum_spacecraft_target_center_distance
        attribute provides the largest value during the observation for
        the distance between the spacecraft and the center of the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_spacecraft_target_center_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_spacecraft_target_subspacecraft_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_spacecraft_target_subspacecraft_distance">
    <xs:annotation>
      <xs:documentation>The
        maximum_spacecraft_target_subspacecraft_distance attribute
        provides the largest value during the observation for the
        distance between the spacecraft and the subspacecraft point on
        the surface of the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_spacecraft_target_subspacecraft_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_subsolar_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_subsolar_azimuth">
    <xs:annotation>
      <xs:documentation>The maximum_subsolar_azimuth attribute
        identifies the final end of the range of values for subsolar
        azimuth in an image. Note that since subsolar azimuth has values
        in [0,360], if the range in the image crosses the horizontal
        reference corresponding to zero, the value of
        minimum_subsolar_azimuth will be greater than the value of the
        maximum_subsolar_azimuth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_subsolar_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_subsolar_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_subsolar_latitude">
    <xs:annotation>
      <xs:documentation>The maximum_subsolar_latitude attribute
        identifies the final end of the range of values for subsolar
        latitude in an image. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_subsolar_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_subsolar_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_subsolar_longitude">
    <xs:annotation>
      <xs:documentation>The maximum_subsolar_longitude attribute
        identifies the final end of the range of values for subsolar
        longitude in an image. Note that since subsolar longitude has
        values in [0,360], if the range in the product crosses the prime
        meridian, the value of minimum_subsolar_longitude will be
        greater than the value of the maximum_subsolar_longitude.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_subsolar_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_subspacecraft_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_subspacecraft_azimuth">
    <xs:annotation>
      <xs:documentation>The maximum_subspacecraft_azimuth attribute
        identifies the final end of the range of values for
        subspacecraft azimuth in an image. Note that since subspacecraft
        azimuth has values in [0,360], if the range in the image crosses
        the horizontal reference corresponding to zero, the value of
        minimum_subspacecraft_azimuth will be greater than the value of
        the maximum_subspacecraft_azimuth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_subspacecraft_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_subspacecraft_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_subspacecraft_latitude">
    <xs:annotation>
      <xs:documentation>The maximum_subspacecraft_latitude attribute
        identifies the final end of the range of values for
        subspacecraft latitude in an image. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_subspacecraft_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_subspacecraft_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="maximum_subspacecraft_longitude">
    <xs:annotation>
      <xs:documentation>The maximum_subspacecraft_longitude attribute
        identifies the final end of the range of values for
        subspacecraft longitude in an image. Note that since
        subspacecraft longitude has values in [0,360], if the range in
        the product crosses the prime meridian, the value of
        minimum_subspacecraft_longitude will be greater than the value
        of the maximum_subspacecraft_longitude. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_subspacecraft_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_target_geocentric_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_target_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The maximum_target_geocentric_distance attribute
        provides the largest value for the distance between the center
        of the target and the center of the Earth during the
        observation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_target_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_target_heliocentric_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_target_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The maximum_target_heliocentric_distance
        attribute provides the largest value for the distance between
        the center of the target and the center of the Sun during the
        observation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_target_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="maximum_target_ssb_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_target_ssb_distance">
    <xs:annotation>
      <xs:documentation>The maximum_target_ssb_distance attribute
        provides the largest value for the distance between the center
        of the target and the Solar System Barycenter during the
        observation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:maximum_target_ssb_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_emission_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_emission_angle">
    <xs:annotation>
      <xs:documentation>The minimum_emission_angle attribute provides
        the smallest value during the observation for the emission angle
        at the target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_emission_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_incidence_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_incidence_angle">
    <xs:annotation>
      <xs:documentation>The minimum_incidence_angle attribute provides
        the smallest value during the observation for the incidence
        angle at the target specified in the parent Geometry_Orbiter
        class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_incidence_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_latitude">
    <xs:annotation>
      <xs:documentation>The minimum_latitude attribute identifies the
        initial end of the range of values for Planetocentric latitude
        in an image. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_longitude">
    <xs:annotation>
      <xs:documentation>The minimum_longitude attribute identifies the
        initial end of the range of values for Planetocentric longitude.
        Note that since Planetocentric longitude has values in [0,360],
        if the range in the product crosses the prime meridian, the
        value of minimum_longitude will be greater than the value of the
        maximum_longitude. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_phase_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_phase_angle">
    <xs:annotation>
      <xs:documentation>The minimum_phase_angle attribute provides the
        smallest value during the observation for the phase angle at the
        target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_phase_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_solar_elongation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_solar_elongation">
    <xs:annotation>
      <xs:documentation>The minimum_solar_elongation attribute provides
        the smallest value during the observation for the solar
        elongation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_solar_elongation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_spacecraft_central_body_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_spacecraft_central_body_distance">
    <xs:annotation>
      <xs:documentation>The minimum_spacecraft_central_body_distance
        attribute provides the smallest value during the observation for
        the distance between the spacecraft and the center of the
        central body (e.g., the center of Mars when opperating in the
        Mars system). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_spacecraft_central_body_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_spacecraft_geocentric_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_spacecraft_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The minimum_spacecraft_geocentric_distance
        attribute provides the smallest value during the observation for
        the distance between the spacecraft and the center of Earth.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_spacecraft_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_spacecraft_heliocentric_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_spacecraft_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The minimum_spacecraft_heliocentric_distance
        attribute provides the smallest value during the observation for
        the distance between the spacecraft and the center of the Sun.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_spacecraft_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_spacecraft_target_boresight_intercept_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_spacecraft_target_boresight_intercept_distance">
    <xs:annotation>
      <xs:documentation>The
        minimum_spacecraft_target_boresight_intercept_distance attribute
        provides the smallest value during the observation for the
        distance between the spacecraft and the boresight vector
        intercept point on the surface of the target specified in the
        parent Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_spacecraft_target_boresight_intercept_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_spacecraft_target_center_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_spacecraft_target_center_distance">
    <xs:annotation>
      <xs:documentation>The minimum_spacecraft_target_center_distance
        attribute provides the smallest value during the observation for
        the distance between the spacecraft and the center of the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_spacecraft_target_center_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_spacecraft_target_subspacecraft_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_spacecraft_target_subspacecraft_distance">
    <xs:annotation>
      <xs:documentation>The
        minimum_spacecraft_target_subspacecraft_distance attribute
        provides the smallest value during the observation for the
        distance between the spacecraft and the subspacecraft point on
        the surface of the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_spacecraft_target_subspacecraft_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_subsolar_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_subsolar_azimuth">
    <xs:annotation>
      <xs:documentation>The minimum_subsolar_azimuth attribute
        identifies the initial end of the range of values for subsolar
        azimuth in an image. Note that since subsolar azimuth has values
        in [0,360], if the range in the image crosses the horizontal
        reference corresponding to zero, the value of
        minimum_subsolar_azimuth will be greater than the value of the
        maximum_subsolar_azimuth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_subsolar_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_subsolar_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_subsolar_latitude">
    <xs:annotation>
      <xs:documentation>The minimum_subsolar_latitude attribute
        identifies the initial end of the range of values for subsolar
        latitude in an image. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_subsolar_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_subsolar_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_subsolar_longitude">
    <xs:annotation>
      <xs:documentation>The minimum_subsolar_longitude attribute
        identifies the initial end of the range of values for subsolar
        longitude. Note that since subsolar longitude has values in
        [0,360], if the range in the product crosses the prime meridian,
        the value of minimum_subsolar_longitude will be greater than the
        value of the maximum_subsolar_longitude. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_subsolar_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_subspacecraft_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_subspacecraft_azimuth">
    <xs:annotation>
      <xs:documentation>The minimum_subspacecraft_azimuth attribute
        identifies the initial end of the range of values for
        subspacecraft azimuth in an image. Note that since subspacecraft
        azimuth has values in [0,360], if the range in the image crosses
        the horizontal reference corresponding to zero, the value of
        minimum_subspacecraft_azimuth will be greater than the value of
        the maximum_subspacecraft_azimuth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_subspacecraft_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_subspacecraft_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_subspacecraft_latitude">
    <xs:annotation>
      <xs:documentation>The minimum_subspacecraft_latitude attribute
        identifies the initial end of the range of values for
        subspacecraft latitude in an image. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_subspacecraft_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_subspacecraft_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="minimum_subspacecraft_longitude">
    <xs:annotation>
      <xs:documentation>The minimum_subspacecraft_longitude attribute
        identifies the initial end of the range of values for
        subspacecraft longitude. Note that since subspacecraft longitude
        has values in [0,360], if the range in the product crosses the
        prime meridian, the value of minimum_subspacecraft_longitude
        will be greater than the value of the
        maximum_subspacecraft_longitude. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_subspacecraft_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_target_geocentric_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_target_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The minimum_target_geocentric_distance attribute
        provides the smallest value for the distance between the center
        of the target and the center of the Earth during the
        observation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_target_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_target_heliocentric_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_target_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The minimum_target_heliocentric_distance
        attribute provides the smallest value for the distance between
        the center of the target and the center of the Sun during the
        observation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_target_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="minimum_target_ssb_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_target_ssb_distance">
    <xs:annotation>
      <xs:documentation>The minimum_target_ssb_distance attribute
        provides the smallest value for the distance between the center
        of the target and the Solar System Barycenter during the
        observation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:minimum_target_ssb_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="model_type">
    <xs:annotation>
      <xs:documentation>The model_type attribute specifies an identifier
        for the type or kind of model. The value should be one of a well
        defined set, providing an application program with sufficient
        information to know how to handle the rest of the parameters
        within the model. This value will correlate directly with the
        specific camera model class that is a subclass of the
        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="north_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="north_azimuth">
    <xs:annotation>
      <xs:documentation>Assuming the image is displayed as defined by
        the Display_Direction class, the north_azimuth attribute
        provides the value of the angle between a line from the image
        center to the north pole and a reference line in the image
        plane. The reference line is a horizontal line from the image
        center to the middle right edge of the image. This angle is
        measured from the reference line and increases in a clockwise
        direction. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:north_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="phase_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="phase_angle">
    <xs:annotation>
      <xs:documentation>The phase_angle element provides a measure of
        the relationship between the instrument viewing position and
        incident illumination (such as solar light). Phase angle is
        measured at the target; it is the angle between a vector to the
        illumination source and a vector to the instrument. If
        illumination is from behind the instrument, phase_angle will be
        small. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:phase_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="pixel_field_of_view_method">
    <xs:annotation>
      <xs:documentation>The pixel_field_of_view_method provides the
        method used to get the values of the
        horizontal/vertical_pixel_field_view attributes. If the pixel
        field of view does not vary across the camera field of view,
        then this value is 'constant'. If the pixel field of view does
        vary across the camera field of view, the pixel field of view
        can be determined either by the center pixel of the camera or
        the average field of view of the pixel. See the camera
        documentation for more details. </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="pixel_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="pixel_latitude">
    <xs:annotation>
      <xs:documentation>The pixel_latitude attribute gives the value of
        the planetocentric latitude on the target of the projection of a
        specified pixel. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:pixel_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="pixel_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="pixel_longitude">
    <xs:annotation>
      <xs:documentation>The pixel_longitude attribute gives the value of
        the planetocentric longitude on the target of the projection of
        a specified pixel. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:pixel_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="positive_azimuth_direction">
    <xs:annotation>
      <xs:documentation>The positive_azimuth_direction attribute
        specifies the direction in which azimuth is measured in positive
        degrees for an observer on the surface of a body. The azimuth is
        measured with respect to the elevation reference plane. A value
        of 'clockwise' indicates that azimuth is measured positively
        clockwise, and 'counterclockwise' indicates that azimuth
        increases positively counter-clockwise. </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="positive_elevation_direction">
    <xs:annotation>
      <xs:documentation>The positive_elevation_direction attribute
        provides the direction in which elevation is measured in
        positive degrees for an observer on the surface of a body. The
        elevation is measured with respect to the azimuthal reference
        plane. A value of UP or ZENITH indicates that elevation is
        measured positively upwards, i.e., the zenith point would be at
        +90 degrees and the nadir point at -90 degrees. DOWN or NADIR
        indicates that the elevation is measured positively downwards;
        the zenith point would be at -90 degrees and the nadir point at
        +90 degrees. </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="psph_model_scale_x">
    <xs:annotation>
      <xs:documentation> Column scale factor to convert between x
        coordinate and rotation around axis x, expressed in
        radians/pixel. </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="psph_model_scale_y">
    <xs:annotation>
      <xs:documentation> Column scale factor to convert between y
        coordinate and rotation around axis y, expressed in
        radians/pixel. </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="qcos">
    <xs:annotation>
      <xs:documentation>qcos is the scalar component of a quaternion.
        qcos = cos(theta/2), where theta is the angle of rotation.
        </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="qsin1">
    <xs:annotation>
      <xs:documentation>qsin1 is the first element of the vector
        component of a quaternion. qsin1 = x*sin(theta/2) where theta is
        the angle of rotation and (x,y,z) is the unit vector around
        which the rotation occurs. </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="qsin2">
    <xs:annotation>
      <xs:documentation>qsin2 is the second element of the vector
        component of a quaternion. qsin2 = y*sin(theta/2) where theta is
        the angle of rotation and (x,y,z) is the unit vector around
        which the rotation occurs. </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="qsin3">
    <xs:annotation>
      <xs:documentation>qsin3 is the third element of the vector
        component of a quaternion. qsin3 = z*sin(theta/2) where theta is
        the angle of rotation and (x,y,z) is the unit vector around
        which the rotation occurs. </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="quaternion_measurement_method">
    <xs:annotation>
      <xs:documentation>Specifies the method by which the coordinate
        space was measured. This provides an indication of the quality
        of the 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="radial_velocity_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="radial_velocity">
    <xs:annotation>
      <xs:documentation>The radial component of a spherical or
        cylindrical velocity vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:radial_velocity_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Velocity" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="radius_position_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="radius_position">
    <xs:annotation>
      <xs:documentation>The radial component of a spherical or
        cylindrical position vector (e.g., the radius coordinate in
        Planetocentric coordinates). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:radius_position_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="reference_location">
    <xs:annotation>
      <xs:documentation>The reference_location indicates the position to
        which values in the containing class apply. If the reference
        location is on a target, the target is the one specified in the
        parent Geometry_Orbiter 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="reference_pixel_location">
    <xs:annotation>
      <xs:documentation>The reference_pixel_location indicates the
        position of the pixel to which values in the containing class
        apply. </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="right_ascension_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="right_ascension_angle">
    <xs:annotation>
      <xs:documentation>The right_ascension_angle attribute provides the
        value of right ascension (RA) as an angle. Right ascension is
        measured from the vernal equinox or the first point of Aries,
        which is the place on the celestial sphere where the Sun crosses
        the celestial equator from south to north at the March equinox.
        Right ascension is measured continuously in a full circle from
        that equinox towards the east. Right ascension is used in
        conjunction with the declination attribute to specify a point on
        the sky. Note Right Ascension also may be given in hour angles
        in which case the appropriate attribute is
        right_ascension_hour_angle. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:right_ascension_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="right_ascension_hour_angle_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="right_ascension_hour_angle">
    <xs:annotation>
      <xs:documentation>The right_ascension_hour_angle attribute
        provides the value of right ascension (RA) as in terms of hour
        angles (hh.xxx...). Right ascension is measured from the vernal
        equinox or the first point of Aries, which is the place on the
        celestial sphere where the Sun crosses the celestial equator
        from south to north at the March equinox. Right ascension is
        measured continuously in a full circle from that equinox towards
        the east. Right ascension is used in conjunction with the
        declination attribute to specify a point on the sky.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:right_ascension_hour_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Time" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="rotation_direction">
    <xs:annotation>
      <xs:documentation>The rotation_direction attribute identifies the
        direction of the rotation for a specific quaternion. This is
        used when the two frames involved are unambiguously identifed in
        the enclosing classes. </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="selected_instrument_id">
    <xs:annotation>
      <xs:documentation>The selected_instrument_id attribute specifies
        an abbreviated name or acronym that identifies the selected
        instrument mounted on the articulation 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:simpleType name="solar_azimuth_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="solar_azimuth">
    <xs:annotation>
      <xs:documentation>The solar_azimuth attribute specifies one of two
        angular measurements indicating the direction to the Sun as
        measured from a specific point on the surface of a planet (eg.,
        from a lander or rover). The positive direction of azimuth is
        set by the positive_azimuth_direction attribute in the reference
        coordinate space. The azimuth is measured in the clockwise or
        counterclockwise direction (as viewed from above) with the
        meridian passing through the positive spin axis of the planet
        (i.e., the north pole) defining the zero reference.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:solar_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="solar_elevation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90.0"/>
     <xs:maxInclusive value="90.0"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="solar_elevation">
    <xs:annotation>
      <xs:documentation>The solar_elevation attribute specifies one of
        two angular measurements indicating the direction to the Sun as
        measured from a specific point on the surface of a planet (eg.,
        from a lander or rover). The positive direction of the elevation
        is set by the positive_elevation_direction attribute in the
        reference coordinate space. The elevation is measured from the
        plane which is normal to the line passing between the surface
        point and the planet's center of mass, and that intersects the
        surface point. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:solar_elevation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="solar_elongation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="solar_elongation">
    <xs:annotation>
      <xs:documentation>The solar_elongation element gives the angle
        between the line of sight of observation and the direction of
        the Sun. Note: For IRAS: The line of sight of observation is the
        boresight of the telescope as measured by the satellite sun
        sensor. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:solar_elongation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="solar_image_clock_angle_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="solar_image_clock_angle">
    <xs:annotation>
      <xs:documentation>Describes the direction of the sun in terms of
        the image plane, defined as a clock angle (clockwise) around the
        center of the image with 0 pointing to the top of the image,
        with respect to the display orientation (usually defined by
        disp:vertical_display_direction). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:solar_image_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="solution_id">
    <xs:annotation>
      <xs:documentation>The solution_id attribute specifies the unique
        identifier for the solution set to which the values in the group
        belong. For certain kinds of information, such as pointing
        correction (pointing models) and rover localization (coordinate
        system definitions), the "true" value is unknown and only
        estimates of the true value exist. Thus, more than one set of
        estimates may exist simultaneously, each valid for its intended
        purpose. Each of these sets is called a "solution" to the
        unknown true value. The solution_id attribute is used to
        identify which solution is being expressed by the containing
        group. No specific naming convention is defined here, however it
        is recommended that projects adopt one. The intent is to be able
        to identify who created the solution, and why. Possible
        components of the naming convention include user, institution,
        purpose, request ID, version, program, date/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="spacecraft_central_body_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="spacecraft_central_body_distance">
    <xs:annotation>
      <xs:documentation>The spacecraft_central_body_distance attribute
        provides the scalar distance between the spacecraft and the
        center of the central body (e.g., the center of Mars when
        opperating in the Mars system). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:spacecraft_central_body_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="spacecraft_geocentric_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="spacecraft_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The spacecraft_geocentric_distance attribute
        provides the scalar distance between the spacecraft and the
        center of Earth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:spacecraft_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="spacecraft_heliocentric_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="spacecraft_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The spacecraft_heliocentric_distance attribute
        provides the scalar distance between the spacecraft and the
        center of the Sun. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:spacecraft_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="spacecraft_target_boresight_intercept_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="spacecraft_target_boresight_intercept_distance">
    <xs:annotation>
      <xs:documentation>The
        spacecraft_target_boresight_intercept_distance attribute
        provides the scalar distance between the spacecraft and the
        boresight vector intercept point on the surface of the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:spacecraft_target_boresight_intercept_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="spacecraft_target_center_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="spacecraft_target_center_distance">
    <xs:annotation>
      <xs:documentation>The spacecraft_target_center_distance attribute
        provides the scalar distance between the spacecraft and the
        center of the target specified in the parent Geometry_Orbiter
        class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:spacecraft_target_center_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="spacecraft_target_subspacecraft_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="spacecraft_target_subspacecraft_distance">
    <xs:annotation>
      <xs:documentation>The spacecraft_target_subspacecraft_distance
        attribute provides the scalar distance between the spacecraft
        and the subspacecraft point on the surface of the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:spacecraft_target_subspacecraft_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="spice_kernel_file_name">
    <xs:annotation>
      <xs:documentation>The spice_kernel_file_name attribute provides
        the file name of a SPICE kernel file used to process the data or
        to produce geometric quantities given in the label.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_File_Name">
  <!-- format="file_name.file_extension" -->
     <xs:minLength value="1"/>
     <xs:maxLength value="255"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="start_azimuth_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="start_azimuth">
    <xs:annotation>
      <xs:documentation>The start_azimuth attribute specifies the
        angular distance from a fixed reference position at which an
        image or observation starts. Azimuth is measured in a spherical
        coordinate system, in a plane normal to the principal axis.
        Azimuth values increase according to the right hand rule
        relative to the positive direction of the principal axis of the
        spherical coordinate system. When applied to a site or surface
        projection coordinate space, specifies the azimuth of the left
        edge of the output map. Applies to Cylindrical and
        Cylindrical-Perspective projections only. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_emission_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_emission_angle">
    <xs:annotation>
      <xs:documentation>The start_emission_angle attribute provides the
        value at the beginning of the observation
        (geometry_start_time_utc) for the emission angle at the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_emission_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_incidence_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_incidence_angle">
    <xs:annotation>
      <xs:documentation>The start_incidence_angle attribute provides the
        value at the beginning of the observation
        (geometry_start_time_utc) for the incidence angle at the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_incidence_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_latitude">
    <xs:annotation>
      <xs:documentation>The start_latitude attribute identifies the
        value of the Planetocentric latitude at the beginning of the
        observation (geometry_start_time_utc). When either
        start_latitude or stop_latitude is used, both must be used. In
        addition the attribute lat_long_method must be used.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_longitude">
    <xs:annotation>
      <xs:documentation>The start_longitude attribute identifies the
        value of the Planetocentric longitude at the beginning of the
        observation (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_phase_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_phase_angle">
    <xs:annotation>
      <xs:documentation>The start_phase_angle attribute provides the
        value at the beginning of the observation
        (geometry_start_time_utc) for the phase angle at the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_phase_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_solar_elongation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_solar_elongation">
    <xs:annotation>
      <xs:documentation>The start_solar_elongation attribute provides
        the value at the beginning of the observation
        (geometry_start_time_utc) for the solar elongation.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_solar_elongation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_spacecraft_central_body_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="start_spacecraft_central_body_distance">
    <xs:annotation>
      <xs:documentation>The start_spacecraft_central_body_distance
        attribute provides the scalar distance at the beginning of the
        observation (geometry_start_time_utc) between the spacecraft and
        the center of the central body (e.g., the center of Mars when
        opperating in the Mars system). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_spacecraft_central_body_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_spacecraft_geocentric_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="start_spacecraft_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The start_spacecraft_geocentric_distance
        attribute provides the scalar distance at the beginning of the
        observation (geometry_start_time_utc) between the spacecraft and
        the center of Earth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_spacecraft_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_spacecraft_heliocentric_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="start_spacecraft_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The start_spacecraft_heliocentric_distance
        attribute provides the scalar distance at the beginning of the
        observation (geometry_start_time_utc) between the spacecraft and
        the center of the Sun. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_spacecraft_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_spacecraft_target_boresight_intercept_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="start_spacecraft_target_boresight_intercept_distance">
    <xs:annotation>
      <xs:documentation>The
        start_spacecraft_target_boresight_intercept_distance attribute
        provides the scalar distance at the beginning of the observation
        (geometry_start_time_utc) between the spacecraft and the
        boresight vector intercept point on the surface of the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_spacecraft_target_boresight_intercept_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_spacecraft_target_center_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="start_spacecraft_target_center_distance">
    <xs:annotation>
      <xs:documentation>The start_spacecraft_target_center_distance
        attribute provides the scalar distance at the beginning of the
        observation (geometry_start_time_utc) between the spacecraft and
        the center of the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_spacecraft_target_center_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_spacecraft_target_subspacecraft_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="start_spacecraft_target_subspacecraft_distance">
    <xs:annotation>
      <xs:documentation>The
        start_spacecraft_target_subspacecraft_distance attribute
        provides the scalar distance at the beginning of the observation
        (geometry_start_time_utc) between the spacecraft and the
        subspacecraft point on the surface of the target specified in
        the parent Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_spacecraft_target_subspacecraft_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_subsolar_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_subsolar_azimuth">
    <xs:annotation>
      <xs:documentation>The start_subsolar_azimuth attribute identifies
        the value of the subsolar azimuth at the beginning of the
        observation (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_subsolar_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_subsolar_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_subsolar_latitude">
    <xs:annotation>
      <xs:documentation>The start_subsolar_latitude attribute identifies
        the value of the subsolar latitude at the beginning of the
        observation (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_subsolar_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_subsolar_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_subsolar_longitude">
    <xs:annotation>
      <xs:documentation>The start_subsolar_longitude attribute
        identifies the value of the subsolar longitude at the beginning
        of the observation (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_subsolar_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_subspacecraft_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_subspacecraft_azimuth">
    <xs:annotation>
      <xs:documentation>The start_subspacecraft_azimuth attribute
        identifies the value of the subspacecraft azimuth at the
        beginning of the observation (geometry_start_time_utc).
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_subspacecraft_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_subspacecraft_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_subspacecraft_latitude">
    <xs:annotation>
      <xs:documentation>The start_subspacecraft_latitude attribute
        identifies the value of the subspacecraft latitude at the
        beginning of the observation (geometry_start_time_utc).
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_subspacecraft_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_subspacecraft_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="start_subspacecraft_longitude">
    <xs:annotation>
      <xs:documentation>The start_subspacecraft_longitude attribute
        identifies the value of the subspacecraft longitude at the
        beginning of the observation (geometry_start_time_utc).
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_subspacecraft_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_target_geocentric_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="start_target_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The start_target_geocentric_distance attribute
        provides the scalar distance between the center of the target
        and the center of the Earth at the beginning of the observation
        (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_target_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_target_heliocentric_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="start_target_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The start_target_heliocentric_distance attribute
        provides the scalar distance between the center of the target
        and the center of the Sun at the beginning of the observation
        (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_target_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="start_target_ssb_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="start_target_ssb_distance">
    <xs:annotation>
      <xs:documentation>The start_target_ssb_distance attribute provides
        the scalar distance between the center of the target and the
        Solar System Barycenter at the beginning of the observation
        (geometry_start_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:start_target_ssb_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_azimuth_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="stop_azimuth">
    <xs:annotation>
      <xs:documentation>The stop_azimuth attribute specifies the angular
        distance from a fixed reference position at which an image or
        observation stops. Azimuth is measured in a spherical coordinate
        system, in a plane normal to the principal axis. Azimuth values
        increase according to the right hand rule relative to the
        positive direction of the principal axis of the spherical
        coordinate system. When applied to a site or surface projection
        coordinate space, specifies the azimuth of the right edge of the
        output map. Applies to Cylindrical and Cylindrical-Perspective
        projections only. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_emission_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_emission_angle">
    <xs:annotation>
      <xs:documentation>The stop_emission_angle attribute provides the
        value at the end of the observation (geometry_stop_time_utc) for
        the emission angle at the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_emission_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_incidence_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_incidence_angle">
    <xs:annotation>
      <xs:documentation>The stop_incidence_angle attribute provides the
        value at the end of the observation (geometry_stop_time_utc) for
        the incidence angle at the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_incidence_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_latitude">
    <xs:annotation>
      <xs:documentation>The stop_latitude attribute identifies the value
        of the Planetocentric latitude at the end of the observation
        (geometry_stop_time_utc). When either start_latitude or
        stop_latitude is used, both must be used. In addition the
        attribute lat_long_method must be used. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_longitude">
    <xs:annotation>
      <xs:documentation>The stop_longitude attribute identifies the
        value of the Planetocentric longitude at the end of the
        observation (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_phase_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_phase_angle">
    <xs:annotation>
      <xs:documentation>The stop_phase_angle attribute provides the
        value at the end of the observation (geometry_stop_time_utc) for
        the phase angle at the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_phase_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_solar_elongation_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="180"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_solar_elongation">
    <xs:annotation>
      <xs:documentation>The stop_solar_elongation attribute provides the
        value at the end of the observation (geometry_stop_time_utc) for
        the solar elongation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_solar_elongation_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_spacecraft_central_body_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="stop_spacecraft_central_body_distance">
    <xs:annotation>
      <xs:documentation>The stop_spacecraft_central_body_distance
        attribute provides the scalar distance at the end of the
        observation (geometry_stop_time_utc) between the spacecraft and
        the center of the central body (e.g., the center of Mars when
        opperating in the Mars system). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_spacecraft_central_body_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_spacecraft_geocentric_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="stop_spacecraft_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The stop_spacecraft_geocentric_distance
        attribute provides the scalar distance at the end of the
        observation (geometry_stop_time_utc) between the spacecraft and
        the center of Earth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_spacecraft_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_spacecraft_heliocentric_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="stop_spacecraft_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The stop_spacecraft_heliocentric_distance
        attribute provides the scalar distance at the end of the
        observation (geometry_stop_time_utc) between the spacecraft and
        the center of the Sun. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_spacecraft_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_spacecraft_target_boresight_intercept_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="stop_spacecraft_target_boresight_intercept_distance">
    <xs:annotation>
      <xs:documentation>The
        stop_spacecraft_target_boresight_intercept_distance attribute
        provides the scalar distance at the end of the observation
        (geometry_stop_time_utc) between the spacecraft and the
        boresight vector intercept point on the surface of the target
        specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_spacecraft_target_boresight_intercept_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_spacecraft_target_center_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="stop_spacecraft_target_center_distance">
    <xs:annotation>
      <xs:documentation>The stop_spacecraft_target_center_distance
        attribute provides the scalar distance at the end of the
        observation (geometry_stop_time_utc) between the spacecraft and
        the center of the target specified in the parent
        Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_spacecraft_target_center_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_spacecraft_target_subspacecraft_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="stop_spacecraft_target_subspacecraft_distance">
    <xs:annotation>
      <xs:documentation>The
        stop_spacecraft_target_subspacecraft_distance attribute provides
        the scalar distance at the end of the observation
        (geometry_stop_time_utc) between the spacecraft and the
        subspacecraft point on the surface of the target specified in
        the parent Geometry_Orbiter class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_spacecraft_target_subspacecraft_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_subsolar_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_subsolar_azimuth">
    <xs:annotation>
      <xs:documentation>The stop_subsolar_azimuth attribute identifies
        the value of the subsolar azimuth at the end of the observation
        (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_subsolar_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_subsolar_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_subsolar_latitude">
    <xs:annotation>
      <xs:documentation>The stop_subsolar_latitude attribute identifies
        the value of the subsolar latitude at the end of the observation
        (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_subsolar_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_subsolar_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_subsolar_longitude">
    <xs:annotation>
      <xs:documentation>The stop_subsolar_longitude attribute identifies
        the value of the subsolar longitude at the end of the
        observation (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_subsolar_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_subspacecraft_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_subspacecraft_azimuth">
    <xs:annotation>
      <xs:documentation>The stop_subspacecraft_azimuth attribute
        identifies the value of the subspacecraft azimuth at the end of
        the observation (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_subspacecraft_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_subspacecraft_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_subspacecraft_latitude">
    <xs:annotation>
      <xs:documentation>The stop_subspacecraft_latitude attribute
        identifies the value of the subspacecraft latitude at the end of
        the observation (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_subspacecraft_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_subspacecraft_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="stop_subspacecraft_longitude">
    <xs:annotation>
      <xs:documentation>The stop_subspacecraft_longitude attribute
        identifies the value of the subspacecraft longitude at the end
        of the observation (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_subspacecraft_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_target_geocentric_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="stop_target_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The stop_target_geocentric_distance attribute
        provides the scalar distance between the center of the target
        and the center of the Earth at the end of the observation
        (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_target_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_target_heliocentric_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="stop_target_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The stop_target_heliocentric_distance attribute
        provides the scalar distance between the center of the target
        and the center of the Sun at the end of the observation
        (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_target_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="stop_target_ssb_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="stop_target_ssb_distance">
    <xs:annotation>
      <xs:documentation>The stop_target_ssb_distance attribute provides
        the scalar distance between the center of the target and the
        Solar System Barycenter at the end of the observation
        (geometry_stop_time_utc). </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:stop_target_ssb_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="subsolar_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="subsolar_azimuth">
    <xs:annotation>
      <xs:documentation>The subsolar_azimuth attribute provides the
        value of the angle between the line from the center of an image
        to the subsolar point on the target and a horizontal reference
        line (in the image plane) extending from the image center to the
        middle right edge of the image. The values of this angle
        increase in a clockwise direction. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:subsolar_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="subsolar_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="subsolar_latitude">
    <xs:annotation>
      <xs:documentation>The subsolar_latitude attribute gives the value
        of the planetocentric latitude at the subsolar point on the
        target. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:subsolar_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="subsolar_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="subsolar_longitude">
    <xs:annotation>
      <xs:documentation>The subsolar_longitude attribute gives the value
        of the planetocentric longitude at the subsolar point on the
        target. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:subsolar_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="subspacecraft_azimuth_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="subspacecraft_azimuth">
    <xs:annotation>
      <xs:documentation>The subspacecraft_azimuth attribute provides the
        value of the angle between the line from the center of an image
        to the subspacecraft point on the target and a horizontal
        reference line (in the image plane) extending from the image
        center to the middle right edge of the image. The values of this
        angle increase in a clockwise direction. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:subspacecraft_azimuth_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="subspacecraft_latitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-90"/>
     <xs:maxInclusive value="90"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="subspacecraft_latitude">
    <xs:annotation>
      <xs:documentation>The subspacecraft_latitude attribute gives the
        value of the planetocentric latitude at the subspacecraft point
        on the target. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:subspacecraft_latitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="subspacecraft_longitude_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="subspacecraft_longitude">
    <xs:annotation>
      <xs:documentation>The subspacecraft_longitude attribute gives the
        value of the planetocentric longitude at the subspacecraft point
        on the target. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:subspacecraft_longitude_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="sun_direction_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="sun_direction_clock_angle">
    <xs:annotation>
      <xs:documentation>The sun_direction_clock_angle attribute
        specifies the direction of the sun as an angle measured from a
        line 'upward' from the center of the field of view, clockwise to
        the direction toward sun, assuming the image is displayed as
        defined by the Display_Direction class. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:sun_direction_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="target_geocentric_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="target_geocentric_distance">
    <xs:annotation>
      <xs:documentation>The target_geocentric_distance attribute
        provides the scalar distance between the center of the target
        and the center of the Earth. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:target_geocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="target_heliocentric_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="target_heliocentric_distance">
    <xs:annotation>
      <xs:documentation>The target_heliocentric_distance attribute
        provides the scalar distance between the center of the target
        and the center of the Sun. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:target_heliocentric_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="target_name">
    <xs:annotation>
      <xs:documentation>Specifies the name of the target location for
        items in this 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="target_north_pole_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="target_north_pole_clock_angle">
    <xs:annotation>
      <xs:documentation>The target_north_pole_clock_angle element
        specifies the direction of the target body's rotation axis in an
        image. It is measured from the 'upward' direction in the image,
        clockwise to the direction of the northern rotational pole as
        projected into the image plane, assuming the image is displayed
        as defined by the Display_Direction class. The north pole of a
        planet or any of its satellites in the solar system is the pole
        of the rotation axis that is in the same celestial hemisphere
        relative to the invariable plane of the solar system as Earth's
        North pole. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:target_north_pole_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="target_positive_pole_clock_angle_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="target_positive_pole_clock_angle">
    <xs:annotation>
      <xs:documentation>The target_positive_pole_clock_angle element
        specifies the direction of the target body's rotation axis in an
        image. It is measured from the 'upward' direction in the image,
        clockwise to the direction of the positive rotational pole as
        projected into the image plane, assuming the image is displayed
        as defined by the Display_Direction class. The positive pole is
        defined as the pole toward which the thumb points when the
        fingers of the right hand are curled in the body's direction of
        rotation. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:target_positive_pole_clock_angle_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="target_ssb_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="target_ssb_distance">
    <xs:annotation>
      <xs:documentation>The target_ssb_distance attribute provides the
        scalar distance between the center of the target and the Solar
        System Barycenter. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:target_ssb_distance_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="vertical_coordinate_pixel_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="vertical_coordinate_pixel">
    <xs:annotation>
      <xs:documentation>vertical_coordinate_pixel (line) is the vertical
        coordinate of a specific pixel. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:vertical_coordinate_pixel_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Misc" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="vertical_display_axis">
    <xs:annotation>
      <xs:documentation>The vertical_display_axis attribute identifies,
        by name, the axis of an Array (or Array subclass) that is
        intended to be displayed in the vertical or "line" dimension on
        a display device. The value of this attribute must match the
        value of one, and only one, axis_name attribute in an Axis_Array
        class of the associated Array. </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="vertical_display_direction">
    <xs:annotation>
      <xs:documentation>The vertical_display_direction attribute
        specifies the direction along the screen of a display device
        that data along the vertical axis of an Array is supposed to be
        displayed. </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="vertical_pixel_field_of_view_WO_Units">
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="0"/>
     <xs:maxInclusive value="360"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="vertical_pixel_field_of_view">
    <xs:annotation>
      <xs:documentation>The vertical_pixel_field_of_view provides the
        angular measure of the vertical field of view of a single pixel,
        and is sometimes referred to as the instantaneous field of view.
        The pixel_field_of_view_method attribute will designate the
        method used to determine this value. If the
        pixel_field_of_view_method attribute is not specified, see the
        camera documentation for more details. </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:vertical_pixel_field_of_view_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Angle" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="vertical_pixel_footprint_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="vertical_pixel_footprint">
    <xs:annotation>
      <xs:documentation>The vertical_pixel_footprint provides the size
        of the vertical field of view of a single pixel projected onto
        the target specified in the parent Geometry_Orbiter class.
        </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:vertical_pixel_footprint_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="x">
    <xs:annotation>
      <xs:documentation>The x component of a Cartesian vector which has
        no units.</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="x_acceleration_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_acceleration">
    <xs:annotation>
      <xs:documentation>The x component of a Cartesian acceleration
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:x_acceleration_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Acceleration" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="x_pixel">
    <xs:annotation>
      <xs:documentation>The x component of a Cartesian pixel vector;
        typically used in cameral models. </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="x_position_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_position">
    <xs:annotation>
      <xs:documentation>The x component of a Cartesian position
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:x_position_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="x_unit">
    <xs:annotation>
      <xs:documentation>The x component of a unit Cartesian
        vector.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1"/>
     <xs:maxInclusive value="1"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="x_velocity_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_velocity">
    <xs:annotation>
      <xs:documentation>The x component of a Cartesian velocity
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:x_velocity_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Velocity" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="y">
    <xs:annotation>
      <xs:documentation>The y component of a Cartesian vector which has
        no units.</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="y_acceleration_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_acceleration">
    <xs:annotation>
      <xs:documentation>The y component of a Cartesian acceleration
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:y_acceleration_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Acceleration" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="y_pixel">
    <xs:annotation>
      <xs:documentation>The y component of a Cartesian pixel vector;
        typically used in cameral models. </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="y_position_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_position">
    <xs:annotation>
      <xs:documentation>The y component of a Cartesian position
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:y_position_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="y_unit">
    <xs:annotation>
      <xs:documentation>The y component of a unit Cartesian
        vector.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1"/>
     <xs:maxInclusive value="1"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="y_velocity_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_velocity">
    <xs:annotation>
      <xs:documentation>The y component of a Cartesian velocity
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:y_velocity_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Velocity" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="z">
    <xs:annotation>
      <xs:documentation>The z component of a Cartesian vector which has
        no units.</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="z_acceleration_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="z_acceleration">
    <xs:annotation>
      <xs:documentation>The z component of a Cartesian acceleration
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:z_acceleration_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Acceleration" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="z_pixel">
    <xs:annotation>
      <xs:documentation>The z component of a Cartesian pixel vector;
        typically used in cameral models. </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="z_position_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="z_position">
    <xs:annotation>
      <xs:documentation>The z component of a Cartesian position
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:z_position_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Length" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="z_unit">
    <xs:annotation>
      <xs:documentation>The z component of a unit Cartesian
        vector.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Real">
     <xs:minInclusive value="-1"/>
     <xs:maxInclusive value="1"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="z_velocity_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="z_velocity">
    <xs:annotation>
      <xs:documentation>The z component of a Cartesian velocity
        vector.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="geom:z_velocity_WO_Units">
        <xs:attribute name="unit" type="pds:Units_of_Velocity" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:schema>
