<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:bicws="http://www.bic.org.uk/webservices" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.bic.org.uk/webservices" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="ONIXProductInformationRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Header" type="bicws:ProductInformationRequestHeader"/>
				<xs:element name="Product" type="bicws:ProductInformationRequestProduct" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="version" type="xs:string" use="required" fixed="1.0"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ONIXProductInformationResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Header" type="bicws:ProductInformationResponseHeader"/>
				<xs:element name="ONIXProductInformationRecord" type="bicws:ProductInformationResponseProduct" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="version" type="xs:string" use="required" fixed="1.0"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="AccountIdentifier">
		<xs:sequence>
			<xs:element name="AccountIDType" type="bicws:AccountIDTypeCode"/>
			<xs:element name="IDValue" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="HeaderReferenceCoded">
		<xs:sequence>
			<xs:element name="ReferenceTypeCode" type="bicws:ResponseReferenceTypeCode"/>
			<xs:element name="ReferenceNumber" type="xs:string"/>
			<xs:element name="ReferenceDateTime" type="bicws:DateOrDateTime" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="HeaderResponseCoded">
		<xs:sequence>
			<xs:element name="ResponseType" type="bicws:HeaderResponseTypeCode"/>
			<xs:element name="ResponseTypeDescription" type="xs:string" minOccurs="0"/>
			<xs:element name="SearchResultID" type="xs:string" minOccurs="0"/>
			<xs:element name="ResponsePageNumber" type="xs:int" minOccurs="0"/>
			<xs:element name="TotalPages" type="xs:int" minOccurs="0"/>
			<xs:element name="RecordsInPage" type="xs:int" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ProductIdentifier">
		<xs:sequence>
			<xs:element name="ProductIDType" type="bicws:ProductIDTypeCode"/>
			<xs:element name="IDTypeName" type="xs:string" minOccurs="0"/>
			<xs:element name="IDValue" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ProductInformationRequestHeader">
		<xs:sequence>
			<xs:element name="ClientID" type="xs:string"/>
			<xs:element name="ClientPassword" type="xs:string"/>
			<xs:element name="AccountIdentifier" type="bicws:AccountIdentifier" minOccurs="0"/>
			<xs:element name="RequestNumber" type="xs:string" minOccurs="0"/>
			<xs:element name="IssueDateTime" type="bicws:DateOrDateTime" minOccurs="0"/>
			<xs:element name="ONIXRecordFormat" type="bicws:ONIXRecordFormatCode"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ProductInformationRequestProduct">
		<xs:choice>
			<xs:sequence>
				<xs:element name="EAN13" type="xs:string"/>
				<xs:element name="ProductIdentifier" type="bicws:ProductIdentifier" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:element name="ProductIdentifier" type="bicws:ProductIdentifier" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="ProductInformationResponseHeader">
		<xs:sequence>
			<xs:element name="IssueDateTime" type="bicws:DateOrDateTime"/>
			<xs:element name="SenderIdentifier">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="SenderIDType" type="bicws:SenderIDTypeCode"/>
						<xs:element name="IDTypeName" type="xs:string" minOccurs="0"/>
						<xs:element name="IDValue" type="xs:string"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="ResponseNumber" type="xs:string" minOccurs="0"/>
			<xs:element name="AccountIdentifier" type="bicws:AccountIdentifier" minOccurs="0"/>
			<xs:choice minOccurs="0">
				<xs:element name="ReferenceCoded" type="bicws:ReferenceCoded" maxOccurs="unbounded"/>
				<xs:element name="ReferenceDateTime" type="bicws:DateOrDateTime"/>
			</xs:choice>
			<xs:element name="CurrencyCode" type="bicws:CurrencyCode" minOccurs="0"/>
			<xs:element name="ResponseCoded" type="bicws:HeaderResponseCoded" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="RecordType" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="RecordTypeCode" type="bicws:ONIXRecordTypeCode"/>
						<xs:element name="RecordTypeDescription" type="xs:string" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="ONIXRecordFormat" type="bicws:ONIXRecordFormatCode" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ProductInformationResponseProduct">
		<xs:sequence>
			<xs:element name="EAN13" type="xs:string" minOccurs="0"/>
			<xs:element name="ProductIdentifier" type="bicws:ProductIdentifier" minOccurs="0" maxOccurs="unbounded"/>
			<xs:choice>
				<xs:element name="ResponseCoded" type="bicws:ProductResponseCoded"/>
				<xs:element name="Record">
					<xs:complexType>
						<xs:choice maxOccurs="unbounded">
							<xs:any namespace="##any" processContents="lax"/>
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ProductResponseCoded">
		<xs:sequence>
			<xs:element name="ResponseType" type="bicws:ProductResponseTypeCode"/>
			<xs:element name="ResponseTypeDescription" type="xs:string" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ReferenceCoded">
		<xs:sequence>
			<xs:element name="ReferenceTypeCode" type="bicws:ResponseReferenceTypeCode"/>
			<xs:element name="ReferenceNumber" type="xs:string"/>
			<xs:element name="ReferenceDateTime" type="bicws:DateOrDateTime" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="AccountIDTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="02"/>
			<xs:enumeration value="06"/>
			<xs:enumeration value="07"/>
			<xs:enumeration value="11"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="CurrencyCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="AED"/>
			<xs:enumeration value="AFA"/>
			<xs:enumeration value="AFN"/>
			<xs:enumeration value="ALL"/>
			<xs:enumeration value="AMD"/>
			<xs:enumeration value="ANG"/>
			<xs:enumeration value="AOA"/>
			<xs:enumeration value="ARS"/>
			<xs:enumeration value="AUD"/>
			<xs:enumeration value="AWG"/>
			<xs:enumeration value="AZM"/>
			<xs:enumeration value="BAM"/>
			<xs:enumeration value="BBD"/>
			<xs:enumeration value="BDT"/>
			<xs:enumeration value="BGL"/>
			<xs:enumeration value="BGN"/>
			<xs:enumeration value="BHD"/>
			<xs:enumeration value="BIF"/>
			<xs:enumeration value="BMD"/>
			<xs:enumeration value="BND"/>
			<xs:enumeration value="BOB"/>
			<xs:enumeration value="BRL"/>
			<xs:enumeration value="BSD"/>
			<xs:enumeration value="BTN"/>
			<xs:enumeration value="BWP"/>
			<xs:enumeration value="BYR"/>
			<xs:enumeration value="BZD"/>
			<xs:enumeration value="CAD"/>
			<xs:enumeration value="CDF"/>
			<xs:enumeration value="CHF"/>
			<xs:enumeration value="CLP"/>
			<xs:enumeration value="CNY"/>
			<xs:enumeration value="COP"/>
			<xs:enumeration value="CRC"/>
			<xs:enumeration value="CSD"/>
			<xs:enumeration value="CUC"/>
			<xs:enumeration value="CUP"/>
			<xs:enumeration value="CVE"/>
			<xs:enumeration value="CYP"/>
			<xs:enumeration value="CZK"/>
			<xs:enumeration value="DJF"/>
			<xs:enumeration value="DKK"/>
			<xs:enumeration value="DOP"/>
			<xs:enumeration value="DZD"/>
			<xs:enumeration value="EEK"/>
			<xs:enumeration value="EGP"/>
			<xs:enumeration value="ERN"/>
			<xs:enumeration value="ETB"/>
			<xs:enumeration value="EUR"/>
			<xs:enumeration value="FJD"/>
			<xs:enumeration value="FKP"/>
			<xs:enumeration value="GBP"/>
			<xs:enumeration value="GEL"/>
			<xs:enumeration value="GHC"/>
			<xs:enumeration value="GIP"/>
			<xs:enumeration value="GMD"/>
			<xs:enumeration value="GNF"/>
			<xs:enumeration value="GTQ"/>
			<xs:enumeration value="GWP"/>
			<xs:enumeration value="GYD"/>
			<xs:enumeration value="HKD"/>
			<xs:enumeration value="HNL"/>
			<xs:enumeration value="HRK"/>
			<xs:enumeration value="HTG"/>
			<xs:enumeration value="HUF"/>
			<xs:enumeration value="IDR"/>
			<xs:enumeration value="ILS"/>
			<xs:enumeration value="INR"/>
			<xs:enumeration value="IQD"/>
			<xs:enumeration value="IRR"/>
			<xs:enumeration value="ISK"/>
			<xs:enumeration value="JMD"/>
			<xs:enumeration value="JOD"/>
			<xs:enumeration value="JPY"/>
			<xs:enumeration value="KES"/>
			<xs:enumeration value="KGS"/>
			<xs:enumeration value="KHR"/>
			<xs:enumeration value="KMF"/>
			<xs:enumeration value="KPW"/>
			<xs:enumeration value="KRW"/>
			<xs:enumeration value="KWD"/>
			<xs:enumeration value="KYD"/>
			<xs:enumeration value="KZT"/>
			<xs:enumeration value="LAK"/>
			<xs:enumeration value="LBP"/>
			<xs:enumeration value="LKR"/>
			<xs:enumeration value="LRD"/>
			<xs:enumeration value="LSL"/>
			<xs:enumeration value="LTL"/>
			<xs:enumeration value="LVL"/>
			<xs:enumeration value="LYD"/>
			<xs:enumeration value="MAD"/>
			<xs:enumeration value="MDL"/>
			<xs:enumeration value="MGA"/>
			<xs:enumeration value="MGF"/>
			<xs:enumeration value="MKD"/>
			<xs:enumeration value="MMK"/>
			<xs:enumeration value="MNT"/>
			<xs:enumeration value="MOP"/>
			<xs:enumeration value="MRO"/>
			<xs:enumeration value="MTL"/>
			<xs:enumeration value="MUR"/>
			<xs:enumeration value="MVR"/>
			<xs:enumeration value="MWK"/>
			<xs:enumeration value="MXN"/>
			<xs:enumeration value="MYR"/>
			<xs:enumeration value="MZM"/>
			<xs:enumeration value="NAD"/>
			<xs:enumeration value="NGN"/>
			<xs:enumeration value="NIO"/>
			<xs:enumeration value="NOK"/>
			<xs:enumeration value="NPR"/>
			<xs:enumeration value="NZD"/>
			<xs:enumeration value="OMR"/>
			<xs:enumeration value="PAB"/>
			<xs:enumeration value="PEN"/>
			<xs:enumeration value="PGK"/>
			<xs:enumeration value="PHP"/>
			<xs:enumeration value="PKR"/>
			<xs:enumeration value="PLN"/>
			<xs:enumeration value="PYG"/>
			<xs:enumeration value="QAR"/>
			<xs:enumeration value="ROL"/>
			<xs:enumeration value="RUB"/>
			<xs:enumeration value="RUR"/>
			<xs:enumeration value="RWF"/>
			<xs:enumeration value="SAR"/>
			<xs:enumeration value="SBD"/>
			<xs:enumeration value="SCR"/>
			<xs:enumeration value="SDD"/>
			<xs:enumeration value="SEK"/>
			<xs:enumeration value="SGD"/>
			<xs:enumeration value="SHP"/>
			<xs:enumeration value="SIT"/>
			<xs:enumeration value="SKK"/>
			<xs:enumeration value="SLL"/>
			<xs:enumeration value="SOS"/>
			<xs:enumeration value="SRD"/>
			<xs:enumeration value="SRG"/>
			<xs:enumeration value="STD"/>
			<xs:enumeration value="SVC"/>
			<xs:enumeration value="SYP"/>
			<xs:enumeration value="SZL"/>
			<xs:enumeration value="THB"/>
			<xs:enumeration value="TJS"/>
			<xs:enumeration value="TMM"/>
			<xs:enumeration value="TND"/>
			<xs:enumeration value="TOP"/>
			<xs:enumeration value="TPE"/>
			<xs:enumeration value="TRL"/>
			<xs:enumeration value="TRY"/>
			<xs:enumeration value="TTD"/>
			<xs:enumeration value="TWD"/>
			<xs:enumeration value="TZS"/>
			<xs:enumeration value="UAH"/>
			<xs:enumeration value="UGX"/>
			<xs:enumeration value="USD"/>
			<xs:enumeration value="UYU"/>
			<xs:enumeration value="UZS"/>
			<xs:enumeration value="VEB"/>
			<xs:enumeration value="VND"/>
			<xs:enumeration value="VUV"/>
			<xs:enumeration value="WST"/>
			<xs:enumeration value="XAF"/>
			<xs:enumeration value="XCD"/>
			<xs:enumeration value="XOF"/>
			<xs:enumeration value="XPF"/>
			<xs:enumeration value="YER"/>
			<xs:enumeration value="YUM"/>
			<xs:enumeration value="ZAR"/>
			<xs:enumeration value="ZMK"/>
			<xs:enumeration value="ZWD"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DateOrDateTime">
		<xs:restriction base="xs:string">
			<xs:pattern value="2\d\d\d(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-8])(T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9])?(Z|[+\-](0[0-9]|1[0-2])(00|15|30|45))?)?"/>
			<xs:pattern value="200[048]0229(T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9])?(Z|[+\-](0[0-9]|1[0-2])(00|15|30|45))?)?"/>
			<xs:pattern value="2[1-9]0[48]0229(T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9])?(Z|[+\-](0[0-9]|1[0-2])(00|15|30|45))?)?"/>
			<xs:pattern value="2\d([2468][048]|[13579][26])0229(T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9])?(Z|[+\-](0[0-9]|1[0-2])(00|15|30|45))?)?"/>
			<xs:pattern value="2\d\d\d(0[13-9]|1[0-2])(29|30)(T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9])?(Z|[+\-](0[0-9]|1[0-2])(00|15|30|45))?)?"/>
			<xs:pattern value="2\d\d\d(0[13578]|1[02])31(T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9])?(Z|[+\-](0[0-9]|1[0-2])(00|15|30|45))?)?"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="HeaderResponseTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="01"/>
			<xs:enumeration value="02"/>
			<xs:enumeration value="03"/>
			<xs:enumeration value="08"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ONIXRecordFormatCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="01"/>
			<xs:enumeration value="02"/>
			<xs:enumeration value="03"/>
			<xs:enumeration value="04"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ONIXRecordTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="00"/>
			<xs:enumeration value="01"/>
			<xs:enumeration value="02"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ProductIDTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="01"/>
			<xs:enumeration value="03"/>
			<xs:enumeration value="04"/>
			<xs:enumeration value="05"/>
			<xs:enumeration value="06"/>
			<xs:enumeration value="13"/>
			<xs:enumeration value="14"/>
			<xs:enumeration value="15"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ProductResponseTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="06"/>
			<xs:enumeration value="07"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ResponseReferenceTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="01"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="SenderIDTypeCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="02"/>
			<xs:enumeration value="04"/>
			<xs:enumeration value="05"/>
			<xs:enumeration value="06"/>
			<xs:enumeration value="07"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
