<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.cga.pt" xmlns="http://www.cga.pt" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

<xs:element name="entidade">
 <xs:complexType>
    <xs:sequence>

	<xs:element name="codigo">
	  <xs:simpleType>
	    <xs:restriction base="xs:positiveInteger">
	      <xs:totalDigits value="9"/>
	    </xs:restriction>
	  </xs:simpleType>
	</xs:element>

	<xs:element name="nome">
	  <xs:simpleType>
	    <xs:restriction base="xs:token">
	      <xs:minLength value="1"/>
	      <xs:maxLength value="60"/>
	    </xs:restriction>
	  </xs:simpleType>
	</xs:element>
	
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="total">
 <xs:complexType>
    <xs:sequence>
	
		<xs:element name="debito" default="0.00">
		  <xs:simpleType>
		    <xs:restriction base="xs:decimal">
		      <xs:totalDigits value="16"/>
		      <xs:fractionDigits value="2"/>			  
		    </xs:restriction>
		  </xs:simpleType>
		</xs:element>

		<xs:element name="credito" default="0.00">
		  <xs:simpleType>
		    <xs:restriction base="xs:decimal">
		      <xs:totalDigits value="16"/>
		      <xs:fractionDigits value="2"/>			  
		    </xs:restriction>
		  </xs:simpleType>
		</xs:element>
	
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:attributeGroup name="natureza">
<xs:attribute name="natureza" use="required">
  <xs:simpleType>
	<xs:restriction base="xs:string">
	  <xs:enumeration value="D"/>
	  <xs:enumeration value="C"/>		      
	</xs:restriction>
  </xs:simpleType>
</xs:attribute>
</xs:attributeGroup>

 <xs:simpleType name="valor_base">
	<xs:restriction base="xs:decimal">
	  <xs:totalDigits value="16"/>
	  <xs:fractionDigits value="2"/>
	</xs:restriction>
 </xs:simpleType>

<xs:element name="valor"> 
 <xs:complexType>
	<xs:simpleContent>
		<xs:extension base="valor_base">
			<xs:attributeGroup ref="natureza"/>							
		</xs:extension>
	</xs:simpleContent>
 </xs:complexType>
</xs:element>

<xs:element name="documento">
 <xs:complexType>
    <xs:sequence>
	
		<xs:element name="referencia">
		  <xs:simpleType>
		    <xs:restriction base="xs:string">
		      <xs:length value="9"/>
		    </xs:restriction>
		  </xs:simpleType>
		</xs:element>
		
		<xs:element name="data_emissao" type="xs:date"/>
		<xs:element name="data_pagamento" type="xs:date"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="movimento_subgrupo">
 <xs:complexType>
    <xs:sequence>
		<xs:element name="mes_referencia" type="xs:date"/>
		
		<xs:element name="descricao">
		  <xs:simpleType>
		    <xs:restriction base="xs:string">
		      <xs:minLength value="1"/>
			  <xs:maxLength value="50"/>
		    </xs:restriction>
		  </xs:simpleType>
		</xs:element>
				
		<xs:element ref="valor"/>
		
		<xs:element name="justificativo">
		  <xs:simpleType>
		    <xs:restriction base="xs:string">
		      <xs:enumeration value="S"/>
		      <xs:enumeration value="N"/>		      
		    </xs:restriction>
		  </xs:simpleType>
		</xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="movimento_grupo">
 <xs:complexType>
    <xs:sequence>
	
		<xs:element name="descricao">
		  <xs:simpleType>
			<xs:restriction base="xs:string">
			  <xs:minLength value="1"/>
			  <xs:maxLength value="50"/>
			</xs:restriction>
		  </xs:simpleType>
		</xs:element>

	  <xs:element name="mes_extracto" type="xs:date"/>
	  <xs:element ref="valor"/>
	  <xs:element ref="documento"/>
	  <xs:element ref="movimento_subgrupo" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:attributeGroup name="versao">
 <xs:attribute name="versao" use="required">
 <xs:simpleType>
	<xs:restriction base="xs:string">
	  <xs:enumeration value="1.0"/>	      
	</xs:restriction>
 </xs:simpleType> 
  </xs:attribute> 
</xs:attributeGroup>

<xs:element name="extracto_mensal" block="substitution">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="mes_extracto" type="xs:date"/>
      <xs:element name="data_emissao" type="xs:date"/>
      <xs:element ref="entidade"/>
	  <xs:element ref="movimento_grupo" minOccurs="0" maxOccurs="unbounded"/>
	  <xs:element ref="total"/>
    </xs:sequence>
	<xs:attributeGroup ref="versao"/>	  	
  </xs:complexType>
</xs:element>

</xs:schema>
