<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema
    targetNamespace="urn:cz:isvs:aisc:schemas:AiscCtiTypy:v1"
    xmlns:self="urn:cz:isvs:aisc:schemas:AiscCtiTypy:v1"
    xmlns:reg="urn:cz:isvs:reg:schemas:RegTypy:v1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    version="3.1"
>

  <xs:annotation>
    <xs:documentation xml:lang="cs">XML schéma s definicemi dat pro dotazování AISC.</xs:documentation>
  </xs:annotation>


  <xs:import namespace="urn:cz:isvs:reg:schemas:RegTypy:v1" schemaLocation="../../RegTypy.xsd" />

  <xs:complexType name="OsobaCis">
    <xs:sequence>
      <xs:element name="Aifo" type="reg:LokalniAifoType" nillable="true" minOccurs="0" />

      <!-- polozky se stavem -->
      <xs:element name="Prijmeni" type="self:PrijmeniStav" minOccurs="0" />
      <xs:element name="Jmeno" type="self:JmenoStav" minOccurs="0" />
      <xs:element name="RodnePrijmeni" type="self:TextStav" nillable="true" minOccurs="0" />
      <xs:element name="DatumNarozeni" type="self:DatumStav" nillable="true" minOccurs="0" />
      <xs:element name="Pohlavi" type="self:PohlaviStav" nillable="true" minOccurs="0" />
      <xs:element name="DatumUmrti" type="self:DatumStav" nillable="true" minOccurs="0" />
      <xs:element name="DatumPravniMociUmrti" type="self:DatumStav" nillable="true" minOccurs="0" />
      <xs:element name="AdresaMistaPobytu" type="self:AdresaPobytuStav" nillable="true" minOccurs="0" />
      <xs:element name="DorucovaciAdresa" type="self:DorucovaciAdresaStav" nillable="true" minOccurs="0" />
      <xs:element name="Obcanstvi" type="self:ObcanstviStav" nillable="true" minOccurs="0" />
      <xs:element name="DalsiObcanstvi" type="self:DalsiObcanstvi" nillable="true" minOccurs="0" />
      <xs:element name="MistoNarozeni" type="self:MistoStav" nillable="true" minOccurs="0" />
      <xs:element name="MistoUmrti" type="self:MistoStav" nillable="true" minOccurs="0" />
      <xs:element name="Svepravnost" type="self:SvepravnostStav" nillable="true" minOccurs="0" />
      <xs:element name="RodinnyStav" type="self:RodinnyStavStav" nillable="true" minOccurs="0" />

      <!-- polozky bez stavu -->
      <xs:element name="RodneCislo" type="self:RodneCislo" nillable="true" minOccurs="0" />
      <xs:element name="OstatniJmena" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="PocatekAUkonceniPobytu" type="self:SkutecnyPobyt" nillable="true" minOccurs="0" />
      <xs:element name="CisloPlatnostOpravneniKPobytu" type="self:PovoleniKPobytu" nillable="true" minOccurs="0" />
      <xs:element name="DruhPobytu" type="self:PolozkaCiselniku" nillable="true" minOccurs="0" />
      <xs:element name="Vyhosteni" type="self:VyhosteniList" nillable="true" minOccurs="0" />
      <xs:element name="Vztah" type="self:Vztah" nillable="true" minOccurs="0" />
      <xs:element name="Otec" type="self:Otec" nillable="true" minOccurs="0" />
      <xs:element name="Matka" type="self:Matka" nillable="true" minOccurs="0" />
      <xs:element name="Deti" type="self:DiteList" nillable="true" minOccurs="0" />
      <xs:element name="NezaopatreneOsoby" type="self:NezaopatrenaOsobaList" nillable="true" minOccurs="0" />
      <xs:element name="ZakonniZastupci" type="self:ZakonnyZastupceList" nillable="true" minOccurs="0" />

      <xs:element name="Volby" type="self:VolbaList" nillable="true" minOccurs="0" />
      <xs:element name="Zamestnani" type="self:ZamestnavatelList" nillable="true" minOccurs="0" />
      <xs:element name="Nezvestnost" type="self:Nezvestnost" nillable="true" minOccurs="0" />
      <xs:element name="ZakazyPobytu" type="self:ZakazPobytuList" nillable="true" minOccurs="0" />
      <xs:element name="Osvojenec" type="self:Osvojenec" nillable="true" minOccurs="0" />

      <!-- minule -->
      <xs:element name="MinuleAdresyMistaPobytu" type="self:AdresaPobytuList" nillable="true" minOccurs="0" />
      <xs:element name="MinulaRodnaCisla" type="self:MinuleRodneCisloList" nillable="true" minOccurs="0" />
      <xs:element name="MinulaJmena" type="self:MinuleJmenoList" nillable="true" minOccurs="0" />
      <xs:element name="MinulaPrijmeni" type="self:MinulePrijmeniList" nillable="true" minOccurs="0" />
      <xs:element name="MinulaRodnaPrijmeni" type="self:MinuleRodnePrijmeniList" nillable="true" minOccurs="0" />
      <xs:element name="MinulePohlavi" type="self:MinulePohlavi" nillable="true" minOccurs="0" />
      <xs:element name="MinuleVztahy" type="self:MinulyVztahList" nillable="true" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MinulyVztahList">
    <xs:sequence>
      <xs:element name="MinulyVztah" type="self:MinulyVztah" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MinuleRodnePrijmeniList">
    <xs:sequence>
      <xs:element name="MinuleRodnePrijmeni" type="self:MinuleRodnePrijmeni" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MinulePrijmeniList">
    <xs:sequence>
      <xs:element name="MinulePrijmeni" type="self:MinulePrijmeni" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MinuleJmenoList">
    <xs:sequence>
      <xs:element name="MinuleJmeno" type="self:MinuleJmeno" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MinuleRodneCisloList">
    <xs:sequence>
      <xs:element name="MinuleRodneCislo" type="self:MinuleRodneCislo" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AdresaPobytuList">
    <xs:sequence>
      <xs:element name="AdresaPobytu" type="self:AdresaPobytu" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ZakazPobytuList">
    <xs:sequence>
      <xs:element name="ZakazPobytu" type="self:ZakazPobytu" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ZamestnavatelList">
    <xs:sequence>
      <xs:element name="Zamestnavatel" type="self:Zamestnavatel" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ZakonnyZastupceList">
    <xs:sequence>
      <xs:element name="ZakonnyZastupce" type="self:ZakonnyZastupce" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="VolbaList">
    <xs:sequence>
      <xs:element name="Volba" type="self:Volba" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NezaopatrenaOsobaList">
    <xs:sequence>
      <xs:element name="NezaopatrenaOsoba" type="self:NezaopatrenaOsoba" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DiteList">
    <xs:sequence>
      <xs:element name="Dite" type="self:Dite" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="VyhosteniList">
    <xs:sequence>
      <xs:element name="Vyhosteni" type="self:Vyhosteni" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Svepravnost">
    <xs:complexContent>
      <xs:extension base="self:PolozkaCiselniku">
        <xs:sequence>
          <xs:element name="PravniMoc" type="self:Datum" minOccurs="0" />
          <xs:element name="CisloJednaci" type="xs:string" minOccurs="0" />
          <xs:element name="Soud" type="self:PolozkaCiselniku" minOccurs="0" />
          <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
          <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="DalsiObcanstvi">
    <xs:sequence>
      <xs:element name="Obcanstvi" type="self:ObcanstviStav" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SvepravnostStav">
    <xs:sequence>
      <xs:element name="Svepravnost" type="self:Svepravnost" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="stav" type="reg:StavType" />
  </xs:complexType>


  <xs:complexType name="Osvojenec">
    <xs:sequence>
      <xs:element name="TypOsvojeni" type="xs:int" nillable="true" minOccurs="0" />
      <xs:element name="PuvodniRodneCislo" type="self:RodneCislo" nillable="true" minOccurs="0" />
      <xs:element name="PuvodniJmeno" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="PuvodniPrijmeni" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="OsvojitelkaDatumOd" type="self:Datum" nillable="true" minOccurs="0" />
      <xs:element name="OsvojitelkaDatumDo" type="self:Datum" nillable="true" minOccurs="0" />
      <xs:element name="OsvojitelDatumOd" type="self:Datum" nillable="true" minOccurs="0" />
      <xs:element name="OsvojitelDatumDo" type="self:Datum" nillable="true" minOccurs="0" />
      <xs:element name="OtecRodneCislo" type="self:RodneCislo" nillable="true" minOccurs="0" />
      <xs:element name="OtecDatumNarozeni" type="self:Datum" nillable="true" minOccurs="0" />
      <xs:element name="OtecJmeno" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="OtecPrijmeni" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="OtecRodnePrijmeni" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="OtecLokalniAifo" type="reg:LokalniAifoType" nillable="true" minOccurs="0" />
      <xs:element name="MatkaRodneCislo" type="self:RodneCislo" nillable="true" minOccurs="0" />
      <xs:element name="MatkaDatumNarozeni" type="self:Datum" nillable="true" minOccurs="0" />
      <xs:element name="MatkaJmeno" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="MatkaPrijmeni" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="MatkaRodnePrijmeni" type="xs:string" nillable="true" minOccurs="0" />
      <xs:element name="MatkaLokalniAifo" type="reg:LokalniAifoType" nillable="true" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>


  <xs:complexType name="Nezvestnost">
    <xs:sequence>
      <xs:element name="DatumUcinnosti" type="self:Datum" minOccurs="0" />
      <xs:element name="DatumPravniMoci" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Volba">
    <xs:sequence>
      <xs:element name="TypVoleb" type="xs:string" />
      <xs:element name="DatumZapisu" type="self:Datum" />
      <xs:element name="Prekazka" type="xs:boolean" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Zamestnavatel">
    <xs:sequence>
      <xs:element name="Ico" type="self:Ico" minOccurs="0" />
      <xs:element name="Nazev" type="xs:string" minOccurs="0" />
      <xs:element name="Sidlo" type="self:Adresa" minOccurs="0" />
      <xs:element name="Od" type="self:Datum" minOccurs="0" />
      <xs:element name="Do" type="self:Datum" minOccurs="0" />
      <xs:element name="PracovniZarazeni" type="self:PracovniZarazeni" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="MistoVykonuPrace" type="self:MistoVykonuPrace" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="Ico">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d{1,8}" />
    </xs:restriction>
  </xs:simpleType>


  <xs:complexType name="PracovniZarazeni">
    <xs:sequence>
      <xs:element name="TextIsco" type="xs:string" minOccurs="0" />
      <xs:element name="Nazev" type="xs:string" />
      <xs:element name="Od" type="self:Datum" minOccurs="0" />
      <xs:element name="Do" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MistoVykonuPrace">
    <xs:sequence>
      <xs:element name="TypUzemnihoCelku" type="xs:string" minOccurs="0" />
      <xs:element name="KodUzemnihoCelku" type="xs:long" minOccurs="0" />
      <xs:element name="TextUzemnihoCelku" type="xs:string" />
      <xs:element name="Od" type="self:Datum" minOccurs="0" />
      <xs:element name="Do" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ZakazPobytu">
    <xs:sequence>
      <xs:element name="MistoZakazuPobytu" type="self:MistoZakazuPobytu" minOccurs="0" />
      <xs:element name="DruhRizeni" type="self:TypRizeni" minOccurs="0" />
      <xs:element name="DatumPravniMoci" type="self:Datum" minOccurs="0" />
      <xs:element name="Od" type="self:Datum" minOccurs="0" />
      <xs:element name="Do" type="self:Datum" minOccurs="0" />
      <xs:element name="Ovm" type="xs:string" minOccurs="0" />
      <xs:element name="OvmIc" type="xs:string" minOccurs="0" />
      <xs:element name="OvmCj" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="TypRizeni">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Spravni" />
      <xs:enumeration value="Soudni" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="MistoZakazuPobytu">
    <xs:sequence>
      <xs:element name="TypUzemnihoCelku" type="xs:string" minOccurs="0" />
      <xs:element name="KodUzemnihoCelku" type="xs:long" minOccurs="0" />
      <xs:element name="TextUzemnihoCelku" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>


  <!-- Polozky se stavem -->
  <xs:complexType name="PrijmeniStav">
    <xs:complexContent>
      <xs:extension base="self:PolozkaStav">
        <xs:sequence>
          <xs:element name="Prijmeni" type="xs:string" nillable="true" />
          <xs:element name="PrijmeniMatricni" type="xs:string" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="JmenoStav">
    <xs:complexContent>
      <xs:extension base="self:PolozkaStav">
        <xs:sequence>
          <xs:element name="Jmeno" type="xs:string" nillable="true" />
          <xs:element name="JmenoMatricni" type="xs:string" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DatumStav">
    <xs:simpleContent>
      <xs:extension base="self:Datum">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="TextStav">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="MistoStav">
    <xs:complexContent>
      <xs:extension base="self:Misto">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AdresaPobytuStav">
    <xs:complexContent>
      <xs:extension base="self:AdresaPobytu">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DorucovaciAdresaStav">
    <xs:complexContent>
      <xs:extension base="self:DorucovaciAdresa">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DorucovaciAdresa">
    <xs:complexContent>
      <xs:extension base="self:Adresa">
        <xs:sequence>
          <xs:element name="Typ" type="xs:string" minOccurs="0" />
          <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
          <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ObcanstviStav">
    <xs:complexContent>
      <xs:extension base="self:Stat">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <!-- Minule polozky -->
  <xs:complexType name="MinuleJmeno">
    <xs:sequence>
      <xs:element name="Jmeno" type="xs:string" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MinulePrijmeni">
    <xs:sequence>
      <xs:element name="Prijmeni" type="xs:string" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MinuleRodnePrijmeni">
    <xs:sequence>
      <xs:element name="RodnePrijmeni" type="xs:string" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MinulePohlavi">
    <xs:sequence>
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MinuleRodneCislo">
    <xs:sequence>
      <xs:element name="RodneCislo" type="self:RodneCislo" minOccurs="0" />
      <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MinulyVztah">
    <xs:sequence>
      <xs:element name="Typ" type="self:TypVztahu" minOccurs="0" />
      <xs:element name="DuvodUkonceni" type="self:PolozkaCiselniku" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <!-- Zakladni typy -->
  <xs:complexType name="Vztah">
    <xs:sequence>
      <xs:element name="Typ" type="self:TypVztahu" minOccurs="0" />
      <xs:element name="Partner" type="self:Partner" minOccurs="0" />
      <xs:element name="MistoUzavreniManzelstviPartnerstvi" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Dite">
    <xs:complexContent>
      <xs:extension base="self:FyzickaOsoba">
        <xs:sequence>
          <xs:element name="MistoNarozeni" type="self:Misto" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="ZakonnyZastupce">
    <xs:sequence>
      <xs:choice>
        <xs:element name="FyzickaOsoba" type="self:FyzickaOsoba" minOccurs="0" />
        <xs:element name="Nazev" type="xs:string" minOccurs="0" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Partner">
    <xs:complexContent>
      <xs:extension base="self:FyzickaOsoba" />
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="Otec">
    <xs:complexContent>
      <xs:extension base="self:FyzickaOsoba" />
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="Matka">
    <xs:complexContent>
      <xs:extension base="self:FyzickaOsoba" />
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="NezaopatrenaOsoba">
    <xs:complexContent>
      <xs:extension base="self:FyzickaOsoba">
        <xs:sequence>
          <xs:element name="Typ" type="self:PolozkaCiselniku" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="FyzickaOsoba">
    <xs:sequence>
      <xs:element name="RodneCislo" type="self:RodneCislo" minOccurs="0" />
      <xs:element name="DatumNarozeni" type="self:Datum" minOccurs="0" />
      <xs:element name="Prijmeni" type="xs:string" minOccurs="0" />
      <xs:element name="PrijmeniMatricni" type="xs:string" minOccurs="0" />
      <xs:element name="Jmeno" type="xs:string" minOccurs="0" />
      <xs:element name="JmenoMatricni" type="xs:string" minOccurs="0" />
      <xs:element name="Obcanstvi" type="self:Stat" minOccurs="0" />
      <xs:element name="RodnePrijmeni" type="xs:string" minOccurs="0" />
      <xs:element name="LokalniAifo" type="reg:LokalniAifoType" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AdresaPobytu">
    <xs:complexContent>
      <xs:extension base="self:Adresa">
        <xs:sequence>
          <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
          <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
        </xs:sequence>
        <xs:attribute name="adresaUradu" type="xs:boolean">
          <xs:annotation>
            <xs:documentation xml:lang="cs">
              false - nejde o pobyt na adrese úřadu,
              true - jde o pobyt na adrese úřadu
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="Adresa">
    <xs:sequence>
      <xs:element name="Idam" type="xs:long" minOccurs="0" />
      <xs:element name="Text" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Misto">
    <xs:sequence>
      <xs:element name="Stat" type="self:Stat" nillable="true" minOccurs="0" />
      <xs:element name="Okres" type="self:PlaceItem" nillable="true" minOccurs="0" />
      <xs:element name="Typ" type="self:MistoType" minOccurs="0" />
      <xs:element name="RuianId" type="xs:long" nillable="true" minOccurs="0" />
      <xs:element name="Text" type="xs:string" nillable="true" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="MistoType">
    <xs:annotation>
      <xs:documentation xml:lang="cs">
        Obec - v elementech RuianId a Text je kod a název obce,
        Obvod - v elementech RuianId a Text je kod a název Městského obvodu Praha
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Obec" />
      <xs:enumeration value="Obvod" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="PlaceItem">
    <xs:sequence>
      <xs:element name="Kod" type="xs:long" minOccurs="0" />
      <xs:element name="Nazev" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PovoleniKPobytu">
    <xs:sequence>
      <xs:element name="Cislo" type="xs:string" minOccurs="0" />
      <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SkutecnyPobyt">
    <xs:sequence>
      <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Vyhosteni">
    <xs:sequence>
      <xs:element name="Typ" type="self:TypVyhosteni" minOccurs="0" />
      <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
      <xs:element name="DatumDo" type="self:Datum" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RodinnyStav">
    <xs:complexContent>
      <xs:extension base="self:PolozkaCiselniku">
        <xs:sequence>
          <xs:element name="DatumOd" type="self:Datum" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RodinnyStavStav">
    <xs:complexContent>
      <xs:extension base="self:RodinnyStav">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="Stat">
    <xs:complexContent>
      <xs:extension base="self:PolozkaCiselniku">
        <xs:sequence>
          <xs:element name="KodCsu" type="xs:int" minOccurs="0" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="PolozkaCiselniku">
    <xs:sequence>
      <xs:element name="Kod" type="xs:string" minOccurs="0" />
      <xs:element name="Nazev" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PolozkaStav" abstract="true">
    <xs:attribute name="stav" type="reg:StavType" use="required" />
  </xs:complexType>

  <xs:simpleType name="PSC">
    <xs:annotation>
      <xs:documentation xml:lang="cs">Poštovní směrovací číslo
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="\d{5}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RodneCislo">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d{6}/\d{3}\d?)?" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="Datum">
    <xs:annotation>
      <xs:documentation xml:lang="en">Datum ve formátu DD.MM.YYYY, kde nula znamená neurčenou hodnotu.
        Příklady hodnot:
          00.XX.XXXX OK
          00.00.XXXX OK
          00.00.0000 OK
          XX.00.XXXX NOT OK
          XX.XX.0000 NOT OK
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="\d{1,2}\.\d{1,2}\.\d{4}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="Pohlavi">
    <xs:restriction base="xs:string">
      <xs:enumeration value="M" />
      <xs:enumeration value="Z" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="PohlaviStav">
    <xs:simpleContent>
      <xs:extension base="self:Pohlavi">
        <xs:attribute name="stav" type="reg:StavType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="TypVztahu">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Manzelstvi" />
      <xs:enumeration value="Partnerstvi" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TypVyhosteni">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Spravni" />
      <xs:enumeration value="Soudni" />
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
