<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="mfp:anaf:patrimoniu:v1"
  targetNamespace="mfp:anaf:patrimoniu:v1">
  <!-- tag root =  PATRIMONIU  -->
  <xs:element name="Patrimoniu">
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="xs:anyType">
          <xs:sequence>
            <!-- Bun tip AUTO  -->
            <xs:element minOccurs="0" maxOccurs="unbounded" name="Auto">
              <xs:complexType>
                <xs:complexContent>
                  <xs:restriction base="xs:anyType">
                    <xs:sequence>
                      <xs:element minOccurs="1" name="Registru" type="TypeRegistru"/>
                      <xs:element minOccurs="1" name="Date_auto" type="TypeAuto"/>
                      <xs:element minOccurs="1" maxOccurs="unbounded" name="Proprietar"
                        type="TypeProprietar"/>
                    </xs:sequence>
                  </xs:restriction>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
            <!-- Bun tip TEREN  -->
            <xs:element minOccurs="0" maxOccurs="unbounded" name="Teren">
              <xs:complexType>
                <xs:complexContent>
                  <xs:restriction base="xs:anyType">
                    <xs:sequence>
                      <xs:element minOccurs="1" name="Registru" type="TypeRegistru"/>
                      <xs:element minOccurs="1" maxOccurs="unbounded" name="Date_teren"
                        type="TypeTeren"/>
                      <xs:element minOccurs="1" maxOccurs="unbounded" name="Proprietar"
                        type="TypeProprietar"/>
                    </xs:sequence>
                  </xs:restriction>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
            <!-- Bun tip CLADIRE  -->
            <xs:element minOccurs="0" maxOccurs="unbounded" name="Cladire">
              <xs:complexType>
                <xs:complexContent>
                  <xs:restriction base="xs:anyType">
                    <xs:sequence>
                      <xs:element minOccurs="1" name="Registru" type="TypeRegistru"/>
                      <xs:element minOccurs="1" maxOccurs="unbounded" name="Date_cladire"
                        type="TypeCladire"/>
                      <xs:element minOccurs="1" maxOccurs="unbounded" name="Proprietar"
                        type="TypeProprietar"/>
                    </xs:sequence>
                  </xs:restriction>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <!-- Atribute de la tag-ul PATRIMONIU  -->
          <xs:attribute name="Cui_primarie" type="CuiSType" use="required"/>
          <xs:attribute name="Data_raportarii" type="DateSType" use="required"/>
          <xs:attribute name="nume_declar" type="denumireSType" use="required"/>
          <xs:attribute name="prenume_declar" type="denumireSType" use="required"/>
          <xs:attribute name="functie_declar" type="denumireSType" use="required"/>
          <xs:attribute name="totalPlata_A" type="xs:unsignedLong" use="required"/>
          <xs:attribute name="sterg_datele_anterioare" type="StergType"/>
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <!-- tag specific AUTO  -->
  <xs:complexType name="TypeAuto">
    <xs:attribute name="Marca_auto" type="denumireSType"/>
    <xs:attribute name="Tip_mijloc_auto" type="TipAutoSType" use="required"/>
    <xs:attribute name="Capacitate_cilindrica" type="xs:unsignedLong"/>
    <xs:attribute name="Serie_motor" type="denumireSType"/>
    <xs:attribute name="Serie_sasiu_caroserie" type="denumireSType"/>
    <xs:attribute name="Numar_circulatie" type="CSType"/>
  
  </xs:complexType>
  <!-- tag specific TEREN  -->
  <xs:complexType name="TypeTeren">
    <xs:attribute name="Intrav_extrav" type="TipIntravExtravSType" use="required"/>
    <xs:attribute name="Zona_teren" type="TipZonaAmplasareSType" use="required"/>
    <xs:attribute name="Categorie_teren" type="TipCategTerenSType" use="required"/>
    <xs:attribute name="Suprafata_totala_teren" type="Real152SType" use="required"/>
    <xs:attribute name="Suprafata_ocupata_teren" type="Real152SType" use="required"/>
    <xs:attribute name="Numar_cadastral" type="CSType"/>
    <xs:attribute name="Tarla_teren" type="CSType"/>
    <xs:attribute name="Parcela_teren" type="CSType"/>
 
  </xs:complexType>
  <!-- tag specific CLADIRE  -->
  <xs:complexType name="TypeCladire">
    <xs:attribute name="Corp_anexa" type="RecSType" />
    <xs:attribute name="Tip_asezare" type="TipAsezareSType" />
    <xs:attribute name="Tip_pereti" type="TipPeretiSType" />
    <xs:attribute name="Numar_etaje" type="xs:unsignedByte"/>
    <xs:attribute name="Destinatie_cladire" type="DestinatieCladireSType" use="required"/>
    <xs:attribute name="Tip_instalatie_incalzire" type="TipIncalzireSType"/>
    <xs:attribute name="Tip_supr" type="TipSuprafataSType" />
    <xs:attribute name="Supr_cladire" type="Real102SType" />
    <xs:attribute name="Supr_mansarda" type="Real102SType" />
    <xs:attribute name="Supr_subsol" type="Real102SType" />
    <xs:attribute name="Supr_piv" type="Real102SType" />
    <xs:attribute name="Data_constr_clad" type="DateSType" use="required"/>
    <xs:attribute name="Valoare_de_impunere_cladire" type="xs:unsignedLong" use="required"/>
    <xs:attribute name="CTGPJ" type="TipCTGPJSType" use="required"/>
    <xs:attribute name="Zona_amplasare" type="TipZonaAmplasareSType" use="required"/>
    <xs:attribute name="Valoare_achizitie" type="xs:unsignedLong"/>
    <xs:attribute name="Data_valoare_achizitie" type="DateSType"/>
    <xs:attribute name="Valoare_constructie" type="xs:unsignedLong"/>
    <xs:attribute name="Data_valoare_constructie" type="DateSType"/>
    <xs:attribute name="Valoare_evaluare" type="xs:unsignedLong"/>
    <xs:attribute name="Data_valoare_evaluare" type="DateSType"/>
    <xs:attribute name="Valoare_contabila" type="xs:unsignedLong"/>
    <xs:attribute name="Data_valoare_contabila" type="DateSType"/>
    <xs:attribute name="Nerezident_fara_val_decl" type="NerezSType"/>
  </xs:complexType>
  <!-- Registru - la fel pt. toate tipurile de bunuri  -->
  <xs:complexType name="TypeRegistru">
    <xs:complexContent>
      <xs:restriction base="xs:anyType">
        <xs:attribute name="Id_Registru" type="xs:unsignedLong" use="required"/>
        <xs:attribute name="Rec" type="RecSType" use="required"/>
        <xs:attribute name="Denumire_prop" type="denumireSType"/>
        <xs:attribute name="Data_modif" type="DateSType" use="required"/>
        <xs:attribute name="Cod_loc_prop" type="CodLocSType"/>
        <xs:attribute name="Den_loc_prop" type="locSType" use="required"/>
        <xs:attribute name="Cod_art_prop" type="CodArteraSType"/>
        <xs:attribute name="Den_art_prop" type="locSType" use="required"/>
        <xs:attribute name="Nr_postal_prop" type="nrPostalSType"/>
        <xs:attribute name="Bloc_prop" type="CSType"/>
        <xs:attribute name="Scara_prop" type="CSType"/>
        <xs:attribute name="Etaj_prop" type="CSType"/>
        <xs:attribute name="Ap_prop" type="CSType"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>
  <!-- Proprietarul (proprietarii) bunului  -->
  <xs:complexType name="TypeProprietar">
    <xs:complexContent>
      <xs:restriction base="xs:anyType">
        <xs:attribute name="Id_proprietar" type="xs:unsignedLong" use="required"/>
        <xs:attribute name="Tip_prop" type="tipPropSType" use="required"/>
        <xs:attribute name="nume" type="numeSType"/>
        <xs:attribute name="prenume" type="prenumeSType"/>
        <xs:attribute name="denumire_firma" type="denumireFirmaSType"/>
        <xs:attribute name="Cod_tara" type="CodTaraSType"/>
        <xs:attribute name="Denumire_tara" type="denumireSType"/>
        <xs:attribute name="Cod_judet" type="CodJudetSType"/>
        <xs:attribute name="Denumire_judet" type="denumireSType"/>
        <xs:attribute name="Cod_localitate" type="CodLocSType"/>
        <xs:attribute name="Denumire_localitate" type="denumireSType" use="required"/>
        <xs:attribute name="Cod_artera" type="CodArteraSType"/>
        <xs:attribute name="Denumire_artera" type="denumireSType"/>
        <xs:attribute name="Nr_postal" type="nrPostalSType"/>
        <xs:attribute name="Bloc" type="CSType"/>
        <xs:attribute name="Scara" type="CSType"/>
        <xs:attribute name="Etaj" type="CSType"/>
        <xs:attribute name="Ap" type="CSType"/>
        <xs:attribute name="Cota" type="Real32SType" use="required"/>
        <xs:attribute name="Cnp_cui" type="CifSType"/>
        <xs:attribute name="Data_dobandire" type="DateSType" use="required"/>
        <xs:attribute name="Numar_act_dobandire" type="CSType"/>
        <xs:attribute name="Data_instrainare" type="DateSType"/>
        <xs:attribute name="Numar_act_instrainare" type="CSType"/>
        <xs:attribute name="Proc_scu_transport" type="Real32SType"/>
        <xs:attribute name="Proc_scu_teren" type="Real32SType"/>
        <xs:attribute name="Proc_scu_cladiri" type="Real32SType"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="CodLocSType">
    <xs:restriction base="xs:unsignedInt">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="999999"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CodArteraSType">
    <xs:restriction base="xs:unsignedInt">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="99999"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CodTaraSType">
    <xs:restriction base="xs:unsignedInt">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="999"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CodJudetSType">
    <xs:restriction base="xs:unsignedInt">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="99"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Data format = zz.ll.aaaa -->
  <xs:simpleType name="DateSType">
    <xs:restriction base="xs:token">
      <xs:pattern value="([1-9]|0[1-9]|[12][0-9]|3[01])\.([1-9]|0[1-9]|1[012])\.\d{4}"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Poate fi CNP sau CUI  -->
  <xs:simpleType name="CifSType">
    <xs:restriction base="xs:token">
      <xs:pattern value="[1-9]\d{12}|[1-9]\d{1,9}"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Doar CUI  -->
  <xs:simpleType name="CuiSType">
    <xs:restriction base="xs:token">
      <xs:pattern value="[1-9]\d{1,9}"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 0=anexa, 1=corp principal  -->
  <xs:simpleType name="RecSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NerezSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Urmeaza a fi definit nomenclatorul  -->
  <xs:simpleType name="TipAsezareSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 1= cu pereti din caramida arsa, piatra, beton - fara cadre beton
       2= cu pereti din lemn, caramida nearsa, valatuci, chirpici
       3= cu structura de beton  -->
  <xs:simpleType name="TipPeretiSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 1= cladire de locuit
    2= servind scopului profesional
    3= orice destinatie, dar acoperita cu stuf, paie, coceni
    4= orice alta destinatie, cu alt tip de acoperis  -->
  <xs:simpleType name="DestinatieCladireSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
      <xs:enumeration value="4"/>
    </xs:restriction>
  </xs:simpleType>
  <!--Variante:
    IC=incalzire centrala
    IES=instalatii electrice si sanitare
    DD=are IC si IES
    DN=are IC si nu are IES
    ND=nu are IC si are IES
    NN=nu are IC si nu are IES  -->
  <xs:simpleType name="TipIncalzireSType">
    <xs:restriction base="xs:token">
      <xs:pattern value="[DN][DN]"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 1= stabilita cu masuratori interioare peretilor
    2= stabilita cu masuratori exterioare peretilor  -->
  <xs:simpleType name="TipSuprafataSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 0= valoare stabilita
    1= valoare contabila p.j.  -->
  <xs:simpleType name="TipCTGPJSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- zona = A, B, C sau D -->
  <xs:simpleType name="TipZonaAmplasareSType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="A"/>
      <xs:enumeration value="B"/>
      <xs:enumeration value="C"/>
      <xs:enumeration value="D"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 0= intravilan
    1= extravilan  -->
  <xs:simpleType name="TipIntravExtravSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- 1= proprietar
    2= bun in folosinta  -->
  <xs:simpleType name="tipPropSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TipCategTerenSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="17"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TipAutoSType">
    <xs:restriction base="xs:unsignedByte">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="155"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="denumireSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="CSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="20"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="locSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="100"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="numeSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="120"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="prenumeSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="128"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="denumireFirmaSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="120"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="nrPostalSType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="40"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="StergType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="C3SType">
    <xs:restriction base="xs:token">
      <xs:maxLength value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Real32SType">
    <xs:restriction base="xs:double">
      <xs:pattern value="\d{0,3}(\.\d{0,2})?"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Real152SType">
    <xs:restriction base="xs:double">
      <xs:pattern value="\d{0,15}(\.\d{0,2})?"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Real102SType">
    <xs:restriction base="xs:double">
      <xs:pattern value="\d{0,10}(\.\d{0,2})?"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
