<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata"
  xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL"
  xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata"
  attributeFormDefault="unqualified" elementFormDefault="qualified">
  <xs:import namespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"/>
  <xs:element name="CompositionMetadataAsset" type="meta:CompositionMetadataAssetType"/>
  <xs:complexType name="CompositionMetadataAssetType">
    <xs:complexContent>
      <xs:extension base="cpl:GenericAssetType">
        <xs:sequence>

          <xs:element name="FullContentTitleText" type="cpl:UserText"/>

          <xs:element name="ReleaseTerritory" minOccurs="0">
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:string">
                  <xs:attribute
                    default="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata#scope/release-territory/UNM49"
                    name="scope" type="xs:anyURI"/>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>

          <xs:element name="VersionNumber" default="1" minOccurs="0">
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:nonNegativeInteger">
                  <xs:attribute default="final" name="status"
                    type="meta:StatusEnum"/>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>

          <xs:element name="Chain" type="xs:string" minOccurs="0"/>

          <xs:element name="Distributor" type="xs:string" minOccurs="0"/>

          <xs:element name="Facility" type="xs:string" minOccurs="0"/>

          <xs:element minOccurs="0" name="AlternateContentVersionList">
            <xs:complexType>
              <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="1"
                  name="ContentVersion" type="cpl:ContentVersionType"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:element minOccurs="0" name="Luminance">
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="meta:PositiveDecimal">
                  <xs:attribute name="units" type="meta:LuminanceUnitEnum"
                    use="required"/>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>

          <xs:element name="MainSoundConfiguration" minOccurs="1" type="xs:string"/>

          <xs:element name="MainSoundSampleRate" minOccurs="1" type="cpl:Rational"/>

          <xs:element name="MainPictureStoredArea" minOccurs="1">
            <xs:complexType>
              <xs:sequence>              
                <xs:element name="Width" type="xs:positiveInteger"/>    
                <xs:element name="Height" type="xs:positiveInteger"/>      
              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:element name="MainPictureActiveArea" minOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Width" type="xs:positiveInteger"/>
                <xs:element name="Height" type="xs:positiveInteger"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>


          <xs:element minOccurs="0" name="MainSubtitleLanguageList">
            <xs:simpleType>
              <xs:restriction base="meta:LanguageListType">
                <xs:minLength value="1"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:element>

          <xs:element minOccurs="0" name="ExtensionMetadataList">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="ExtensionMetadata" maxOccurs="unbounded"
                  minOccurs="0" type="meta:ExtensionMetadataType"> </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other"
            processContents="lax"/>

        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="StatusEnum">
    <xs:restriction base="xs:token">
      <xs:enumeration value="final"/>
      <xs:enumeration value="temp"/>
      <xs:enumeration value="pre"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LuminanceUnitEnum">
    <xs:restriction base="xs:token">
      <xs:enumeration value="foot-lambert"/>
      <xs:enumeration value="candela-per-square-metre"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PositiveDecimal">
    <xs:restriction base="xs:decimal">
      <xs:minExclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LanguageListType">
    <xs:restriction>
      <xs:simpleType>
        <xs:list itemType="xs:language"/>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ExtensionMetadataType">
    <xs:sequence>
      <xs:element name="Name" type="xs:string"/>
      <xs:element minOccurs="0" name="PropertyList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Property" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" type="xs:string"/>
                  <xs:element name="Value" type="xs:string"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:any namespace="##other" maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
    </xs:sequence>
    <xs:attribute name="scope" type="xs:anyURI" use="required"/>
  </xs:complexType>

</xs:schema>
