<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="MediaItem">
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:restriction base="xsd:anyType">
          <xsd:sequence>
            <xsd:element name="MediaType" type="MediaType"/>
            <xsd:element name="MediaItemType" type="MediaItemType"/>
            <xsd:element name="Collection">
              <xsd:complexType>
                <xsd:complexContent>
                  <xsd:restriction base="xsd:anyType">
                    <xsd:sequence>
                      <xsd:element name="Action">
                        <xsd:complexType>
                          <xsd:simpleContent>
                            <xsd:extension base="ActionDataType">
                              <xsd:attribute name="MetadataOnly" type="xsd:boolean" use="required"/>
                            </xsd:extension>
                          </xsd:simpleContent>
                        </xsd:complexType>
                      </xsd:element>
                      <xsd:element name="LastUpdate" type="sqlDateTime"/>
                      <xsd:element name="Identifiers" type="IdentiferType"/>
                      <xsd:element minOccurs="0" name="Media" type="MediaLocationType"/>
                      <xsd:element name="CollectionType" type="CollectionTypeDataType"/>
                      <xsd:element name="Title" type="TitleDataType"/>
                      <xsd:element name="Explicit" type="xsd:unsignedByte"/>
                      <xsd:element minOccurs="0" name="Copyright" type="CopyrightDataType"/>
                      <xsd:element minOccurs="0" name="PhonographicCopyright" type="xsd:anyType"/>
                      <xsd:element minOccurs="0" name="DisplayLabel" type="CompanyElement"/>
                      <xsd:element minOccurs="0" name="ReleaseDate" type="sqlDateTime"/>
                      <xsd:element minOccurs="0" name="OriginalReleaseDate" type="sqlDateTime"/>
                      <xsd:element name="TrackCount" type="xsd:unsignedInt"/>
                      <xsd:element name="TrackBundleCount" type="xsd:unsignedByte"/>
                      <xsd:element minOccurs="0" name="Version" type="VersionDataType"/>
                      <xsd:element minOccurs="0" name="Series" type="SeriesDataType"/>
                      <xsd:element minOccurs="0" name="Duration" type="xsd:unsignedInt"/>
                      <xsd:element name="Language" type="CountryCodeDataType"/>
                      <xsd:element name="Contributors" type="ContributorsType"/>
                      <xsd:element minOccurs="0" name="Genres" type="GenresType"/>
                      <xsd:element minOccurs="0" name="SubGenres" type="SubGenresType"/>
                      <xsd:element minOccurs="0" name="OfferingTerms" type="OfferingTermsType"/>
                      <xsd:element name="Tracks">
                        <xsd:complexType>
                          <xsd:complexContent>
                            <xsd:restriction base="xsd:anyType">
                              <xsd:sequence>
                                <xsd:element maxOccurs="unbounded" name="Track">
                                  <xsd:complexType>
                                    <xsd:complexContent>
                                      <xsd:restriction base="xsd:anyType">
                                        <xsd:sequence>
                                          <xsd:element name="Action">
                                            <xsd:complexType>
                                              <xsd:simpleContent>
                                                <xsd:extension base="ActionDataType">
                                                  <xsd:attribute name="MetadataOnly" type="xsd:boolean" use="required"/>
                                                </xsd:extension>
                                              </xsd:simpleContent>
                                            </xsd:complexType>
                                          </xsd:element>
                                          <xsd:element name="Identifiers" type="IdentiferType"/>
                                          <xsd:element minOccurs="0" name="Media" type="MediaLocationType"/>
                                          <xsd:element name="Title" type="TitleDataType"/>
                                          <xsd:element minOccurs="0" name="Version" type="VersionDataType"/>
                                          <xsd:element name="Duration" type="xsd:unsignedInt"/>
                                          <xsd:element name="Explicit" type="xsd:unsignedByte"/>
                                          <xsd:element minOccurs="0" name="ReleaseDate" type="sqlDateTime"/>
                                          <xsd:element minOccurs="0" name="OriginalReleaseDate" type="sqlDateTime"/>
                                          <xsd:element minOccurs="0" name="Copyright" type="CopyrightDataType"/>
                                          <xsd:element minOccurs="0" name="PhonographicCopyright" type="CopyrightDataType"/>
                                          <xsd:element minOccurs="0" name="DisplayLabel" type="CompanyElement"/>
                                          <xsd:element name="DiscNumber" type="xsd:unsignedInt"/>
                                          <xsd:element name="TrackNumber" type="xsd:unsignedInt"/>
                                          <xsd:element name="Language" type="CountryCodeDataType"/>
                                          <xsd:element name="Contributors" type="ContributorsType"/>
                                          <xsd:element minOccurs="0" name="Genres" type="GenresType"/>
                                          <xsd:element minOccurs="0" name="SubGenres" type="SubGenresType"/>
                                          <xsd:element minOccurs="0" name="OfferingTerms" type="OfferingTermsType"/>
                                        </xsd:sequence>
                                      </xsd:restriction>
                                    </xsd:complexContent>
                                  </xsd:complexType>
                                </xsd:element>
                              </xsd:sequence>
                            </xsd:restriction>
                          </xsd:complexContent>
                        </xsd:complexType>
                      </xsd:element>
                    </xsd:sequence>
                  </xsd:restriction>
                </xsd:complexContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:restriction>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="ContributorsType">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:element maxOccurs="unbounded" name="Contributor">
            <xsd:complexType>
              <xsd:complexContent>
                <xsd:restriction base="xsd:anyType">
                  <xsd:sequence>
                    <xsd:element name="Name" type="ContributorNameDataType"/>
                    <xsd:element minOccurs="0" name="MyspaceProfiles">
                      <xsd:complexType>
                        <xsd:complexContent>
                          <xsd:restriction base="xsd:anyType">
                            <xsd:sequence>
                              <xsd:element maxOccurs="1" minOccurs="1" name="MyspaceProfile">
                                <xsd:complexType>
                                  <xsd:complexContent>
                                    <xsd:restriction base="xsd:anyType">
                                      <xsd:sequence/>
                                      <xsd:attribute name="ID" type="xsd:unsignedInt" use="required"/>
                                    </xsd:restriction>
                                  </xsd:complexContent>
                                </xsd:complexType>
                              </xsd:element>
                            </xsd:sequence>
                          </xsd:restriction>
                        </xsd:complexContent>
                      </xsd:complexType>
                    </xsd:element>
                  </xsd:sequence>
                  <xsd:attribute name="Role" use="required">
                    <xsd:simpleType>
                      <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Featured Artist"/>
                        <xsd:enumeration value="Writer"/>
                        <xsd:enumeration value="Primary Artist"/>
                        <xsd:enumeration value="Composer"/>
                        <xsd:enumeration value="Director"/>
                        <xsd:enumeration value="Orchestra"/>
                        <xsd:enumeration value="Conductor"/>
                      </xsd:restriction>
                    </xsd:simpleType>
                  </xsd:attribute>
                  <xsd:attribute name="ID" type="IdentifierValueDataType" use="optional"/>
                </xsd:restriction>
              </xsd:complexContent>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="GenresType">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:element maxOccurs="unbounded" name="Genre" type="GenreDataType"/>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="OfferingTermsType">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:element maxOccurs="unbounded" minOccurs="0" name="Territory">
            <xsd:complexType>
              <xsd:complexContent>
                <xsd:restriction base="xsd:anyType">
                  <xsd:all>
                    <xsd:element minOccurs="0" name="Rights">
                      <xsd:complexType>
                        <xsd:complexContent>
                          <xsd:restriction base="xsd:anyType">
                            <xsd:sequence>
                              <xsd:element maxOccurs="unbounded" minOccurs="0" name="Right">
                                <xsd:complexType>
                                  <xsd:complexContent>
                                    <xsd:restriction base="xsd:anyType">
                                      <xsd:sequence>
                                        <xsd:element name="Devices">
                                          <xsd:complexType>
                                            <xsd:complexContent>
                                              <xsd:restriction base="xsd:anyType">
                                                <xsd:sequence>
                                                  <xsd:element maxOccurs="unbounded" name="Device" type="RightsDeviceType"/>
                                                </xsd:sequence>
                                              </xsd:restriction>
                                            </xsd:complexContent>
                                          </xsd:complexType>
                                        </xsd:element>
                                        <xsd:element minOccurs="0" name="ApprovedWebsites">
                                          <xsd:complexType>
                                            <xsd:complexContent>
                                              <xsd:restriction base="xsd:anyType">
                                                <xsd:sequence>
                                                  <xsd:element maxOccurs="unbounded" name="Website" type="WebsiteDataType"/>
                                                </xsd:sequence>
                                              </xsd:restriction>
                                            </xsd:complexContent>
                                          </xsd:complexType>
                                        </xsd:element>
                                      </xsd:sequence>
                                      <xsd:attribute name="UsageType" type="RightsUsageType" use="required"/>
                                      <xsd:attribute name="AlbumOnly" type="xsd:byte"/>
                                    </xsd:restriction>
                                  </xsd:complexContent>
                                </xsd:complexType>
                              </xsd:element>
                            </xsd:sequence>
                          </xsd:restriction>
                        </xsd:complexContent>
                      </xsd:complexType>
                    </xsd:element>
                  </xsd:all>
                  <xsd:attribute name="Code" type="CountryCodeDataType" use="required"/>
                  <xsd:attribute name="StartDate" type="sqlDateTime" use="required"/>
                  <xsd:attribute name="EndDate" type="sqlDateTime" use="required"/>
                </xsd:restriction>
              </xsd:complexContent>
            </xsd:complexType>
          </xsd:element>
          <xsd:element maxOccurs="1" minOccurs="0" name="AllowEmbed" type="xsd:unsignedByte"/>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SubGenresType">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:element maxOccurs="unbounded" name="SubGenre" type="GenreDataType"/>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="IdentiferType">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:sequence>
          <xsd:element maxOccurs="1" minOccurs="1" name="PrimaryIdentifier">
            <xsd:complexType>
              <xsd:simpleContent>
                <xsd:extension base="IdentifierValueDataType">
                  <xsd:attribute name="Name" type="IdentifierValueDataType" use="required"/>
                </xsd:extension>
              </xsd:simpleContent>
            </xsd:complexType>
          </xsd:element>
          <xsd:element maxOccurs="unbounded" minOccurs="0" name="Identifier">
            <xsd:complexType>
              <xsd:simpleContent>
                <xsd:extension base="IdentifierValueDataType">
                  <xsd:attribute name="Name" type="IdentifierValueDataType" use="required"/>
                </xsd:extension>
              </xsd:simpleContent>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:simpleType name="ActionDataType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="insert"/>
      <xsd:enumeration value="update"/>
      <xsd:enumeration value="delete"/>
      <xsd:enumeration value="nochange"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CollectionTypeDataType">
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="255"/>
      <xsd:enumeration value="Compilation"/>
      <xsd:enumeration value="Single"/>
      <xsd:enumeration value="Album"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CompanyNameDataType">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ContributorNameDataType">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CopyrightDataType">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>
  <xsd:simpleType name="CountryCodeDataType">
    <xsd:restriction base="xsd:string">
      <xsd:length value="2"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="GenreDataType">
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="IdentifierNameDataType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ISRC"/>
      <xsd:enumeration value="UPC"/>
      <xsd:enumeration value="GRID"/>
      <xsd:enumeration value="PhysicalUPC"/>
      <xsd:enumeration value="PartnerSpaceID"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="IdentifierValueDataType">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="100"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MediaItemType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Album"/>
      <xsd:enumeration value="Track"/>
      <xsd:enumeration value="Music Video"/>
      <xsd:enumeration value="Non-Music Video"/>
      <xsd:enumeration value="Ringtone"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MediaType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Audio"/>
      <xsd:enumeration value="Video"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="RightsDeviceType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PC"/>
      <xsd:enumeration value="Mobile"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="RightsUsageType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="StreamOnDemand"/>
      <xsd:enumeration value="DigitalDownload"/>
      <xsd:enumeration value="RadioStream"/>
      <xsd:enumeration value="SubscriptionStreamOnDemand"/>
      <xsd:enumeration value="SampleStreamOnDemand"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SeriesDataType">
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TitleDataType">
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="VersionDataType">
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="WebsiteDataType">
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="255"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="sqlDateTime">
    <xsd:restriction base="xsd:dateTime">
      <xsd:minInclusive value="1753-01-01T00:00:00Z"/>
      <xsd:maxInclusive value="9999-12-31T23:59:59Z"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="MediaLocationType">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="ClipLocation" type="xsd:string"/>
      <xsd:element minOccurs="0" name="TrackLocation" type="xsd:string"/>
      <xsd:element minOccurs="0" name="ImageLocation" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CompanyElement">
    <xsd:simpleContent>
      <xsd:extension base="CompanyNameDataType">
        <xsd:attribute name="ID" type="IdentifierValueDataType" use="optional"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
</xsd:schema>
