<?xml version="1.0" encoding="utf-8"?>
<definitions targetNamespace="urn:alanbushtrust-org-uk:soap.methods"
				xmlns:s0="urn:alanbushtrust-org-uk:soap.methods" 
				xmlns:s1="urn:alanbushtrust-org-uk:schemas.objects" 
				xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
				xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
				xmlns:s="http://www.w3.org/2001/XMLSchema" 				
				xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"  				 
				xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema elementFormDefault="qualified" targetNamespace="urn:alanbushtrust-org-uk:soap.methods">
      <s:import namespace="urn:alanbushtrust-org-uk:schemas.objects" />
      <s:element name="GetCategories">
        <s:complexType />
      </s:element>
      <s:element name="GetCategoriesResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" ref="s1:categories" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetCompositions">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="category-id" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetCompositionsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" ref="s1:compositions" />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
    <s:schema elementFormDefault="qualified" targetNamespace="urn:alanbushtrust-org-uk:schemas.objects">
      <s:element name="categories" type="s1:categories-type"/>
      <s:complexType  name="categories-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="unbounded" name="category" type="s1:category-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="category-type">
        <s:simpleContent>
          <s:extension base="s:string">
            <s:attribute name="id" type="s1:category-id-type" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:simpleType name="category-id-type">
        <s:restriction base="s:string">
          <s:enumeration value="All" />
          <s:enumeration value="BA" />
          <s:enumeration value="BB" />
          <s:enumeration value="CC" />
          <s:enumeration value="CH" />
          <s:enumeration value="CM" />
          <s:enumeration value="CO" />
          <s:enumeration value="FM" />
          <s:enumeration value="IN" />
          <s:enumeration value="OG" />
          <s:enumeration value="OP" />
          <s:enumeration value="OR" />
          <s:enumeration value="PA" />
          <s:enumeration value="PN" />
          <s:enumeration value="SS" />
          <s:enumeration value="WS" />
        </s:restriction>
      </s:simpleType>
      <s:element name="compositions" type="s1:compositions-type"/>
      <s:complexType name="compositions-type">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="composition" type="s1:composition-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="composition-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="title" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="description" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="year" type="s:int" />
          <s:element minOccurs="0" maxOccurs="1" name="opus" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="instrumentation" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="duration-minutes" type="s:int" />
          <s:element minOccurs="0" maxOccurs="1" name="text-authors" type="s1:text-authors-type" />
          <s:element minOccurs="0" maxOccurs="1" name="notes" type="s1:notes-type" />
          <s:element minOccurs="0" maxOccurs="1" name="performance-notes" type="s1:performance-notes-type" />
          <s:element minOccurs="0" maxOccurs="1" name="publications" type="s1:publications-type" />
          <s:element minOccurs="0" maxOccurs="1" name="recordings" type="s1:recordings-type" />
        </s:sequence>
        <s:attribute name="id" type="s:int" />
        <s:attribute name="category-id" type="s1:category-id-type" />
        <s:attribute name="category" type="s:string" />
        <s:attribute name="commentary" type="s1:yes-no-type" />
      </s:complexType>
      <s:complexType name="text-authors-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="unbounded" name="text-author" type="s1:text-author-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="text-author-type">
        <s:simpleContent>
          <s:extension base="s:string">
            <s:attribute name="id" type="s:int" />
          </s:extension>
        </s:simpleContent>
      </s:complexType>
      <s:complexType name="notes-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="unbounded" name="note" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="performance-notes-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="unbounded" name="performance-note" type="s1:performance-note-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="performance-note-type">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="heading" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="performance" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="publications-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="unbounded" name="publication" type="s1:publication-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="publication-type">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="publication-year" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="publisher" type="s1:minimal-details-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="minimal-details-type">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="name" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="town" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="country" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="url" type="s:string" />
        </s:sequence>
        <s:attribute name="id" type="s:int" />
      </s:complexType>
      <s:complexType name="recordings-type">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="unbounded" name="recording" type="s1:recording-type" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="recording-type">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="title" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="format" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="year" type="s:int" />
          <s:element minOccurs="0" maxOccurs="1" name="catalog-no" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="purchase-url" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="record-company" type="s1:minimal-details-type" />
        </s:sequence>
        <s:attribute name="id" type="s:int" />
      </s:complexType>
      <s:simpleType name="yes-no-type">
        <s:restriction base="s:string">
          <s:enumeration value="yes" />
          <s:enumeration value="no" />
        </s:restriction>
      </s:simpleType>
    </s:schema>
  </types>
  <message name="GetCategoriesSoapIn">
    <part name="parameters" element="s0:GetCategories" />
  </message>
  <message name="GetCategoriesSoapOut">
    <part name="parameters" element="s0:GetCategoriesResponse" />
  </message>
  <message name="GetCompositionsSoapIn">
    <part name="parameters" element="s0:GetCompositions" />
  </message>
  <message name="GetCompositionsSoapOut">
    <part name="parameters" element="s0:GetCompositionsResponse" />
  </message>
  <portType name="AlanBushCompositionsPortType">
    <operation name="GetCategories">
      <documentation>Returns the composition categories.</documentation>
      <input message="s0:GetCategoriesSoapIn" />
      <output message="s0:GetCategoriesSoapOut" />
    </operation>
    <operation name="GetCompositions">
      <documentation>Returns the compositions for a given category.</documentation>
      <input message="s0:GetCompositionsSoapIn" />
      <output message="s0:GetCompositionsSoapOut" />
    </operation>
  </portType>
  <binding name="AlanBushCompositionsSoapBinding" type="s0:AlanBushCompositionsPortType">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    <operation name="GetCategories">
      <soap:operation soapAction="urn:alanbushtrust-org-uk:soap.methods.GetCategories" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="GetCompositions">
      <soap:operation soapAction="urn:alanbushtrust-org-uk:soap.methods.GetCompositions" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
  </binding>
  <service name="AlanBushCompositions">
    <port name="AlanBushCompositionsPort" binding="s0:AlanBushCompositionsSoapBinding">
      <soap:address location="http://www.alanbushtrust.org.uk/soap/compositions.asp" />
    </port>
  </service>
</definitions>