<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.bankitalia.it/bolina/common/vo/cube" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:bdi="http://www.bankitalia.it/bolina/common/vo/cube" 
           elementFormDefault="qualified">
    
    <xs:complexType name="ObservationType">
    	<xs:sequence>
    		<xs:element name="dim" type="bdi:DimensionType"
    			minOccurs="1" maxOccurs="unbounded">
    		</xs:element>
    	</xs:sequence>
    	<xs:attribute name="id" type="xs:string" use="optional"></xs:attribute>
    	<xs:attribute name="modified" type="xs:boolean"
    		use="optional">
    	</xs:attribute>
    	<xs:attribute name="error" type="xs:boolean" use="optional"></xs:attribute>
    	<xs:attribute name="errorCode" type="xs:string"
    		use="optional">
    	</xs:attribute>
    	<xs:attribute name="rowSelected" type="xs:boolean"></xs:attribute>
    </xs:complexType>


    <xs:complexType name="DimensionType">
    	<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
    	<xs:attribute name="value" type="xs:string" use="required"></xs:attribute>
    	<xs:attribute name="descr" type="xs:string" use="optional"></xs:attribute>
    	<xs:attribute name="errCode" type="xs:int" use="optional"></xs:attribute>
    	<xs:attribute name="errDescr" type="xs:string" use="optional"></xs:attribute>
    </xs:complexType>

	
    <xs:complexType name="SegmentType">
        <xs:sequence><xs:element name="cube" type="bdi:CubeType" maxOccurs="unbounded" minOccurs="1">
    		</xs:element>
    	</xs:sequence>
    	<xs:attribute name="id">
    		<xs:simpleType>
    			<xs:restriction base="xs:string">
    				<xs:enumeration value="OBSERVATION"></xs:enumeration>
    				<xs:enumeration value="DELETE"></xs:enumeration>
    				<xs:enumeration value="INSERT"></xs:enumeration>
    				<xs:enumeration value="PARTIAL_KEY_DELETE"></xs:enumeration>
    			</xs:restriction>
    		</xs:simpleType>
    	</xs:attribute>
    </xs:complexType>
	
	
    <xs:complexType name="CubeType">
    	<xs:sequence>
    		<xs:annotation>
    			<xs:documentation>
    				In dims and obs elements some dimension name could
    				be equal!
    			</xs:documentation>
    			<xs:documentation>
    				Remember to verify the uniqueness when you parse a
    				document compliant with this schema!
    			</xs:documentation>
    		</xs:annotation>    		<xs:element name="dim" type="bdi:DimensionType"
    			minOccurs="0" maxOccurs="unbounded">
    		</xs:element>
    		<xs:element name="obs" type="bdi:ObservationType"
    			minOccurs="1" maxOccurs="unbounded">
    		</xs:element>
    	</xs:sequence>
    	<xs:attribute name="id" type="xs:string"></xs:attribute>
    	<xs:attribute name="lastObsId" type="xs:string" use="optional"></xs:attribute>
    </xs:complexType>

    <xs:element name="cubes" type="bdi:CubeListType"></xs:element>

    <xs:complexType name="CubeListType">
    	<xs:sequence>
    		<xs:element name="dim" type="bdi:DimensionType" minOccurs="0" maxOccurs="unbounded"></xs:element>
    		<xs:element name="cube" type="bdi:CubeType" minOccurs="1"
    			maxOccurs="unbounded">
    		</xs:element>
    	</xs:sequence>
    </xs:complexType>

    <xs:element name="cube" type="bdi:CubeType"></xs:element>

    <xs:element name="obs" type="bdi:ObservationType"></xs:element>
</xs:schema>