<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           vc:minVersion="1.1" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning">

    <!-- LIBRETTO DI IMPIANTO -->
    <xs:element name="Impianti">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Impianto" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>

                            <!--GPI: campi NON GESTITI NELL'XML -->
                            <xs:element name="IDLibretto" type="xs:long" minOccurs="0" maxOccurs="1"/>
                            <xs:element name="Revisione" type="xs:positiveInteger" minOccurs="0" maxOccurs="1"/>
                            <xs:element name="Operatore" type="Varchar200" minOccurs="0" maxOccurs="1"/>
                            <xs:element name="DataModifica" type="xs:date" minOccurs="0" maxOccurs="1"/>
                            <xs:element name="TipoLibrettoCode" type="Varchar010" minOccurs="0" maxOccurs="1"/>
                            <xs:element name="CodCatastoImpianto" type="Varchar020" minOccurs="0" maxOccurs="1"/>
                            <!--GPI: fine campi NON GESTITI NELL'XML-->

                            <!-- SEZIONE 1 -->
                            <xs:element ref="SchedaIdentificativa" minOccurs="1" maxOccurs="1"/>

                            <!-- SEZIONE 1.6 -->
                            <xs:element ref="SoggettiImpianto" minOccurs="1" maxOccurs="1"/>

                            <!-- SEZIONE 2 -->
                            <xs:element ref="TrattamentoAcqua" minOccurs="1" maxOccurs="1"/>

                            <!-- SEZIONE 3 -  NON GESTITO NELL'XML -->
                            <xs:element name="NominaTerzoResponsabileEsercizioManutenzione" minOccurs="0"	maxOccurs="1"/>

                            <!-- SEZIONE 4 -->
                            <xs:element ref="Generatori" minOccurs="0" maxOccurs="1"/>

                            <!-- SEZIONE 5 -->
                            <xs:element ref="SistemiRegolazioneContabilizzazione" minOccurs="1" maxOccurs="1"/>

                            <!-- SEZIONE 6 -->
                            <xs:element ref="SistemiDistribuzione" minOccurs="1" maxOccurs="1"/>

                            <!-- SEZIONE 7 -->
                            <xs:element ref="SistemaEmissione" minOccurs="1" maxOccurs="1"/>

                            <!-- SEZIONE 8 -->
                            <xs:element ref="SistemaAccumulo" minOccurs="0" maxOccurs="1"/>

                            <!-- SEZIONE 9 -->
                            <xs:element ref="AltriComponentiImpianto" minOccurs="0" maxOccurs="1"/>

                            <!-- SEZIONE 10 -->
                            <xs:element ref="ImpiantiVentilazioneMeccanicaControllata" minOccurs="0"	maxOccurs="1"/>

                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- ******************************************************************* -->
    <!-- 		                     DEFINIZIONE SEZIONI      		               -->
    <!-- ******************************************************************* -->

    <!-- SEZIONE 1: DATI IDENTIFICATIVI  -->
    <xs:element name="SchedaIdentificativa">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Codice" 				type="Varchar020" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="Targa" 				type="Targa" 		minOccurs="1" maxOccurs="1"/>
                <xs:element name="SottoponibileDPR412" 	type="xs:boolean" 	minOccurs="1" maxOccurs="1"/>
                <!-- Sez. 1.1: Tipologia intervento  - NON gestito da CURIT -->

                <xs:element name="CategoriaEdificio" type="TipoCategoriaEdificio" minOccurs="1"	maxOccurs="1"/>

                <!-- Sez. 1.2: Ubicazione e destinazione dell'edificio -->
                <xs:element ref="UbicazioneDestinazioneEdificio"/>

                <xs:element name="Certificazione">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="CertificazioneAssente">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="CertificazionePresente">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="AttestatoEnergetico" minOccurs="1"	maxOccurs="1">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:token">
                                                    <xs:pattern
                                                            value="(108([a-z]|[A-Z]|[0-9]){11})|(([1]|[2]|[9])([a-z]|[A-Z]|[0-9]){12})"
                                                            />
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>

                <xs:element name="VolumeLordoRiscaldato" 	type="Decimal7-2" 	minOccurs="0"	maxOccurs="1"/>
                <xs:element name="VolumeLordoRaffrescato" 	type="Decimal7-2" 	minOccurs="0"	maxOccurs="1"/>
                <xs:element name="Note" 					type="Varchar500" 	minOccurs="0" 	maxOccurs="1"/>

                <!-- Sez. 1.4: Tipologia fluido vettore  - NON gestito da XML-->
                <xs:element name="TipologiaFluidoVettore" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 1.5: Individuazione della Tipologia dei generatori - NON gestito da XML -->
                <xs:element name="TipologiaGeneratori" minOccurs="0" maxOccurs="1"/>


            </xs:sequence>
            <xs:attribute name="dataCostruzione" 	type="xs:date" use="optional"/>
            <xs:attribute name="dataInstallazione" 	type="xs:date" use="required"/>
            <xs:attribute name="dataRottamazione" 	type="xs:date" use="optional"/>
            <xs:attribute name="dataAttivazione" 	type="xs:date" use="optional"/>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 1.6: SOGGETTI IMPIANTO -->

    <xs:element name="SoggettiImpianto">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:sequence>
                        <xs:element name="Proprietario" 			type="TipoSoggettoImpianto"/>
                        <xs:element name="Occupante" 				type="TipoSoggettoImpianto" 		minOccurs="0"/>
                        <xs:element name="Amministratore" 			type="TipoSoggettoImpianto" 		minOccurs="0"/>
                        <xs:element name="IntestatarioContratto" 	type="TipoSoggettoImpianto"			minOccurs="0"/>
                        <xs:element name="TerzoResponsabile" 		type="TipoSoggettoImpianto" 		minOccurs="0"/>
                    </xs:sequence>
                    <xs:sequence>
                        <xs:element name="Occupante" 				type="TipoSoggettoImpianto"/>
                        <xs:element name="Amministratore" 			type="TipoSoggettoImpianto" 		minOccurs="0"/>
                        <xs:element name="IntestatarioContratto" 	type="TipoSoggettoImpianto"			minOccurs="0"/>
                        <xs:element name="TerzoResponsabile" 		type="TipoSoggettoImpianto"  		minOccurs="0"/>
                    </xs:sequence>
                    <xs:sequence>
                        <xs:element name="Amministratore" 			type="TipoSoggettoImpianto"/>
                        <xs:element name="IntestatarioContratto" 	type="TipoSoggettoImpianto"			minOccurs="0"/>
                        <xs:element name="TerzoResponsabile" 		type="TipoSoggettoImpianto"  		minOccurs="0"/>
                    </xs:sequence>
                    <xs:sequence>
                        <xs:element name="IntestatarioContratto" 	type="TipoSoggettoImpianto"/>
                        <xs:element name="TerzoResponsabile" 		type="TipoSoggettoImpianto"			minOccurs="0"/>
                    </xs:sequence>
                    <xs:element name="TerzoResponsabile" 			type="TipoSoggettoImpianto"/>
                </xs:choice>
                <xs:element name="Installatore" 				type="TipoSoggettoImpiantoNoResponsabile"	minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:assert test="count(.//Responsabile) eq 1"/>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 2: TRATTAMENTO DELL'ACQUA -->
    <xs:element name="TrattamentoAcqua">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ContenutoAcquaImpianto"  	type="Decimal12-3" minOccurs="1"	maxOccurs="1"/>
                <xs:element name="DurezzaTotaleAcqua" 		type="Decimal12-2" minOccurs="1" 	maxOccurs="1"/>

                <!-- Sez. 2.3: Trattamento dell'acqua dell'impianto di climatizzazione invernale (Rif. UNI 8065) -->
                <xs:element ref="TrattamentoClimatizzazioneInvernale" minOccurs="1" maxOccurs="1"/>

                <!-- Sez. 2.4: Trattamento dell'acqua calda sanitaria (Rif. UNI 8065) -->
                <xs:element ref="TrattamentoACS" minOccurs="1" maxOccurs="1"/>

                <!-- Sez. 2.5: Trattamento dell'acqua di raffreddamento dell'impianto di climatizzazione estiva -->
                <xs:element ref="TrattamentoClimatizzazioneEstiva" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- Aggiungere controllo logico per verificare che sia inserito almeno 1 generatore tra la lista sottostante -->

    <!-- SEZIONE 4: GENERATORI -->
    <xs:element name="Generatori">
        <xs:complexType>
            <xs:sequence>
                <!-- Sez. 4.1: Gruppi Termici o Caldaie -->
                <xs:element ref="GruppiTermiciFossili" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="GruppiTermiciBiomassaSolida" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 4.4: Macchine frigorifere / pompe di calore -->
                <xs:element ref="MacchineFrigorifere_PompeDiCalore" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 4.5: Scambiatori di calore della sottostazione di teleriscaldamento / teleraffrescamento -->
                <xs:element ref="ScambiatoriCaloreSottostazioneTeleriscaldamento_Teleraffrescamento"	minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 4.6: Cogeneratori / Trigeneratori -->
                <xs:element ref="Cogeneratori_Trigeneratori" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 4.7: Campi solari termici -->
                <xs:element ref="CampiSolariTermici" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 4.8: Altri generatori -->
                <xs:element ref="AltriGeneratori" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>



    <!-- SEZIONE 5: SISTEMI DI REGOLAZIONE E CONTABILIZZAZIONE -->
    <xs:element name="SistemiRegolazioneContabilizzazione">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="RegolazionePrimaria" minOccurs="1"/>
                <xs:element ref="RegolazioneSingolaUnitaAbitativaSingoloAmbiente" minOccurs="1"/>
                <xs:element ref="SistemiTelematiciDiTeleLetturaTeleGestione" minOccurs="1"/>
                <xs:element ref="Contabilizzazione" minOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 6: SISTEMI DI DISTRIBUZIONE -->
    <xs:element name="SistemiDistribuzione">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Distribuzione" minOccurs="1"/>
                <xs:element ref="VasiEspansione" minOccurs="0"/>
                <xs:element ref="PompeCircolazione" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 7: SISTEMI DI EMISSIONE -->
    <xs:element name="SistemaEmissione">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TipologiaSistemaEmissione" type="TipologiaEM" minOccurs="1"	maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SEZIONE 8: ACCUMULI -->
    <xs:element name="SistemaAccumulo">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Accumulo" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoAccumulo" minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoAccumulo" minOccurs="0"	maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="SA" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SEZIONE 9: ALTRI COMPONENTI IMPIANTO -->
    <xs:element name="AltriComponentiImpianto">
        <xs:complexType>
            <xs:sequence>
                <!-- Sez. 9.1: Torri evaporative -->
                <xs:element ref="TorriEvaporative" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 9.2: Raffreddatori di liquido -->
                <xs:element ref="RaffreddatoriDiLiquido" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 9.3: Scambiatori di calore intermedi  -->
                <xs:element ref="ScambiatoriDiCalore" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 9.4: Circuiti interrati a condensazione / espansione diretta -->
                <xs:element ref="CircuitiInterrati" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 9.5: Unità di trattamento aria -->
                <xs:element ref="UnitaTrattamentoAria" minOccurs="0" maxOccurs="1"/>

                <!-- Sez. 9.6: Recuperatori di calore -->
                <xs:element ref="RecuperatoriDiCalore" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 10: IMPIANTI DI VENTILAZIONE MECCANICA CONTROLLATA  -->
    <xs:element name="ImpiantiVentilazioneMeccanicaControllata">
        <xs:complexType>
            <xs:sequence>
                <!-- Sez. 10.1: Impianto di ventilazione meccanica controllata -->
                <xs:element name="ImpiantoVentilazioneMeccanicaControllata" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoImpVentilMeccCtr"			minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoImpVentilMeccCtr"			minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="VM" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- #################################################################### -->
    <!-- SOTTOSEZIONI -->

    <!-- SEZIONE 1.2: UBICAZIONE -->
    <xs:element name="UbicazioneDestinazioneEdificio">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ISTATComune" 	type="xs:string" 	minOccurs="1" maxOccurs="1"/>
                <xs:element name="Localita" 	type="Varchar040" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="Toponimo" 	type="Varchar050"	minOccurs="1" maxOccurs="1"/>
                <xs:element name="Indirizzo" 	type="Varchar100" 	minOccurs="1" maxOccurs="1"/>
                <xs:element name="NumeroCivico" type="Varchar008" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="Sottocivico" 	type="Varchar003" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="CAP" 			type="CAP" 			minOccurs="0" maxOccurs="1"/>
                <xs:element name="Piano" 		type="Integer5" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="Scala" 		type="Varchar005" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="Palazzo" 		type="Varchar005" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="Interno" 		type="Varchar003" 	minOccurs="0" maxOccurs="1"/>
                <xs:element name="DatiCatastali" 					minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="CastatoCfComune" 		type="CodiceFiscaleComune"		minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="CatastoSezione" 		type="Varchar004" 				minOccurs="0"	maxOccurs="1"/>
                            <xs:element name="CatastoFoglio" 		type="Varchar004" 				minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="CatastoParticella" 	type="Varchar005"				minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="CatastoSubalterno" 	type="Varchar005" 				minOccurs="1"	maxOccurs="1"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <!-- TRUE = Impianto autonomo | FALSE = Impianto Centralizzato -->
                <xs:element name="SingolaUnitaImmobiliare" type="xs:boolean" minOccurs="0"		maxOccurs="1"/>

                <!-- campi non gestiti dal CURIT -->
                <xs:element name="AttestatoAnno" type="Varchar020" minOccurs="0" maxOccurs="1"/>
                <xs:element name="AttestatoChiave" type="Varchar020" minOccurs="0" maxOccurs="1"/>
                <!-- fine campi non gestiti dal CURIT -->


            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SEZIONE 2.3: Trattamento dell'acqua dell'impianto di climatizzazione invernale (Rif. UNI 8065) -->
    <xs:element name="TrattamentoClimatizzazioneInvernale">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element name="TrattamentoClimatizzazioneInvernaleAssente">
                        <xs:complexType/>
                    </xs:element>
                    <xs:element name="TipoTrattamentoNonRichiesto">
                        <xs:complexType/>
                    </xs:element>
                    <xs:element name="TrattamentoClimatizzazioneInvernalePresente">
                        <xs:complexType>
                            <xs:all>
                                <xs:element name="TipoTrattamentoFiltrazione" minOccurs="0" maxOccurs="1">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="TipoTrattamentoAddolcimento" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="DurezzaTotaleAcquaImpianto"	type="Decimal10-2" 	minOccurs="1" maxOccurs="1"/>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="TipoTrattamentoCondizionamentoChimico" minOccurs="0" maxOccurs="1">
                                    <xs:complexType/>
                                </xs:element>
                            </xs:all>
                            <xs:assert test="count(*) ge 1"/>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
                <xs:element name="ProtezioneGelo" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="ProtezioneGeloAssente">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="ProtezioneGeloPresente">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:choice>
                                            <xs:element name="GlicoleEtilenico">
                                                <xs:complexType>
                                                    <xs:sequence>
                                                        <xs:element ref="ConcentrazioneGlicole" 	minOccurs="1" 	maxOccurs="1"/>
                                                        <xs:element ref="pHGlicole" 				minOccurs="1"	maxOccurs="1"/>
                                                    </xs:sequence>
                                                </xs:complexType>
                                            </xs:element>
                                            <xs:element name="GlicolePropilenico">
                                                <xs:complexType>
                                                    <xs:sequence>
                                                        <xs:element ref="ConcentrazioneGlicole"		minOccurs="1" 	maxOccurs="1"/>
                                                        <xs:element ref="pHGlicole" 				minOccurs="1"	maxOccurs="1"/>
                                                    </xs:sequence>
                                                </xs:complexType>
                                            </xs:element>
                                        </xs:choice>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SEZIONE 2.4: Trattamento dell'acqua calda sanitaria (Rif. UNI 8065) -->
    <xs:element name="TrattamentoACS">
        <xs:complexType>
            <xs:choice>
                <xs:element name="TrattamentoACSAssente">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="TipoTrattamentoNonRichiesto">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="TrattamentoACSPresente">
                    <xs:complexType>
                        <xs:all>
                            <xs:element name="TipoTrattamentoFiltrazione" minOccurs="0" maxOccurs="1">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoTrattamentoAddolcimento" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DurezzaTotaleUscitaAddolcitore"  type="Decimal10-2" minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="TipoTrattamentoCondizionamentoChimico" minOccurs="0" maxOccurs="1">
                                <xs:complexType/>
                            </xs:element>
                        </xs:all>
                        <xs:assert test="count(*) ge 1"/>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 2.5: Trattamento dell'acqua di raffreddamento dell'impianto di climatizzazione estiva -->
    <xs:element name="TrattamentoClimatizzazioneEstiva">
        <xs:complexType>
            <xs:choice>
                <xs:element name="CircuitoRaffreddamentoAssente">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="CircuitoRaffreddamentoPresente">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="TipologiaCircuitoRaffreddamento" 					minOccurs="1"	maxOccurs="1"/>
                            <xs:element ref="OrigineAcquaAlimento" 								minOccurs="1" 	maxOccurs="1"/>
                            <xs:element ref="TrattamentiAcquaEsistenti" 						minOccurs="1" 	maxOccurs="1"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <xs:element name="TipologiaCircuitoRaffreddamento">
        <xs:complexType>
            <xs:choice>
                <xs:element name="SenzaRecupero">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="RecuperoParziale">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="PresenzaSistemaSpurgoAutomatico" 		type="xs:boolean"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="ConducibilitaAcquaEntrante" 			type="Decimal8-1"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="TaraturaConducibilitaAcquaEntrante" 	type="Decimal8-1"		minOccurs="1" maxOccurs="1"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="RecuperoTotale">
                    <xs:complexType/>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <xs:element name="OrigineAcquaAlimento">
        <xs:complexType>
            <xs:choice>
                <xs:element name="Acquedotto">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="Pozzo">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="AcquaSuperficiale">
                    <xs:complexType/>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <xs:element name="TrattamentiAcquaEsistenti">
        <xs:complexType>
            <xs:all>
                <xs:element name="TrattamentiAcquaEsistentiAssente"  minOccurs="0" maxOccurs="1">
                    <xs:complexType/>
                </xs:element>
                <xs:element name="Tipo_Filtrazione_EST" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="TipoFiltrazioneDiSicurezza">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoFiltrazioneAMasse">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoFiltrazioneAltro">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DescrizioneAltroFiltrazione"	type="Varchar200" minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="NessunaFiltrazione">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Trattamento_H2O_EST" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="TipoTrattamentoAddolcimento">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoTrattamentoOsmosiInversa">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoTrattamentoDemineralizzazione">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoTrattamentoAltro">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DescrizioneAltroTrattamento"	type="Varchar200" minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="NessunTrattamento">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Condizionamento_Chimico_EST" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="TipoCondChimicoAzAntincrostante">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoCondChimicoAzAnticorrosiva">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoCondChimicoAzCombinata">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoCondChimicoBiocida">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoCondChimicoAltro">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DescrizioneAltroCondChimico" 	type="Varchar200" minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="NessunCondizionamento">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="TrattamentiAcquaEsistentiNonRichiesto" minOccurs="0" maxOccurs="1">
                    <xs:complexType/>
                </xs:element>
            </xs:all>
            <xs:assert test="if(count(TrattamentiAcquaEsistentiNonRichiesto) ge 1) then count(*) eq 1 else true()"/>
            <xs:assert test="if(count(TrattamentiAcquaEsistentiAssente) ge 1) then count(*) eq 1 else true()"/>
            <xs:assert test="count(*) ge 1"/>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.1A GRUPPI TERMICI FOSSILI -->
    <xs:element name="GruppiTermiciFossili">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="GruppoTermicoFossile" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" 	minOccurs="1" maxOccurs="1"/>
                            <xs:group ref="InfoGruppoTermico" 		minOccurs="1" maxOccurs="1"/>

                            <!--  Campi custom del fossile -->
                            <xs:element ref="DatiGruppoTermicoFossile"/>

                            <xs:element name="Sostituzione" 		minOccurs="0" maxOccurs="unbounded"/>

                            <!-- Sez. 4.2A: BRUCIATORI -->
                            <xs:element name="Bruciatori" 			minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element ref="InfoBruciatori" 	minOccurs="1" maxOccurs="1"/>
                                        <xs:element name="Combustibili"		type="TipoCombustibileFossileBruciatori" minOccurs="1"	maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                            <!-- Sez. 4.3A: RECUPERATORI-CONDENSATORI LATO FUMI -->
                            <xs:element ref="Recuperatori_CondensatoriLatoFumi" minOccurs="0"	maxOccurs="unbounded"/>
                        </xs:sequence>

                        <xs:attribute name="Progressivo_GTF" type="NonNegInteger8NoZero"		use="required"/>
                        <xs:assert test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"/>

                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.1B GRUPPI TERMICI A BIOMASSA SOLIDA -->
    <xs:element name="GruppiTermiciBiomassaSolida">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="GruppoTermicoBiomassaSolida" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" minOccurs="1" maxOccurs="1"/>

                            <xs:group ref="InfoGruppoTermico" minOccurs="1" maxOccurs="1"/>

                            <!--  Campi custom del biomassa -->
                            <xs:element ref="DatiGruppoTermicoBiomassa"/>

                            <!-- Sez. 4.2B: BRUCIATORI -->
                            <xs:element name="Bruciatori" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element ref="InfoBruciatori" minOccurs="1" maxOccurs="1"/>
                                        <xs:element name="Combustibili"	type="TipoCombustibileBiomassaBruciatori" minOccurs="1"	maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                            <!-- Sez. 4.3B: RECUPERATORI-CONDENSATORI LATO FUMI -->
                            <xs:element ref="Recuperatori_CondensatoriLatoFumi" minOccurs="0"	maxOccurs="unbounded"/>
                        </xs:sequence>

                        <xs:attribute name="Progressivo_GTB" type="NonNegInteger8NoZero" use="required"/>
                        <xs:assert test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.3 RECUPERATORI-CONDENSATORI -->
    <xs:element name="Recuperatori_CondensatoriLatoFumi">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Data_Installazione_RC" 		type="xs:date" 		minOccurs="1" 	maxOccurs="1"/>
                <xs:element name="Data_Rottamazione_RC" 		type="xs:date" 		minOccurs="0" 	maxOccurs="1"/>
                <xs:element name="Fabbricante_RC" 				type="Varchar060" 	minOccurs="1" 	maxOccurs="1"/>
                <xs:element name="Matricola_RC" 				type="Varchar100" 	minOccurs="1" 	maxOccurs="1"/>
                <xs:element name="Modello_RC" 					type="Varchar040" 	minOccurs="1" 	maxOccurs="1"/>
                <xs:element name="Potenza_Termica_Nominale_RC" 	type="Decimal7-2" 	minOccurs="1"	maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="Progressivo_RC" type="NonNegInteger8NoZero" use="required"/>
            <xs:assert test="Data_Installazione_RC le current-date()"/>
            <xs:assert test="if(count(Data_Rottamazione_RC) eq 1) then Data_Rottamazione_RC ge Data_Installazione_RC else true()"/>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.4 POMPE DI_ CALORE -->
    <xs:element name="MacchineFrigorifere_PompeDiCalore">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="MacchinaFrigo_PompaCalore" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" 					minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="FluidoFrigorigeno" type="Varchar100" 	minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="SorgenteLatoEsterno" 					minOccurs="1" 	maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="Aria">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Acqua">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Terreno">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="PraticaRegistroSG" minOccurs="1"	maxOccurs="1">
                                                        <xs:simpleType>
                                                            <xs:restriction base="TipoPraticaGF">
                                                                <xs:pattern	value="0108[A-Za-z0-9]{14}|0208[A-Za-z0-9]{14}|SOND[A-Za-z0-9]{1,14}"/>
                                                            </xs:restriction>
                                                        </xs:simpleType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="FluidoLatoUtenze" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="Aria">
                                            <xs:complexType/>

                                        </xs:element>
                                        <xs:element name="Acqua">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Salamoia">
                                            <xs:complexType/>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="TipoFrigo" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="AdAssorbimentoPerRecuperoCalore">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="AdAssorbimentoAFiammaDiretta">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Combustibile"	type="TipoCombustibileFossilePompa"	minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="ACicloDiCompressione">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="PRiconsegnaEnergiaEl"		minOccurs="1" maxOccurs="1">
                                                        <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                                <xs:minLength value="14"/>
                                                                <xs:maxLength value="15"/>
                                                            </xs:restriction>
                                                        </xs:simpleType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="ACicloDiCompressioneEndotermica">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Combustibile"	type="TipoCombustibileFossilePompa"	minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Circuiti" type="NonNegInteger8NoZero" minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="Raffrescamento" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Rendimento" 					type="Decimal7-2NoZero"	minOccurs="1" maxOccurs="1"/>
                                        <xs:element name="PotenzaFrigoriferaNominale"	type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
                                        <xs:element name="PotenzaAssorbitaNominale"		type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Riscaldamento" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Rendimento" 				type="Decimal7-2NoZero"	minOccurs="1" maxOccurs="1"/>
                                        <xs:element name="PotenzaTermicaNominale"	type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
                                        <xs:element name="PotenzaAssorbitaNominale"	type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Pratica_GF" type="Varchar020" minOccurs="0" maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="Progressivo_GF" type="NonNegInteger8NoZero" use="required"/>
                        <xs:assert test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert
                                test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"
                                />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.5 SCAMBIATORI DI CALORE -->
    <xs:element name="ScambiatoriCaloreSottostazioneTeleriscaldamento_Teleraffrescamento">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ScambiatoreCaloreTeleriscaldamento_Teleraffrescamento"	minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" minOccurs="1" maxOccurs="1"/>
                            <xs:element name="PotenzaNominale" type="Decimal7-2NoZero" minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="Alimentazione" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="Acqua">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="AcquaSurriscaldata">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Vapore">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Altro">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Alimentazione_Altro_SC"	type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="FluidoTermovettoreUscita_SC" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="AcquaCalda">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="AriaCalda">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Altro">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Fluido_Altro_SC"	type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>

                            <xs:element name="ReteDiTeleriscaldamento" type="Varchar100"				minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Numero_Scambiatori" type="NonNegInteger8NoZero"			minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Punto_Riconsegna_Teleriscaldamento" type="Varchar020"		minOccurs="0" maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="Progressivo_SC" type="NonNegInteger8NoZero" use="required"/>
                        <xs:assert 	test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert 	test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert	test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"/>

                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.6 COGENERATORI-TRIGENERATORI -->
    <xs:element name="Cogeneratori_Trigeneratori">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Cogeneratore_Trigeneratore" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Tipologia" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="MotoreEndotermico">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="TemperaturaAcquaMotore"	type="MinMax_Decimal4-2" minOccurs="1"	maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="CaldaiaCogenerativa">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Turbogas">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Altro">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="TipologiaAltro"	type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Combustibile_CG" 					type="TuttiTipiCombustibili"	minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="PotenzaTermicaNominale" 			type="Decimal7-2NoZero"			minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="PotenzaElettricaNominale" 		type="Decimal7-2NoZero"			minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="TemperaturaAcquaUscita" 			type="MinMax_Decimal4-2"		minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="TemperaturaAcquaIngresso" 		type="MinMax_Decimal4-2"		minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="TemperaturaFumiAValleScambiatore"	type="MinMax_Decimal4-2" 		minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="TemperaturaFumiAMonteScambiatore"	type="MinMax_Decimal4-2" 		minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="EmissioneCO" 						type="MinMax_Decimal7-2" 		minOccurs="1"	maxOccurs="1"/>

                            <xs:element name="FluidoTermovettoreUscita_CG" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="Acqua">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Vapore">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Altro">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Fluido_Altro_CG"	type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>


                            <xs:element name="Pratica_CG" 						type="Varchar020" 				minOccurs="0"	maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="Progressivo_CG" type="NonNegInteger8NoZero" use="required"/>
                        <xs:assert test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.7 CAMPI SOLARI TERMICI -->
    <xs:element name="CampiSolariTermici">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="CampoSolareTermico" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Tipologia" minOccurs="1" maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="PianiNonVetrati">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="PianiVetrati">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Sottovuoto">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Altro">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="TipologiaAltro"		type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="NCollettori" 				type="NonNegInteger8NoZero" 	minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="SuperficieTotaleApertura" type="Decimal7-2NoZero"			minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="Pratica_CS" 				type="Varchar020" 				minOccurs="0"	maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="Progressivo_CS" type="NonNegInteger8NoZero" use="required"/>
                        <xs:assert test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONE 4.8 ALTRI GENERATORI -->
    <xs:element name="AltriGeneratori">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="AltroGeneratore" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:group ref="InfoGlobaliGeneratore" 							minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="Tipologia" 		type="Varchar200" 			minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="PotenzaUtile" 	type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="Progressivo_AG" 	type="NonNegInteger8NoZero" use="required"/>
                        <xs:assert test="Data_Costruzione_GT le current-date()"/>
                        <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>
                        <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Attivo_GT eq false() else true()"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>




    <!-- SOTTOSEZIONI DELLA SEZIONE 5 -->

    <!-- SOTTOSEZIONE 5.1 REGOLAZIONE PRIMARIA -->
    <xs:element name="RegolazionePrimaria">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TipoRegolazione" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:all>
                            <xs:element name="TipoRegolazioneONOFF" minOccurs="0" maxOccurs="1">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoRegolazioneCurvaIntegrata" minOccurs="0" maxOccurs="1">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoRegolazioneCurvaIndipendente" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="SistemaRegolazione" minOccurs="1"		maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="SituazioneIniziale"	type="TipoSistemaRegolazione" minOccurs="1"		maxOccurs="1"/>
                                                    <xs:element name="Sostituzione"			type="TipoSistemaRegolazione" minOccurs="0"		maxOccurs="unbounded"/>
                                                </xs:sequence>
                                                <xs:attribute name="SR" type="NonNegInteger8NoZero"		use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="TipoRegolazioneValvoleRegolazione" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="ValvoleRegolazione" minOccurs="1"		maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="SituazioneIniziale"	type="TipoValvoleRegolazione" 	minOccurs="1"		maxOccurs="1"/>
                                                    <xs:element name="Sostituzione"			type="TipoValvoleRegolazione" 	minOccurs="0"		maxOccurs="unbounded"/>
                                                </xs:sequence>
                                                <xs:attribute name="VR" type="NonNegInteger8NoZero"		use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="TipoRegolazioneMultigradino" minOccurs="0" maxOccurs="1">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="TipoRegolazioneAInverter" minOccurs="0" maxOccurs="1">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Altro" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="TipoRegolazioneAltro" type="Varchar100"	minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:all>
                        <xs:assert test="count(*) ge 1"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SOTTOSEZIONE 5.2 REGOLAZIONE SINGOLA UNITA ABITATIVA - SINGOLO AMBIENTE -->
    <xs:element name="RegolazioneSingolaUnitaAbitativaSingoloAmbiente">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TipoControllo" 				type="TipoRegolazioneUnitaAbitativa" 	minOccurs="1"		maxOccurs="1"/>
                <xs:element name="PresenzaValvoleTermostatiche" type="xs:boolean" 						minOccurs="1"		maxOccurs="1"/>
                <xs:element name="PresenzaValvoleDueVie" 		type="xs:boolean" 						minOccurs="1"		maxOccurs="1"/>
                <xs:element name="PresenzaValvoleTreVie" 		type="xs:boolean" 						minOccurs="1"		maxOccurs="1"/>
                <xs:element name="Note" 						type="Varchar500" 						minOccurs="0" 		maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SOTTOSEZIONE 5.3 SISTEMI DI TELELETTURA E TELEGESTIONE -->
    <xs:element name="SistemiTelematiciDiTeleLetturaTeleGestione">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Telelettura" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="Presente">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DescrizioneTelelettura" type="Varchar500"		minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Assente">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Telegestione" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="Presente">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DescrizioneTelegestione" type="Varchar500"	minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Assente">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Sostituzione" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="DescrizioneSostituzione" type="Varchar500"		minOccurs="1" maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="dataSostituzione" type="xs:date" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SOTTOSEZIONE 5.4 CONTABILIZZAZIONE -->
    <xs:element name="Contabilizzazione">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="UnitaImmobiliariContabilizzate" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="UnitaImmobiliariContabilizzateAssenti">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="UnitaImmobiliariContabilizzatePresenti">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Destinazione">
                                            <xs:complexType>
                                                <xs:all>
                                                    <xs:element name="AcquaCaldaSanitaria"			type="xs:boolean"	 	minOccurs="1" 	maxOccurs="1"/>
                                                    <xs:element name="Riscaldamento" 				type="xs:boolean"		minOccurs="1" 	maxOccurs="1"/>
                                                    <xs:element name="Raffrescamento"				type="xs:boolean" 		minOccurs="1" 	maxOccurs="1"/>
                                                </xs:all>
                                                <xs:assert	test="AcquaCaldaSanitaria = true() or Riscaldamento = true() or Raffrescamento = true()"	/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="SistemaDiretto" 		type="xs:boolean"		minOccurs="1" 	maxOccurs="1"/>
                                        <xs:element name="DescrizioneSistema" 	type="Varchar500"		minOccurs="1" 	maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>


                <xs:element name="Sostituzione" minOccurs="0" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="DescrizioneSostituzione" type="Varchar500"	minOccurs="1" maxOccurs="1"/>
                        </xs:sequence>
                        <xs:attribute name="dataSostituzione" type="xs:date" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SOTTOSEZIONI DELLA SEZIONE 6 -->

    <!-- SOTTOSEZIONE 6.1 DISTRIBUZIONE -->
    <xs:element name="Distribuzione">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TipoDistribuzione" 							type="TipologiaDistribuzione" 	minOccurs="1"	maxOccurs="1"/>
                <xs:element name="PresenzaCoibentazioneReteDistribuzione" 		type="xs:boolean"				minOccurs="1" 	maxOccurs="1"/>
                <xs:element name="Note" 										type="Varchar500" 				minOccurs="0" 	maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SOTTOSEZIONE 6.3 VASI DI ESPANSIONE -->
    <xs:element name="VasiEspansione">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="VasoEspansione" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Capacita" type="Decimal7-2NoZero" minOccurs="1"	maxOccurs="1"/>
                            <xs:element name="TipoVaso" 						minOccurs="1" 	maxOccurs="1">
                                <xs:complexType>
                                    <xs:choice>
                                        <xs:element name="Aperto">
                                            <xs:complexType/>
                                        </xs:element>
                                        <xs:element name="Chiuso">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="PressionePrecarica"		type="Decimal7-2NoZero" minOccurs="1"	maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="VX" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SOTTOSEZIONE 6.4 POMPE DI CIRCOLAZIONE -->
    <xs:element name="PompeCircolazione">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="PompaCircolazione" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoPompaCircolazione"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoPompaCircolazione"		minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="PO" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!-- SEZIONE 9.1: TORRI EVAPORATIVE -->
    <xs:element name="TorriEvaporative">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TorreEvaporativa" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoTorreEvaporativa"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoTorreEvaporativa"		minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="TE" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 9.2: RAFFREDDATORI DI LIQUIDO -->
    <xs:element name="RaffreddatoriDiLiquido">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="RaffrettatoreDiLiquido" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoRaffrDiLiquido"		minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoRaffrDiLiquido" 		minOccurs="0" 	maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="RV" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 9.3: SCAMBIATORI DI CALORE  -->
    <xs:element name="ScambiatoriDiCalore">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ScambiatoreDiCalore" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoScambiatoreDiCalore"	minOccurs="1" 	maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoScambiatoreDiCalore"	minOccurs="0" 	maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="SC" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>

            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 9.4: CIRCUITI INTERRATI -->
    <xs:element name="CircuitiInterrati">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="CircuitoInterrato" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoCircuitoInterrato"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoCircuitoInterrato"		minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="CI" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 9.5: UNITA TRATTAMENTO ARIA -->
    <xs:element name="UnitaTrattamentoAria">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TrattamentoAria" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoUnitaTrattamentoAria"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoUnitaTrattamentoAria"		minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="UT" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- SEZIONE 9.6: RECUPERATORI DI CALORE -->
    <xs:element name="RecuperatoriDiCalore">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="RecuperatoreDiCalore" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="SituazioneIniziale" 	type="TipoRecuperatoreCalore"		minOccurs="1" maxOccurs="1"/>
                            <xs:element name="Sostituzione" 		type="TipoRecuperatoreCalore"		minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="RC" type="NonNegInteger8NoZero" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>



    <!-- ******************************************************************* -->
    <!-- 		                     TIPI DI DATO COMUNI      		         -->
    <!-- ******************************************************************* -->

    <xs:simpleType name="CF">
        <xs:restriction base="xs:token">
            <xs:minLength value="16"/>
            <xs:maxLength value="16"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="PIVA">
        <xs:restriction base="xs:token">
            <xs:minLength value="11"/>
            <xs:maxLength value="11"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="TipoRecuperatoreCalore">
        <xs:sequence>
            <xs:element name="Tipologia" type="TipiRecuperatoreDiCalore" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="Posizione" 									minOccurs="1" maxOccurs="1">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="InstallatoInUTA_VMC">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Indipendente">
                            <xs:complexType/>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="PortataVentilatoreMandata" type="Decimal7-1NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="PotenzaVentilatoreMandata" type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="PortataVentilatoreRipresa" type="Decimal7-1NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="PotenzaVentilatoreRipresa" type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipoUnitaTrattamentoAria">
        <xs:sequence>
            <xs:element name="Fabbricante" 					type="Varchar060" 			minOccurs="1" 	maxOccurs="1"/>
            <xs:element name="Modello" 						type="Varchar100" 			minOccurs="1" 	maxOccurs="1"/>
            <xs:element name="Matricola" 					type="Varchar060" 			minOccurs="1" 	maxOccurs="1"/>
            <xs:element name="PortataVentilatoreMandata" 	type="Decimal7-1NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="PotenzaVentilatoreMandata" 	type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="PortataVentilatoreRipresa" 	type="Decimal7-1NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="PotenzaVentilatoreRipresa" 	type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>


    <xs:complexType name="TipoCircuitoInterrato">
        <xs:sequence>
            <xs:element name="Lunghezza" 				type="Decimal7-1NoZero" 		minOccurs="1" 	maxOccurs="1"/>
            <xs:element name="SuperficieScambiatore" 	type="Decimal7-2NoZero" 		minOccurs="1"	maxOccurs="1"/>
            <xs:element name="ProfonditaInstallazione" 	type="Decimal7-1NoZero" 		minOccurs="1"	maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>


    <xs:complexType name="TipoRaffrDiLiquido">
        <xs:sequence>
            <xs:element name="Fabbricante" 			type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 				type="Varchar100" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Matricola" 			type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="NumeroVentilatori" 	type="IntegerNoZero" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="TipoVentilatori" 		type="TipoVentilatore" 	minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" 		type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" 		type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipoScambiatoreDiCalore">
        <xs:sequence>
            <xs:element name="Fabbricante" 		type="Varchar060" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 			type="Varchar100" 	minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipoTorreEvaporativa">
        <xs:sequence>
            <xs:element name="Fabbricante" 			type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 				type="Varchar100" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Matricola" 			type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Capacita" 			type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
            <xs:element name="NumeroVentilatori" 	type="IntegerNoZero" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="TipoVentilatori" 		type="TipoVentilatore" 	minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>


    <xs:complexType name="TipoImpVentilMeccCtr">
        <xs:sequence>
            <xs:element name="Fabbricante" 			type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 				type="Varchar100" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Tipologia" minOccurs="1" maxOccurs="1">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="SolaEstrazione">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="FlussoDoppioRecuperoConScambiatore">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="FlussoDoppioRecuperoTermodinamico">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Altro">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="TipologiaAltro" type="Varchar100"	minOccurs="1" maxOccurs="1"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="PortataMassimaAria" 	type="Decimal7-2NoZero" 		minOccurs="1" 	maxOccurs="1"/>
            <xs:element name="RendimentoDiRecupero" type="Decimal7-2NoZero" 		minOccurs="1"	maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipoAccumulo">
        <xs:sequence>
            <xs:element name="Fabbricante" 		type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 			type="Varchar100" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Matricola" 		type="Varchar060" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Capacita" 		type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
            <xs:element name="DestinazioneAccumulo" minOccurs="1" maxOccurs="1">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="AcquaCaldaSanitaria" minOccurs="0">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Riscaldamento" minOccurs="0">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Raffrescamento" minOccurs="0">
                            <xs:complexType/>
                        </xs:element>
                    </xs:all>
                    <xs:assert test="count(*) ge 1"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="CoibentazionePresente" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipologiaEM">
        <xs:all>
            <xs:element name="Radiatori" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Termoconvettori" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Ventilconvettori" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="PannelliRadianti" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Bocchette" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="StriscieRadianti" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TraviFredde" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Altro" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="TipologiaEMAltro" type="Varchar500" minOccurs="1"		maxOccurs="1"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
        <xs:assert test="count(*) ge 1"/>
    </xs:complexType>

    <xs:complexType name="TipoPompaCircolazione">
        <xs:sequence>
            <xs:element name="Fabbricante" 		type="Varchar040" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 			type="Varchar035" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="GiriVariabili" 	type="xs:boolean" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="PotenzaNominale" 	type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" 	type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" 	type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipoSistemaRegolazione">
        <xs:sequence>
            <xs:element name="Fabbricante" 			type="Varchar040" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 				type="Varchar035" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="NumPuntiRegolazione" 	type="IntegerNoZero" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="NumLivelliTemp" 		type="IntegerNoZero" 	minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="DataInstallazione" type="xs:date" use="required"/>
        <xs:attribute name="DataDismissione" type="xs:date" use="optional"/>
        <xs:assert test="@DataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:complexType name="TipoVentilatore">
        <xs:choice>
            <xs:element name="Assiali_vel_cost">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Assiali_vel_var">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Centrifughi_vel_cost">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Centrifughi_vel_var">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TipiRecuperatoreDiCalore">
        <xs:choice>
            <xs:element name="RecuperatoreStatico">
                <xs:complexType/>
            </xs:element>
            <xs:element name="RecuperatoreRotativo">
                <xs:complexType/>
            </xs:element>
            <xs:element name="RecuperatoreABatterie">
                <xs:complexType/>
            </xs:element>
            <xs:element name="RecuperatoriATubi">
                <xs:complexType/>
            </xs:element>
            <xs:element name="RecuperatoriATorri">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>


    <xs:complexType name="TipoValvoleRegolazione">
        <xs:sequence>
            <xs:element name="Fabbricante" 		type="Varchar060" 			minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello" 			type="Varchar100" 			minOccurs="1" maxOccurs="1"/>
            <xs:element name="NumVie" 			type="NonNegInteger8NoZero" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Servomotore" 		type="TipoServomotore" 		minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="dataInstallazione" 	type="xs:date" use="required"/>
        <xs:attribute name="dataDismissione" 	type="xs:date" use="optional"/>
        <xs:assert test="@dataInstallazione le current-date()"/>
        <xs:assert test="if(count(dataDismissione) eq 1) then @dataDismissione ge @dataInstallazione else true()"/>
    </xs:complexType>

    <xs:element name="DatiGruppoTermicoFossile">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="TipologiaFossile" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:choice>
                                <xs:element name="GruppoTermicoSingolo">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="GruppoTermicoModulare">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Tubo_NastroRadiante">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="GeneratoreAriaCalda">
                                    <xs:complexType/>
                                </xs:element>
                            </xs:choice>
                            <xs:element name="NumAnalisiFumoPreviste" type="Integer2" minOccurs="1"		maxOccurs="1"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Funzionamento_da" 	type="Decimal7-2NoZero" minOccurs="0"		maxOccurs="1"/>
                <xs:element name="Funzionamento_a" 		type="Decimal7-2NoZero" minOccurs="0"		maxOccurs="1"/>
                <xs:element name="Tipo_Locale" 									minOccurs="0" 		maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="Tecnico">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Interno">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Esterno">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Fluido_Termovettore" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="AcquaCalda">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="AriaCalda">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Vapore">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="OlioDiatermico">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Altro">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="DescrizioneAltroFluido" type="Varchar100"		minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Potenza_Focolare_nominale" type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
                <xs:element name="Riferimento_Controllo" 								minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="UNI10389_1">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Altro">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Riferimento_Altro" type="Varchar100"		minOccurs="1" maxOccurs="1"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="CombustibileFossile" type="TipoCombustibileFossile" 	minOccurs="1" 	maxOccurs="1"/>
                <xs:element name="Scarico_Fumi" 										minOccurs="0" 	maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="NonNoto">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="CaminoCollettivo">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="CaminoIndividuale">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="ScaricoParete">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Marcatura" minOccurs="0" maxOccurs="1">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:pattern value="[1]|[2]|[3]|[4]"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
            <xs:assert test="if (count(Funzionamento_a) eq 1) then count(Funzionamento_da) eq 1 else true()"/>
            <xs:assert test="if (count(Funzionamento_da) eq 1) then count(Funzionamento_a) eq 1 else true()"/>
            <xs:assert test="if (count(Funzionamento_a) eq 1 and count(Funzionamento_da) eq 1)  then    Funzionamento_a ge Funzionamento_da else true() "/>
        </xs:complexType>
    </xs:element>

    <xs:element name="DatiGruppoTermicoBiomassa">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="CombustibileBiomassa" type="TipoCombustibileBiomassa"		minOccurs="1" maxOccurs="1"/>
                <xs:element name="TipologiaBiomassa" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:choice>
                                <xs:element name="Caldaia">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Stufa">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="StufaAdAccumulo">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Termocucina">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="CaminettoAperto">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="CaminettoChiuso">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="InsertoCaminetto">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="StufaAssemblata">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="StufaPellet">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Altro">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="TipologiaBiomassaAltro"		type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:choice>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PresenzaMarcatura" 		type="xs:boolean" 		minOccurs="1" maxOccurs="1"/>
                <xs:element name="PresenzaPlacca" 			type="xs:boolean" 		minOccurs="1" maxOccurs="1"/>
                <xs:element name="Controllo_Comburente" 							minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:choice>
                                <xs:element name="Automatico">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Semiautomatico">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Manuale">
                                    <xs:complexType/>
                                </xs:element>
                            </xs:choice>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Caricamento_Combustibile" 						minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:choice>
                                <xs:element name="Automatico">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="Manuale">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="ManualeAutomatico">
                                    <xs:complexType/>
                                </xs:element>
                            </xs:choice>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Aria_Comburente" 									minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:choice>
                                <xs:element name="DaEsterno">
                                    <xs:complexType/>
                                </xs:element>
                                <xs:element name="DaLocaleInstallazione">
                                    <xs:complexType/>
                                </xs:element>
                            </xs:choice>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Pratica_GTB" type="Varchar020" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:group name="InfoGruppoTermico">
        <xs:sequence>
            <xs:element name="Descrizione" type="Varchar100" 	minOccurs="0" maxOccurs="1"/>
            <xs:element name="Tiraggio" 						minOccurs="1" maxOccurs="1">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="TiraggioNaturale">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="TiraggioForzato">
                            <xs:complexType/>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="PotenzaTermicaUtile" 		type="Decimal7-2NoZero" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="RendimentoTermicoUtile" 	type="Decimal7-2-max150" 	minOccurs="1"	maxOccurs="1"/>
            <xs:element name="Tecnologia" 											minOccurs="1" 	maxOccurs="1">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="Tradizionale">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Condensazione">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Altro">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="TipologiaAltro" type="Varchar100"		minOccurs="1" maxOccurs="1"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="Note_GT" type="Varchar500" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:group>

    <xs:group name="InfoGeneratore">
        <xs:sequence>
            <xs:element name="Data_Costruzione_GT" 		type="xs:date" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Data_Installazione_GT" 	type="xs:date" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Data_Rottamazione_GT" 	type="xs:date" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Fabbricante_GT" 			type="Varchar060" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="Matricola_GT" 			type="Varchar100" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="Modello_GT" 				type="Varchar040" 	minOccurs="1" maxOccurs="1"/>
        </xs:sequence>

    </xs:group>

    <xs:group name="GeneratoreAttivo">
        <xs:sequence>
            <xs:element name="Attivo_GT" type="xs:boolean" minOccurs="1" maxOccurs="1"> </xs:element>
            <xs:element name="Destinazione" minOccurs="1" maxOccurs="1">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ClimatizzazioneInvernale"	minOccurs="0">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="ClimatizzazioneEstiva" minOccurs="0">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="ProduzioneACS" minOccurs="0">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="Altro" minOccurs="0">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="DescrizioneAltroDestinazione"	type="Varchar100" minOccurs="1" maxOccurs="1"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:all>
                    <xs:assert test="count(*) ge 1"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:group>

    <xs:group name="InfoGlobaliGeneratore">
        <xs:sequence>
            <xs:group ref="InfoGeneratore"/>
            <xs:group ref="GeneratoreAttivo"/>
        </xs:sequence>
    </xs:group>

    <xs:element name="InfoBruciatori">
        <xs:complexType>
            <xs:sequence>
                <xs:group ref="InfoGeneratore" 			minOccurs="1" maxOccurs="1"/>
                <xs:element name="Tipologia_BR" 		minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="Atmosferico">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Pressurizzato">
                                <xs:complexType/>
                            </xs:element>
                            <xs:element name="Premiscelato">
                                <xs:complexType/>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PortataTermicaNominale" type="MinMax_Decimal7-2" minOccurs="1"	maxOccurs="1"/>

            </xs:sequence>
            <xs:attribute name="Progressivo_BR" type="NonNegInteger8NoZero" use="required"/>
            <xs:assert test="Data_Costruzione_GT le current-date()"/>
            <xs:assert test="Data_Installazione_GT ge Data_Costruzione_GT"/>
            <xs:assert test="if(count(Data_Rottamazione_GT) eq 1) then Data_Rottamazione_GT ge Data_Installazione_GT else true()"/>

        </xs:complexType>
    </xs:element>


    <xs:element name="ConcentrazioneGlicole" type="Percent2"/>
    <xs:element name="pHGlicole" type="PH"/>


    <xs:complexType name="TuttiTipiCombustibili">
        <xs:choice>
            <xs:element name="SceltaCombustibiliFossili" 	type="TipoCombustibileFossilePompa"/>
            <xs:element name="SceltaCombustibiliBiomassa" 	type="TipoCombustibileBiomassaCogeneratori"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TipoIndirizzo">
        <xs:sequence>
            <xs:element name="Toponimo" type="Varchar050"/>
            <xs:element name="Descrizione_toponimo" type="xs:string"/>
            <xs:element name="Civico" type="xs:integer"/>
            <xs:element name="Cap" type="CAP"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TipoCombustibileFossile">
        <xs:all>
            <xs:element name="GasNaturale" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="PRiconsegnaCombustibile" minOccurs="1" maxOccurs="1">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:pattern value="\d{14,15}"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="GPL" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Gasolio" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="AriaPropanata" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Kerosene" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="OlioCombustibile" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="OlioVegetale" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Biodiesel" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Biogas" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Syngas" minOccurs="0">
                <xs:complexType/>
            </xs:element>
        </xs:all>
        <xs:assert test="count(*) ge 1"/>
    </xs:complexType>

    <xs:complexType name="TipoCombustibileFossileBruciatori">
        <xs:choice>
            <xs:element name="GasNaturale">
                <xs:complexType />
            </xs:element>
            <xs:element name="GPL">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Gasolio">
                <xs:complexType/>
            </xs:element>
            <xs:element name="AriaPropanata">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Kerosene">
                <xs:complexType/>
            </xs:element>
            <xs:element name="OlioCombustibile">
                <xs:complexType/>
            </xs:element>
            <xs:element name="OlioVegetale">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Biodiesel">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Biogas">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Syngas">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TipoCombustibileFossilePompa">
        <xs:choice>
            <xs:element name="GasNaturale" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="PRiconsegnaCombustibile" minOccurs="1" maxOccurs="1">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:pattern value="\d{14,15}"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="GPL">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Gasolio">
                <xs:complexType/>
            </xs:element>
            <xs:element name="AriaPropanata">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Kerosene">
                <xs:complexType/>
            </xs:element>
            <xs:element name="OlioCombustibile">
                <xs:complexType/>
            </xs:element>
            <xs:element name="OlioVegetale">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Biodiesel">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Biogas">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Syngas">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TipoCombustibileBiomassa">
        <xs:all>
            <xs:element name="Legna" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Pellet" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Bricchette" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Cippato" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Altro" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="CombustibileBiomassaAltro" type="Varchar100" minOccurs="1" maxOccurs="1"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
        <xs:assert test="count(*) ge 1"/>
    </xs:complexType>

    <xs:complexType name="TipoCombustibileBiomassaBruciatori">
        <xs:choice>
            <xs:element name="Legna">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Pellet">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Bricchette">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Cippato">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Altro">
                <xs:complexType />
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TipoCombustibileBiomassaCogeneratori">
        <xs:choice>
            <xs:element name="Legna">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Pellet">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Bricchette">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Cippato">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Altro" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="CombustibileBiomassaAltro" type="Varchar100" minOccurs="1" maxOccurs="1"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:simpleType name="Targa">
        <xs:restriction base="xs:token">
            <xs:pattern value="(([A-Z]|\d){5})\d{9}03"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Toponimi">
        <xs:restriction base="xs:string">
            <xs:enumeration value="AEROPORTO"/>
            <xs:enumeration value="ALZAIA"/>
            <xs:enumeration value="AUTOSTRADA"/>
            <xs:enumeration value="BORGO"/>
            <xs:enumeration value="CASALE"/>
            <xs:enumeration value="CASCINA"/>
            <xs:enumeration value="CIRCONVALLAZIONE"/>
            <xs:enumeration value="COLLI"/>
            <xs:enumeration value="CONTRADA"/>
            <xs:enumeration value="CORSO"/>
            <xs:enumeration value="CORTE"/>
            <xs:enumeration value="CORTE PRIVATA"/>
            <xs:enumeration value="EX STRADA PROV."/>
            <xs:enumeration value="FRAZIONE"/>
            <xs:enumeration value="GALLERIA"/>
            <xs:enumeration value="INTERNO"/>
            <xs:enumeration value="ISOLA"/>
            <xs:enumeration value="LARGO"/>
            <xs:enumeration value="LARGO PRIVATO"/>
            <xs:enumeration value="LOCALITA'"/>
            <xs:enumeration value="MOLINO"/>
            <xs:enumeration value="NUOVA STRADA PROV."/>
            <xs:enumeration value="PARCHEGGIO"/>
            <xs:enumeration value="PARCO"/>
            <xs:enumeration value="PASSAGGIO"/>
            <xs:enumeration value="PASSEGGIATA"/>
            <xs:enumeration value="PASSO"/>
            <xs:enumeration value="PIAZZA"/>
            <xs:enumeration value="PIAZZALE"/>
            <xs:enumeration value="PIAZZETTA"/>
            <xs:enumeration value="PIAZZOLO"/>
            <xs:enumeration value="PISTA CICLOPEDONALE"/>
            <xs:enumeration value="PORTA"/>
            <xs:enumeration value="QUARTIERE"/>
            <xs:enumeration value="RIVIERA"/>
            <xs:enumeration value="ROGGIA"/>
            <xs:enumeration value="RONDÒ"/>
            <xs:enumeration value="ROTONDA"/>
            <xs:enumeration value="STAZIONE"/>
            <xs:enumeration value="STRADA"/>
            <xs:enumeration value="STRADA COMUNALE"/>
            <xs:enumeration value="SUPERSTRADA"/>
            <xs:enumeration value="TANGENZIALE"/>
            <xs:enumeration value="TRAVERSA"/>
            <xs:enumeration value="TRIBUNA"/>
            <xs:enumeration value="VARIANTE"/>
            <xs:enumeration value="VIA"/>
            <xs:enumeration value="VIALE"/>
            <xs:enumeration value="VICOLO"/>
            <xs:enumeration value="VILLA"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Provincia">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="CAP">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{5}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="TipoPraticaGF">
        <xs:restriction base="xs:string">
            <xs:pattern value="0108[A-Za-z0-9]{14}|0208[A-Za-z0-9]{14}|SOND[A-Za-z0-9]{1,14}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="CodiceFiscaleComune">
        <xs:restriction base="xs:string">
            <xs:pattern value="([A-Za-z0-9]){1}([0-9]){3}"/>
            <xs:length value="4"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="TipoCategoriaEdificio">
        <xs:choice>
            <xs:element name="E11">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E12">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E13">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E1">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E2">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E3">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E41">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E42">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E43">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E4">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E5">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E61">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E62">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E63">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E6">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E7">
                <xs:complexType/>
            </xs:element>
            <xs:element name="E8">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>



    <xs:complexType name="TipoServomotore">
        <xs:choice>
            <xs:element name="Assente">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Elettrico">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Elettromagnetico">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Pneumatico">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Idraulico">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Altro">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TipoRegolazioneUnitaAbitativa">
        <xs:choice>
            <xs:element name="TipoTermostatoOnOffUA">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoTermostatoProporzionaleUA">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoTermostatoOnOff">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoTermostatoProporzionale">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoEntalpico">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoPortataAriaVariabile">
                <xs:complexType/>
            </xs:element>
            <xs:element name="RegolazioneAssente">
                <xs:complexType/>
            </xs:element>
        </xs:choice>
    </xs:complexType>




    <xs:complexType name="TipologiaDistribuzione">
        <xs:all>
            <xs:element name="TipoVerticale" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoOrizzontale" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="TipoCanaliDAria" minOccurs="0">
                <xs:complexType/>
            </xs:element>
            <xs:element name="Altro" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="TipoDistribuzioneAltro" type="Varchar100" minOccurs="1" maxOccurs="1"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
        <xs:assert test="count(*) ge 1"/>
    </xs:complexType>


    <xs:group name="NomeCognomeCF">
        <xs:sequence>
            <xs:element name="Nome" 			type="Varchar100" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="Cognome" 			type="Varchar100" 	minOccurs="1" maxOccurs="1"/>
            <xs:element name="CodiceFiscale" 	type="CF" 			minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
    </xs:group>


    <xs:group name="RagSocialePIVA">
        <xs:sequence>
            <xs:element name="RagioneSociale" 	type="Varchar100" 	minOccurs="1" 	maxOccurs="1"/>
            <xs:element name="PartitaIVA" 		type="PIVA" 		minOccurs="1" 	maxOccurs="1"/>
        </xs:sequence>
    </xs:group>



    <xs:complexType name="TipoSoggettoImpianto">
        <xs:complexContent>
            <xs:extension base="TipoSoggettoImpiantoNoResponsabile">
                <xs:sequence>
                    <xs:element name="Responsabile" minOccurs="0" maxOccurs="1">
                        <xs:complexType/>
                    </xs:element>

                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>



    <xs:complexType name="TipoSoggettoImpiantoNoResponsabile">
        <xs:sequence>
            <xs:element name="NaturaSoggetto" 		type="TipoNatura" 		minOccurs="1"/>
            <xs:element name="Nazione" 				type="Varchar008" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Provincia" 			type="Varchar004" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Comune" 				type="Varchar040" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Localita_soggetto" 	type="Varchar040" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Indirizzo_soggetto" 	type="Varchar100" 		minOccurs="1" maxOccurs="1"/>
            <xs:element name="Cap_soggetto" 		type="CAP" 				minOccurs="1" maxOccurs="1"/>
            <xs:element name="Telefono" 			type="Integer15" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Cellulare" 			type="Integer15" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Email" 				type="Varchar035" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="Fax" 					type="Integer15" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="ComuneDiNascita" 		type="Varchar040" 		minOccurs="0" maxOccurs="1"/>
            <xs:element name="DataDiNascita" 		type="xs:date"			minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TipoNatura">
        <xs:choice>
            <xs:element name="Fisica">
                <xs:complexType>
                    <xs:group ref="NomeCognomeCF"/>
                </xs:complexType>
            </xs:element>

            <xs:element name="Giuridica">
                <xs:complexType>
                    <xs:group ref="RagSocialePIVA"/>
                </xs:complexType>
            </xs:element>
        </xs:choice>
    </xs:complexType>


    <xs:simpleType name="Varchar003">
        <xs:restriction base="xs:string">
            <xs:maxLength value="3"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar004">
        <xs:restriction base="xs:string">
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar005">
        <xs:restriction base="xs:string">
            <xs:maxLength value="5"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar008">
        <xs:restriction base="xs:string">
            <xs:maxLength value="8"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar010">
        <xs:restriction base="xs:string">
            <xs:maxLength value="10"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar011">
        <xs:restriction base="xs:string">
            <xs:maxLength value="11"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar020">
        <xs:restriction base="xs:string">
            <xs:maxLength value="20"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar035">
        <xs:restriction base="xs:string">
            <xs:maxLength value="35"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar040">
        <xs:restriction base="xs:string">
            <xs:maxLength value="40"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar050">
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar060">
        <xs:restriction base="xs:string">
            <xs:maxLength value="60"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Varchar100">
        <xs:restriction base="xs:string">
            <xs:maxLength value="100"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar200">
        <xs:restriction base="xs:string">
            <xs:maxLength value="200"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Varchar500">
        <xs:restriction base="xs:string">
            <xs:maxLength value="500"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal7-1">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="9999999.9"/>
            <xs:fractionDigits value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal7-2">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="9999999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal7-2NoZero">
        <xs:restriction base="xs:decimal">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="9999999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal7-1NoZero">
        <xs:restriction base="xs:decimal">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="9999999.9"/>
            <xs:fractionDigits value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal7-2-max150">
        <xs:restriction base="xs:decimal">
            <xs:maxInclusive value="150.00"/>
            <xs:fractionDigits value="2"/>
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:simpleType name="Decimal-1">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal-1NoZero">
        <xs:restriction base="xs:decimal">
            <xs:minExclusive value="0"/>
            <xs:fractionDigits value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal-2NoZero">
        <xs:restriction base="xs:decimal">
            <xs:minExclusive value="0"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal-2">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="PositiveDecimal7-2">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0.01"/>
            <xs:maxInclusive value="9999999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal4-2">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="9999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal4-2NoZero">
        <xs:restriction base="xs:decimal">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="9999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal8-1">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="99999999.9"/>
            <xs:fractionDigits value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal9-1">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999.9"/>
            <xs:fractionDigits value="1"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal9-2">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal9-3">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999.999"/>
            <xs:fractionDigits value="3"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Decimal10-2">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="9999999999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Decimal12-2">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999999.99"/>
            <xs:fractionDigits value="2"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Decimal12-3">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999999.999"/>
            <xs:fractionDigits value="3"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Anno">
        <xs:restriction base="xs:positiveInteger">
            <xs:totalDigits value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="IntegerNoZero">
        <xs:restriction base="xs:integer">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="9999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer4">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="9999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer5">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="99999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer8">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="99999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer2">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="99"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer8NoZero">
        <xs:restriction base="xs:integer">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="99999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="NonNegInteger8">
        <xs:restriction base="xs:nonNegativeInteger">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="99999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="NonNegInteger8NoZero">
        <xs:restriction base="xs:nonNegativeInteger">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="99999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer9">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer10">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="9999999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Integer15">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="999999999999999"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="OreMinuti">
        <xs:restriction base="xs:token">
            <xs:pattern value="(([0]?|1)[0-9]|2[0-3]):([0-5][0-9])"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Percent2">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2"/>
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="100"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="PH">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2"/>
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="14"/>
        </xs:restriction>
    </xs:simpleType>



    <xs:complexType name="MinMax_Decimal4-2">
        <xs:sequence>
            <xs:element name="Min" type="Decimal4-2NoZero" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Max" type="Decimal4-2NoZero" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:assert test="Max gt Min"/>
    </xs:complexType>

    <xs:complexType name="MinMax_Decimal7-2">
        <xs:sequence>
            <xs:element name="Min" type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Max" type="Decimal7-2NoZero" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:assert test="Max gt Min"/>
    </xs:complexType>


</xs:schema>


