<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!--	
************************************************************************
COMPLEX TYPES 

AIIInstrumentIdentificationType
	Updated for version 2.1
	Composed by six (6) mandatory fields:
			AIIExchangeCode,AIIProductCode,AIIDerivativeType,
			AIIPutCallIdentifier,AIIExpiryDate,AIIStrikePrice

TradingTimeCompleteDescriptionType: The time at which the 
	transaction was executed. Also, the base in which the transaction 
    is reported (+/-hours).

UnitPriceCompleteDescriptionType: The price per security or derivative 
	contract excluding commission and (where relevant) accrued interest. 
	In the case of a debt instrument, the price may be expressed either in 
	terms of a currency or as a percentage.

ClientCompleteDescriptionType: The element can be an 
	ISO 9362 SWIFT/Bank Identifier Code (BIC) or a customer 
	Internal Identification.

CounterpartyCompleteDescriptionType: Authorities must use the full 11 
	character BIC code to identify the counterparties wherever possible.
	If the counterparty is a regulated market, an MTF or a central counterparty 
	and the reporting party does not know its counterparty, this field should be 
	populated with the MIC code of the trading venue. When the counterparty is 
	not an investment firm, a regulated market, an MTF or entity acting as a 
	central counterparty, it should be identified as ‘customer/client’. 

CounterPartyIdentificationCustomerType: Internal Code 
	in case of ‘customer/client’.

TradingVenueCodeCompleteDescriptionType: Identification of the 
	venue where the transaction was executed. It shall consist in:
	- If the venue is a systematic internaliser, the ISO 9362 BIC 
	code of the investment firm running the system.
	- where the venue is a MTF or regulated market, the ISO 
	  10383 MIC code.
	- off market transactions should use the code 'XOFF'

************************************************************************
-->
	<xs:complexType name="TradingTimeCompleteDescriptionType">
		<xs:sequence>
			<xs:element name="TradingTime" type="xs:time">
				<xs:annotation>
					<xs:documentation>Must be a valid ISO 8601 extended  time value. Format:
HH:mm:SS = HH = Hour; mm = minute; SS = second;</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TimeIdentifier" type="TimeIdentifierType">
				<xs:annotation>
					<xs:documentation>Must be a valid ISO 8601 time zone offset.
+/-HH. Max 12 hours.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="UnitPriceCompleteDescriptionType">
		<xs:choice>
			<xs:element name="PriceCurrency" type="PriceType"/>
			<xs:element name="PricePercentage" type="PriceType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="AIIInstrumentIdentificationType">
		<xs:sequence>
			<xs:element name="AIIExchangeCode" type="AIIExchangeCodeType"/>
			<xs:element name="AIIProductCode" type="AIIProductCodeType"/>
			<xs:element name="AIIDerivativeType" type="AIIDerivativeTypeType"/>
			<xs:element name="AIIPutCallIdentifier" type="AIIPutCallIdentifierType"/>
			<xs:element name="AIIExpiryDate" type="xs:date"/>
			<xs:element name="AIIStrikePrice" type="AIIStrikePriceType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ClientCompleteDescriptionType">
		<xs:choice>
			<xs:element name="ClientBIC" type="FirmIdentificationBICType"/>
			<xs:element name="ClientInternal" type="IdentificationInternalType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CounterpartyCompleteDescriptionType">
		<xs:choice>
			<xs:element name="CounterpartyIdentificationBIC" type="FirmIdentificationBICType"/>
			<xs:element name="CounterpartyIdentificationMIC" type="IdentificationMICType"/>
			<xs:element name="CounterpartyIdentificationCustomer" type="CounterpartyIdentificationCustomerType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="CounterpartyIdentificationCustomerType">
		<xs:sequence>
			<xs:element name="CounterpartyIdentificationCustomerInternal" type="IdentificationInternalType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TradingVenueCodeCompleteDescriptionType">
		<xs:choice>
			<xs:element name="TradingVenueCodeBIC" type="FirmIdentificationBICType"/>
			<xs:element name="TradingVenueCodeMIC" type="IdentificationMICType"/>
			<xs:element name="TradingVenueCodeXOFF" type="TradingVenueCodeXOFFType"/>
		</xs:choice>
	</xs:complexType>
	<!--	
************************************************************************
SIMPLE TYPES

InstrumentIdentificationType:
	ISO 6166 - International Securities
	Identification Number (ISIN). Format: 2 alpha characters followed 
	by 9 alphanumeric characters and 1 digit (control). 

AIIExchangeCode
	Updated for version 2.1
	Identification of the regulated market that admits the derivative to trading.

AIIProductCode
	Updated for version 2.1
	Code maintained by the derivative exchanges. Between 1 and 12 characters in length.

AIIDerivativeType
	Updated for version 2.1
	Single character identifying whether the instrument is an option or a future.

AIIPutCallIdentifier
	Updated for version 2.1
	Single character identifying whether it is a put or a call 
	(NOTE: This field should be filled with “F” in case the derivative type is a future)

AIIExpiryDate
	Updated for version 2.1
	Exercise date/maturity date of a derivative contract.

