<?xml version="1.0" encoding="UTF-8"?>
  <!-- PDS4 XML/Schema for Name Space Id:multi  Version:1.0.0.0 - Fri Nov 30 11:03:30 PST 2018 -->
  <!-- Generated from the PDS4 Information Model Version 1.9.0.0 - System Build 8a -->
  <!-- *** This PDS4 product schema is an operational deliverable. *** -->
  <!--                                                                           -->
  <!--               Dictionary Stack                                            -->
  <!-- 1.9.0.0 - pds: - Common Dictionary - N/A                                  -->
  <!-- 1.0.0.0 - multi: - Multi - ldd-multi.xml                                  -->
  <!--                                                                           -->
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://pds.nasa.gov/pds4/multi/v1"
    xmlns:multi="http://pds.nasa.gov/pds4/multi/v1"
    xmlns:pds="http://pds.nasa.gov/pds4/pds/v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1.0.0.0">
 
    <xs:import namespace="http://pds.nasa.gov/pds4/pds/v1" schemaLocation="http://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1900.xsd"/>
 
  <xs:annotation>
    <xs:documentation>
The Multi dictionary contains classes that describe the composition of multidimensional data consisting of Array (and Array subclass) data objects. It provides a way to associated data objects and align the objects in general multi-dimensional structures. 
    </xs:documentation>
  </xs:annotation>
 

  <xs:complexType name="Aligned_Values">
    <xs:annotation>
      <xs:documentation>The Aligned_Values class describes the values
        which align element-by-element with the elements of a
        observation data array. The aligned values array must have the
        same dimensions as the observation array.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Local_Internal_Reference" type="multi:Local_Internal_Reference" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Axis_Values">
    <xs:annotation>
      <xs:documentation>The Axis_Values class describes the values which
        are associated with the elements along an axis of a observation
        data array.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Local_Internal_Reference" type="multi:Local_Internal_Reference" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="axis_number" type="multi:axis_number" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Face_Plane">
    <xs:annotation>
      <xs:documentation>The Face_Plane class describes a plane which is
        defined by two axes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="face_axis" type="multi:face_axis" minOccurs="2" maxOccurs="2"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Face_Values">
    <xs:annotation>
      <xs:documentation>The Face_Values class describes the values which
        are associated with the elements on the face of a observation
        data array.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Local_Internal_Reference" type="multi:Local_Internal_Reference" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Face_Plane" type="multi:Face_Plane" minOccurs="1" maxOccurs="1"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Local_Internal_Reference">
    <xs:annotation>
      <xs:documentation>The Local_Internal_Reference class is used to
        cross-reference other classes or objects within the
        product.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="local_identifier_reference" type="pds:local_identifier_reference" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="local_reference_type" type="multi:local_reference_type" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="comment" type="pds:comment" minOccurs="0" maxOccurs="1"> </xs:element>
    </xs:sequence>
    <!-- Begin assert statements for schematron - Enumerated Values -->
    <!-- <xs:assert test="multi:local_reference_type = ('multi_observation_to_aligned_values', 'multi_observation_to_axis_values', 'multi_observation_to_face_values', 'multi_observation_to_observation_values')"/> -->
    <!-- End assert statements for schematron - Enumerated Values -->
  </xs:complexType>

  <xs:complexType name="Particle_Observation">
    <xs:annotation>
      <xs:documentation>The Particle_Observation describes the data of a
        observation and the values which are associated with the
        elements along an axis or on the face of a observation data
        array.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="pds:name" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="local_identifier" type="pds:local_identifier" minOccurs="0" maxOccurs="1"> </xs:element>
      <xs:element name="description" type="pds:description" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Primary_Values" type="multi:Primary_Values" minOccurs="1" maxOccurs="1"> </xs:element>
      <xs:element name="Axis_Values" type="multi:Axis_Values" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Face_Values" type="multi:Face_Values" minOccurs="0" maxOccurs="unbounded"> </xs:element>
      <xs:element name="Aligned_Values" type="multi:Aligned_Values" minOccurs="0" maxOccurs="unbounded"> </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Primary_Values">
    <xs:annotation>
      <xs:documentation>The Primary_Values class describes the values
        which are the primary observation data array.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Local_Internal_Reference" type="multi:Local_Internal_Reference" minOccurs="1" maxOccurs="1"> </xs:element>
    </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
        pds namespace.
      </xs:documentation>
    </xs:annotation>

  <xs:simpleType name="axis_number">
    <xs:annotation>
      <xs:documentation>The index of the axis. The first axis is
        numbered as 1.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="face_axis">
    <xs:annotation>
      <xs:documentation>The axis number that defines one axis of a face
        plane.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="pds:ASCII_Integer">
     <xs:minInclusive value="1"/>
     <xs:maxInclusive value="9223372036854775807"/>
	   </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="local_reference_type">
    <xs:annotation>
      <xs:documentation>The local_reference_type attribute provides the
        name of an association between an entity identified by a
        local_identifier_reference and another corresponding entity
        identified by a local_identifier</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:schema>
