<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
	<xs:element name="DenunceRetributiveMensili">
		<xs:annotation>
			<xs:documentation> Elemento radice. </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Software" type="SoftwareType" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="it"> Dati identificativi del prodotto software
							che ha generato il file XML. </xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Mittente" type="MittenteType" minOccurs="0">
					<xs:annotation>
						<xs:documentation xml:lang="it"> Dati identificativi del mittente.
						</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Azienda" type="AziendaType" maxOccurs="unbounded">
					<xs:key name="PK_Attivita">
						<xs:selector xpath="Attivita"/>
						<xs:field xpath="NumeroAttivita"/>
					</xs:key>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="version" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="1\.[0-2]"></xs:pattern>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
		<xs:key name="PK_Azienda">
			<xs:selector xpath="Azienda"/>
			<xs:field xpath="CodiceGruppo"/>
		</xs:key>
	</xs:element>
	<xs:complexType name="AziendaType">
		<xs:sequence>
			<xs:element name="CodiceGruppo">
				<xs:simpleType>
					<xs:annotation>
						<xs:documentation xml:lang="it"> Matricola ENPALS dell'azienda.
						</xs:documentation>
					</xs:annotation>
					<xs:restriction base="xs:string">
						<xs:length value="6"/>
						<xs:pattern value="[0-9]{6}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="CodiceFiscale" type="CodiceFiscaleType"/>
			<xs:element name="RagioneSociale">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Ragione sociale dell'Azienda.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="AllowedChars">
						<xs:minLength value="1"/>
						<xs:maxLength value="60"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Attivita" type="AttivitaType" maxOccurs="unbounded">
				<xs:key name="PK_Denuncia">
					<xs:selector xpath="Denuncia"/>
					<xs:field xpath="AnnoMeseDenuncia"/>
				</xs:key>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="AttivitaType">
		<xs:sequence>
			<xs:element name="NumeroAttivita">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Identificativo ENPALS dell'attivita'.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="3"/>
						<xs:pattern value="[0-9]{3}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Denominazione">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Denominazione dell'attivita'.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="AllowedChars">
						<xs:minLength value="1"/>
						<xs:maxLength value="60"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="CodiceCategoria">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Codice categoria dell'attivita'.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="3"/>
						<xs:pattern value="[0-9]{3}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Indirizzo" type="IndirizzoType" minOccurs="0"/>
			<xs:element name="Denuncia" type="DenunciaType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DenunciaType">
		<xs:sequence>
			<xs:element name="AnnoMeseDenuncia">
				<xs:simpleType>
					<xs:restriction base="xs:gYearMonth">
						<xs:minInclusive value="2008-01"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="TipoModello" fixed="N">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="1"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="DenunciaIndividuale" type="DenunciaIndividualeType"
				maxOccurs="unbounded"/>
			<xs:element name="CausaleExtracontributiva" type="CausaleExtracontributivaType"
				minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DenunciaIndividualeType">
		<xs:annotation>
			<xs:documentation xml:lang="it"> Dati della denuncia relativa a un singolo lavoratore.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="MatricolaLavoratore">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Matricola ENPALS del lavoratore.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="7"/>
						<xs:pattern value="[0-9]{7}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="CodiceFiscaleLavoratore" type="CFPersonaFisicaType">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Codice fiscale del lavoratore.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Cognome">
				<xs:simpleType>
					<xs:restriction base="AllowedChars">
						<xs:minLength value="1"/>
						<xs:maxLength value="24"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Nome">
				<xs:simpleType>
					<xs:restriction base="AllowedChars">
						<xs:minLength value="1"/>
						<xs:maxLength value="20"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="DataNascita" type="xs:date" minOccurs="0">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Data di nascita del lavoratore. Opzionale.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice minOccurs="0">
				<xs:element name="StatoEsteroNascita">
					<xs:annotation>
						<xs:documentation xml:lang="it"> Codice relativo allo stato estero di
							nascita del lavoratore. Da indicare solo per i lavoratori nati
							all'estero. </xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:length value="4"/>
							<xs:pattern value="[Z][0-9]{3}"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="ComuneNascita">
					<xs:annotation>
						<xs:documentation xml:lang="it"> Codice del comune di nascita del
							lavoratore. </xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:length value="4"/>
							<xs:pattern value="[A-Z][0-9]{3}"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
			</xs:choice>
			<xs:element name="Sesso" minOccurs="0">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Sesso (M o F). </xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="1"/>
						<xs:pattern value="M|F"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="ProvinciaLuogoLavoro" type="ProvinciaType" minOccurs="0"/>
			<xs:choice minOccurs="0">
				<xs:element name="RetribuzionePrecedente" type="ImportoType"/>
				<xs:element name="GiorniFascia">
					<xs:simpleType>
						<xs:restriction base="xs:integer">
							<xs:totalDigits value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
			</xs:choice>
			<xs:element name="DatiRetribuzione" type="DatiRetribuzioneType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="CodiceCittadinanzaType">
		<xs:annotation>
			<xs:documentation xml:lang="it"> Codice cittadinanza del lavoratore. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:length value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="DatiRetribuzioneType">
		<xs:sequence>
			<xs:element name="Periodo" type="PeriodoType" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Periodo cui si riferisce questo elemento dei
						dati retribuzione.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="NumeroGiorniLavorati">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Numero di giorni lavorati, all'interno del
						periodo cui si riferisce questo elemento dei
						dati retribuzione.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:nonNegativeInteger">
						<xs:totalDigits value="4" />
					</xs:restriction>
				</xs:simpleType>				
			</xs:element>
			<xs:element name="CodiceQualifica">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Codice della qualifica cui si riferisce la
						prestazione.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="3" />
						<xs:pattern value="[0-9]{3}" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="TipoRapporto">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Tipo di rapporto di lavoro.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="1" />
						<xs:pattern value="[A-Z0-9]" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="CodiceRetribuzione">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="2" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="ImportoRetribuzione" type="ImportoType" />
			<xs:element name="CodiceAliquota">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Codice dell'aliquota contributiva applicata.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="1" />
						<xs:maxLength value="2" />
						<xs:pattern value="[A-Z0-9]+" />
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Agevolazione" type="AgevolazioneType"
				minOccurs="0">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Codice e importo dell'eventuale agevolazione
						contributiva applicata.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="Contributo" type="ContributoType">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Contribuzione dovuta, al netto delle eventuali
						agevolazioni.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="TrattenutePensioni" type="ImportoType"
				minOccurs="0">
				<xs:annotation>
					<xs:documentation xml:lang="it">
						Importo dei versamenti delle trattenute
						effettuate al lavoratore titolare di pensione.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice minOccurs="0">
				<xs:element name="RetribuzionePrecedente"
					type="ImportoType" />
				<xs:element name="GiorniFascia">
					<xs:simpleType>
						<xs:restriction base="xs:integer">
							<xs:totalDigits value="3" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
			</xs:choice>
			<xs:element name="CodiceBrano" minOccurs="0" maxOccurs="1">
				<xs:simpleType>
					<xs:restriction base="AllowedChars">
						<xs:minLength value="1"></xs:minLength>
						<xs:maxLength value="12"></xs:maxLength>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PeriodoType">
		<xs:sequence>
			<xs:element name="DataInizio" type="xs:date"/>
			<xs:element name="DataFine" type="xs:date"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="AgevolazioneType">
		<xs:sequence>
			<xs:element name="Codice">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="2"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="ImportoAgevolato" type="ImportoType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ContributoType">
		<xs:sequence>
			<xs:element name="Normale" type="ImportoType"/>
			<xs:element name="Aggiuntivo" type="ImportoType"/>
			<xs:element name="Solidarieta" type="ImportoType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="CodiceFiscaleType">
		<xs:annotation>
			<xs:documentation>Codice fiscale</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:maxLength value="16"/>
			<xs:pattern value="[A-Z]{6}[0-9]{2}[A-Z]{1}[0-9]{2}[A-Z0-9]{4}[A-Z]{1}"/>
			<xs:pattern value="[0-9]{11}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="CFPersonaFisicaType">
		<xs:annotation>
			<xs:documentation> Codice fiscale di persona fisica. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Z]{6}[0-9]{2}[A-Z]{1}[0-9]{2}[A-Z0-9]{4}[A-Z]{1}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ImportoType">
		<xs:annotation>
			<xs:documentation> Gli importi sono espressi in centesimi di Euro, come interi, e non
				sono mai negativi. Per esempio, un importo di 10 euro e 50 centesimi deve essere
				espresso con il numero 1050. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:nonNegativeInteger"/>
	</xs:simpleType>
	<xs:complexType name="IndirizzoType">
		<xs:sequence>
			<xs:element name="Toponimo">
				<xs:annotation>
					<xs:documentation xml:lang="it"> Via, Viale, Piazza ..., numero civico, etc.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="AllowedChars">
						<xs:maxLength value="50"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="CAP">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:length value="5"/>
						<xs:pattern value="[0-9]{5}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Comune" type="ComuneType"/>
			<xs:element name="Provincia" type="ProvinciaType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="ComuneType">
		<xs:annotation>
			<xs:documentation xml:lang="it"> Codice del Comune. La codifica e' quella fiscale.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:length value="4"/>
			<xs:pattern value="[A-Z][0-9]{3}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ProvinciaType">
		<xs:annotation>
			<xs:documentation xml:lang="it"> Sigla della Provincia. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:length value="2"/>
			<xs:pattern value="[A-Z]{2}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AllowedChars">
		<xs:annotation>
			<xs:documentation xml:lang="it"> Set di caratteri ammesso in nomi e descrizioni. Di
				regola ogni elemento che utilizza questo set definisce ulteriori restrizioni
				relative alla lunghezza massima del valore. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Za-z0-9 .,\-&quot;&apos;&amp;\(\)%]*"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="SoftwareType">
		<xs:annotation>
			<xs:documentation xml:lang="it"> Identifica il prodotto software che ha generato il file
				XML. Utilizzato per fini statistici. </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="CodiceFiscaleProduttore">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="16"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Prodotto">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="255"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Versione">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="255"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MittenteType">
		<xs:sequence>
			<xs:element name="CodiceFiscale" type="CodiceFiscaleType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CausaleExtracontributivaType">
		<xs:sequence>
			<xs:element name="CodiceCausale">
				<xs:simpleType >
					<xs:restriction base="xs:string">
						<xs:length value="3"/>
						<xs:pattern value="[A-Z0-9]{3}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>			
			<xs:element name="CodiceAliquota" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:maxLength value="2"/>
						<xs:pattern value="[A-Z0-9]+"/>							
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="Importo">
				<xs:complexType>
					<xs:choice>
						<xs:element name="Dare" type="ImportoType">
							<xs:annotation>
								<xs:documentation xml:lang="it"> Quadro A </xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="Avere" type="ImportoType">
							<xs:annotation>
								<xs:documentation xml:lang="it"> Quadro B </xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:choice>
				</xs:complexType>
			</xs:element>
			<xs:element name="ImportoRiferimento" type="ImportoType" minOccurs="0"/>
			<xs:element name="DataInizio" type="xs:date" minOccurs="0"/>
			<xs:element name="DataFine" type="xs:date" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
