<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:simpleType name="myString">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="myString_obbl">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:minLength value="1" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CodFisc">
        <xs:restriction base="myString">
            <xs:maxLength value="16" />
            <xs:minLength value="11" />
            <xs:pattern value="([A-Za-z0-9]+)?" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PIva">
        <xs:restriction base="myString">
            <xs:length value="11" />
            <xs:pattern value="([0-9]+)?" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CodFiscPIvaObbl">
        <xs:restriction base="myString">
            <xs:maxLength value="16" />
            <xs:minLength value="11" />
            <xs:pattern value="[0-9]{11}|[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Cua">
        <xs:restriction base="myString">
            <xs:length value="30" />
            <xs:pattern value="([0-9]+)?" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Versione">
        <xs:restriction base="myString">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="[1-9][0-9]*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CPV">
        <xs:restriction base="xs:string">
            <xs:minLength value="0" />
            <xs:maxLength value="10" />
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="([0-9]{8}-[0-9])?" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CPV_obbl">
        <xs:restriction base="xs:string">
            <xs:minLength value="0" />
            <xs:maxLength value="10" />
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="[0-9]{8}-[0-9]" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="COD_ISTAT">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="[0-9]{9}" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="myDecimal">
        <xs:restriction base="xs:decimal">
            <xs:whiteSpace value="collapse" />
        </xs:restriction>
    </xs:simpleType>
    <!--
    <xs:simpleType name="myDecimal">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="(0|0\.0|[1-9]([0-9]+)?(\.[0-9]+)?)?" />
        </xs:restriction>
    </xs:simpleType>
    -->
    <xs:simpleType name="myDate">
        <xs:restriction base="xs:date">
            <xs:whiteSpace value="collapse" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="SiNo">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:length value="1" />
            <xs:pattern value="[Y]|[N]" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="myTime">
        <xs:restriction base="xs:time">
            <xs:whiteSpace value="collapse" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ContentType">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="[application/pdf]{15}|[text/richtext]{13}" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CUP">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="([A-Z][0-9]{2}[A-Z][0-9]{11})?" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CAT">
        <xs:restriction base="xs:int">
            <xs:pattern value="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="NaturaGiuridica">
        <xs:restriction base="xs:int">
            <xs:pattern value="01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|50|51|52|53|54|55|56|90" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CAP">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="[0-9]{5}" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PROV">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:length value="2" fixed="true" />
            <xs:pattern value="[A-Z]{2}" />
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="PeGi">
		<xs:sequence>
			<xs:element name="codice_fiscale" type="CodFiscPIvaObbl" />
			<xs:element name="partita_iva" type="PIva" />
			<xs:element name="ragione_sociale" type="myString_obbl" />
			<xs:element name="natura_giuridica" type="NaturaGiuridica" />
			<xs:element name="indirizzo" type="xs:string" nillable="true" />
			<xs:element name="cap" type="CAP" nillable="true" />
			<xs:element name="cod_istat_comune" type="COD_ISTAT" />
			<xs:element name="comune" type="myString_obbl" />
			<xs:element name="provincia" type="PROV" />
			<xs:element name="telefono" type="xs:string" nillable="true" />
			<xs:element name="telefax" type="xs:string" nillable="true" />
			<xs:element name="email" type="xs:string" nillable="true" />
		</xs:sequence>
		<xs:attribute name="num" type="xs:int" />
    </xs:complexType>
    <xs:simpleType name="PeGiSpec">
        <xs:restriction base="xs:int">
            <xs:pattern value="1|2|3" />
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="PeGi_agg">
		<xs:sequence>
			<xs:element name="codice_fiscale" type="CodFiscPIvaObbl" />
			<xs:element name="partita_iva" type="PIva" />
			<xs:element name="ragione_sociale" type="myString_obbl" />
			<xs:element name="natura_giuridica" type="NaturaGiuridica" />
			<xs:element name="indirizzo" type="xs:string" nillable="true" />
			<xs:element name="cap" type="CAP" nillable="true" />
			<xs:element name="cod_istat_comune" type="COD_ISTAT" />
			<xs:element name="comune" type="myString_obbl" />
			<xs:element name="provincia" type="PROV" />
			<xs:element name="telefono" type="xs:string" nillable="true" />
			<xs:element name="telefax" type="xs:string" nillable="true" />
			<xs:element name="email" type="xs:string" nillable="true" />
			<xs:element name="specifica" type="PeGiSpec" />
		</xs:sequence>
		<xs:attribute name="num" type="xs:int" />
    </xs:complexType>
    <xs:simpleType name="Qualifica">
        <xs:restriction base="xs:int">
            <xs:pattern value="1|2|3|4|5|6|7|8|9|10|11" />
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="PeFi">
		<xs:sequence>
			<xs:element name="codice_fiscale" type="CodFisc" />
			<xs:element name="titolo" type="Qualifica" />
			<xs:element name="nome" type="myString_obbl" />
			<xs:element name="cognome" type="myString_obbl" />
			<xs:element name="indirizzo" type="xs:string" nillable="true" />
			<xs:element name="cap" type="CAP" nillable="true" />
			<xs:element name="cod_istat_comune" type="COD_ISTAT" />
			<xs:element name="comune" type="myString_obbl" />
			<xs:element name="provincia" type="PROV" />
			<xs:element name="telefono" type="xs:string" nillable="true" />
			<xs:element name="telefax" type="xs:string" nillable="true" />
			<xs:element name="email" type="xs:string" nillable="true" />
		</xs:sequence>
    </xs:complexType>
    <xs:simpleType name="FasciaCategoriaScorporabile">
        <xs:restriction base="xs:int">
            <xs:pattern value="0|1|2|3|4|5|6|7|8" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="string_max10">
        <xs:restriction base="xs:string">
            <xs:maxLength value="10" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="string_max250">
        <xs:restriction base="xs:string">
            <xs:maxLength value="250" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="AppartenenteA">
        <xs:restriction base="xs:string">
            <xs:pattern value="settori ordinari|settori speciali" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="DaRealizzarsiCon">
        <xs:restriction base="xs:string">
            <xs:pattern value="appalto|concessione" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