AIIStrikePrice
	Updated for version 2.1
	The strike price of an option or other financial instrument.

FirmIdentificationBICType: ISO 9362 - SWIFT/Bank Identifier 
	Code (BIC). Format: 11 alphanumeric characters.

TimeIdentifierType: ISO 8601 Time Zone Offset. Format: SHH 
	max 12 h, where S is the sign (+ or -) and HH the number of hours.

BuySellIndicatorType: Identifies whether the transaction was a 
	buy or sell from the perspective of the reporting investment 
	firm or from the perspective of the client.

TradingCapacityType: Identifies whether the firm executed the 
	transaction on its own account (either on its own behalf or 
	on behalf of a client) or for the account on behalf of a client.
	Format: P: Principal or A: Agent

PriceType: the unit price of a security expressed as the price 
	Updated for version 2.1
	of one derivative contract in case of derivatives on securities or the 
	price of the derivative expressed in the currency. Format: A maximum 
	of 19 digits (5 of them can be decimals numbers). Zero and positive values are allowed.

PriceNotationType: ISO 4217 - Currency Code. Format: 3 alpha
	characters

QuantityType: The number of units of the financial instrument, the 
	number of units of the nominal value of bonds, or the number of derivative contracts included in the transaction. Format: A maximum of 19 digits 
	(5 of them can be decimals numbers).

IdentificationInternalType:  Internal Acronym/Code.
	Format: a maximum of 40 alphanumeric characters.

IdentificationMICType: ISO 10383 - Market Identifier 
	Code (MIC). Format: 4 alphanumeric characters.

TradingVenueCodeXOFFType: Off the Market. Format: 4 
	alphanumeric characters 'XOFF'.

TransactionReferenceNumberType: A unique identification number 
	for the transaction provided by the investment firm or a third party 
	reporting on its behalf. Format: a maximum of 40 alphanumeric characters.


AuthorityKey: Investment Firm code supplied by CYSEC alpha-2. Length: 2 characters.

************************************************************************
-->
	<xs:simpleType name="FirmIdentificationBICType">
		<xs:annotation>
			<xs:documentation>ISO 9362 - SWIFT/Bank Identifier Code (BIC). Format: 11(x)</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="([A-Z]|[0-9]){11}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TimeIdentifierType">
		<xs:annotation>
			<xs:documentation>ISO 8601 Time Zone Offset Format:SHH max 12 h</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="[-|+](0[0-9]|1[0-2])"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="BuySellIndicatorType">
		<xs:annotation>
			<xs:documentation>
			B: Buy  
			S: Sell
				</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="B|S"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TradingCapacityType">
		<xs:annotation>
			<xs:documentation>
			P: Principal
			A: Agent
				</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="P|A"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="InstrumentIdentificationType">
		<xs:annotation>
			<xs:documentation> ISO 6166 ISIN.  Format:  2(a)9(x)1(n) </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="[A-Z]{2}([A-Z]|[0-9]){9}[0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PriceType">
		<xs:annotation>
			<xs:documentation>Format: Max 19(d) and max 5 decimals numbers. 
				Restriction not to allow negative values </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="19"/>
			<xs:fractionDigits value="5"/>
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PriceNotationType">
		<xs:annotation>
			<xs:documentation>ISO 4217 - Currency Code </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="[A-Z]{3}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="QuantityType">
		<xs:annotation>
			<xs:documentation>Format: Max 19(d) and max of 5 decimals numbers </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="19"/>
			<xs:fractionDigits value="5"/>
			<xs:minExclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IdentificationInternalType">
		<xs:annotation>
			<xs:documentation> Internal Acronym/Code - Format: Max40(x) </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="40"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IdentificationMICType">
		<xs:annotation>
			<xs:documentation> ISO 10383 MIC - Format 4(x) </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="([A-Z]|[0-9]){4}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TradingVenueCodeXOFFType">
		<xs:annotation>
			<xs:documentation>XOFF: Off the Market</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="XOFF"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TransactionReferenceNumberType">
		<xs:annotation>
			<xs:documentation>Provided by the investment firm or a third party reporting on its behalf. - Format Max40(x)</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="40"/>
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AuthorityKeyType">
		<xs:annotation>
			<xs:documentation> Investment Firm code supplied by CYSEC alpha-2 </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="[A-Z]{2}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AIIExchangeCodeType">
		<xs:annotation>
			<xs:documentation> ISO 10383 MIC - Format 4(x) </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="([A-Z]|[0-9]){4}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AIIProductCodeType">
		<xs:annotation>
			<xs:documentation> AII product code type - Format: Max12(x) </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="12"/>
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="([A-Z]|[0-9])*"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AIIDerivativeTypeType">
		<xs:annotation>
			<xs:documentation>
			O: Option  
			F: Future
				</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="O|F"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AIIPutCallIdentifierType">
		<xs:annotation>
			<xs:documentation>
			P: Put  
			C: Call
			F: Future
				</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="P|C|F"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AIIStrikePriceType">
		<xs:annotation>
			<xs:documentation>Format: Max 19(d) and max 5 decimals numbers. Negative values are not allowed </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="19"/>
			<xs:fractionDigits value="5"/>
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

