<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="SearchRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="PriceFilter">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="MinPrice" type="xs:double" minOccurs="0"/>
                            <xs:element name="MaxPrice" type="xs:double" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="NameFilter" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="SearchResponse">
        <xs:complexType>
            <xs:choice>
                <xs:element name="Result">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SearchDate" type="xs:date"/>
                            <xs:element name="Product" type="AlbumType" minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Error">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="ErrorCode" type="xs:int"/>
                            <xs:element name="ErrorDescription" type="xs:string"/>
                            <xs:element name="HelpFile" type="xs:string" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="AlbumType">
        <xs:sequence>
            <xs:element name="AlbumName" type="xs:string"/>
            <xs:element name="ArtistName" type="xs:string"/>
            <xs:element name="Track" type="TrackType" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="Label" type="xs:string" use="required"/>
        <xs:attribute name="RRP" type="xs:double"/>
        <xs:attribute name="ProductCode" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:length value="15"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="CompactDiskType">
        <xs:sequence>
            <xs:element name="Title" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TrackType">
        <xs:sequence>
            <xs:element name="Title" type="xs:string"/>
            <xs:element name="Length" type="xs:duration"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>