<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="T_track_artist_name">
    <xs:restriction base="xs:string" />
  </xs:simpleType>
  <xs:simpleType name="T_product_artist_name">
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="100" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="local_label_id">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="50" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="wholesale_price">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="price" />
        <xs:element ref="currency_code" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="tracks">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="track" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="track_volume" type="xs:integer" />
  <xs:element name="track_version_title">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="255" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="track_type">
    <xs:simpleType>
      <xs:restriction base="xs:string" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="track_title">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="255" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="track_p_line">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="track_number" type="xs:integer" />
  <xs:element name="track_length" type="xs:integer" />
  <xs:element name="track_label">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="50" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="track_identifier" type="xs:string" />
  <xs:element name="track_artists">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="track_artist_name" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="track_artist_name">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="T_track_artist_name">
          <xs:attribute name="main" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="yes" />
                <xs:enumeration value="no" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="track">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="local_label_id" />
        <xs:element minOccurs="1" ref="track_identifier" />
        <xs:element ref="track_artists" />
        <xs:element minOccurs="0" ref="participants" />
        <xs:element ref="explicit_content" />
        <xs:element ref="track_volume" />
        <xs:element ref="track_number" />
        <xs:element minOccurs="0" ref="track_type" />
        <xs:element ref="track_title" />
        <xs:element ref="track_version_title" />
        <xs:element ref="track_length" />
        <xs:element ref="track_label" />
        <xs:element ref="track_p_line" />
        <xs:element minOccurs="0" ref="genres" />
        <xs:element minOccurs="0" ref="territory_restrictions" />
      </xs:sequence>
      <xs:attribute name="isrc" type="xs:string" use="required" />
      <xs:attribute name="hidden" type="xs:boolean" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="territory_release_date">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="8" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="territory_code">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="5" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="products">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="distributor" type="xs:string" />
        <xs:element ref="product" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="product_type" type="xs:string" />
  <xs:element name="explicit_content">
    <xs:simpleType>
      <xs:restriction base="xs:boolean" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_title">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="255" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_release_date">
    <xs:simpleType>
      <xs:restriction base="xs:string" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_p_line">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_label">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="50" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_image">
    <xs:simpleType>
      <xs:restriction base="xs:string" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_c_line">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1" />
        <xs:maxLength value="100" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="product_artists">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" ref="product_artist_name" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="participants">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="participant" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="participant">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="participant_role" />
        <xs:element ref="participant_name" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="participant_role" type="xs:string" />
  <xs:element name="participant_name" type="xs:string" />
  <xs:element name="product_artist_name">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="T_product_artist_name">
          <xs:attribute name="main" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="no" />
                <xs:enumeration value="yes" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="product">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="product_type" />
        <xs:element minOccurs="0" name="proc_type" type="xs:string" />
        <xs:element minOccurs="0" ref="local_label_id" />
        <xs:element ref="product_label" />
        <xs:element minOccurs="0" ref="product_image" />
        <xs:element ref="product_title" />
        <xs:element ref="product_release_date" />
        <xs:element ref="product_p_line" />
        <xs:element ref="product_c_line" />
        <xs:element ref="product_artists" />
        <xs:element minOccurs="0" ref="participants" />
        <xs:element ref="explicit_content" />
        <xs:element minOccurs="0" ref="genres" />
        <xs:element minOccurs="0" ref="territory_restrictions" />
        <xs:element ref="tracks" />
      </xs:sequence>
      <xs:attribute name="upc" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string" />
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="price_code">
    <xs:simpleType>
      <xs:restriction base="xs:string" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="price">
    <xs:simpleType>
      <xs:restriction base="xs:decimal" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="genres">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="genre" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="genre">
    <xs:simpleType>
      <xs:restriction base="xs:string" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="currency_code">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="3" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="territory_restrictions">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="territory" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="territory">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="territory_code" />
        <xs:element minOccurs="0" ref="territory_release_date" />
        <xs:element minOccurs="0" ref="price_code" />
        <xs:element minOccurs="0" ref="wholesale_price" />
      </xs:sequence>
      <xs:attribute default="true" name="restricted_to" type="xs:boolean" />
    </xs:complexType>
  </xs:element>
</xs:schema>
