<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.ispop.cz" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="F_VOD_PV">
    <xs:complexType>
      <xs:sequence>
        
        <xs:element name="meta-info" type="MetaInfoType" />
      
        <xs:element name="Sekce1">
          <xs:complexType>
            <xs:all>
              <xs:element name="Rok" type="xs:nonNegativeInteger" />
              <xs:element name="NazevOdberatele" type="NotEmptyStringType" />
              <xs:element name="ZakladUdaje">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="DuvodHlaseniPriznani" type="NotEmptyStringType" />
                    <xs:element name="JeZasobovan" type="xs:boolean" />
                    <xs:element name="JeOstatniUziti" type="xs:boolean" />
                    <xs:element name="Kraj" type="NotEmptyStringType" />
                    <xs:element name="Inspektorat" type="NotEmptyStringType" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="Sidlo">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Ulice" type="NotEmptyStringType" />
                    <xs:element name="Tel" type="xs:string" minOccurs="0" />
                    <xs:element name="CP" type="xs:string" minOccurs="0" />
                    <xs:element name="Fax" type="xs:string" minOccurs="0" />
                    <xs:element name="Obec" type="NotEmptyStringType" />
                    <xs:element name="Email" type="NotEmptyStringType" />
                    <xs:element name="Psc" type="PscType" />
                    <xs:element name="IC" type="ICType" />
                    <xs:element name="ObecSRozsPusob" type="xs:string" minOccurs="0" />
                    <xs:element name="DIC" type="xs:string" minOccurs="0" />
                    <xs:element name="Kraj" type="xs:string" minOccurs="0" />
                    <xs:element name="CelniUrad" type="NotEmptyStringType" />
                    <xs:element name="OKEC" type="xs:string" minOccurs="0" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="Banka">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Banka" type="xs:string" minOccurs="0" />
                    <xs:element name="Ucet" type="xs:string" minOccurs="0" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="Sekce2">
          <xs:complexType>
            <xs:all>
              <xs:element name="Zdroj">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="NazevZdroje" type="xs:string" minOccurs="0" />
                    <xs:element name="Obec" type="xs:string" minOccurs="0" />
                    <xs:element name="ObecRozPusob" type="xs:string" minOccurs="0" />
                    <xs:element name="Katastr" type="xs:string" minOccurs="0" />
                    <xs:element name="Kraj" type="xs:string" minOccurs="0" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="PovoleneUdaje">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Povol1" type="PovoleneUdajeType" />
                    <xs:element name="Povol2" type="PovoleneUdajeType" />
                    <xs:element name="Povol3" type="PovoleneUdajeType" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="Sekce3">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="OdberyZasobPit1" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit2" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit3" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit4" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit5" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit6" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit7" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit8" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit9" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit10" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit11" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit12" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit13" type="OdberyProZasobType" />
              <xs:element name="OdberyZasobPit14" type="OdberyProZasobType" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Sekce4">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="OdberyOstat1" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat2" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat3" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat4" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat5" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat6" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat7" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat8" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat9" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat10" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat11" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat12" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat13" type="OdberyProZasobType" />
              <xs:element name="OdberyOstat14" type="OdberyProZasobType" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Sekce5">
          <xs:complexType>
            <xs:all>
              <xs:element name="PoplatekVelkyOdber">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="PoplatekVelkyOdber1" type="PoplatekType" />
                    <xs:element name="PoplatekVelkyOdber2" type="PoplatekType" />
                    <xs:element name="PoplatekVelkyOdber3" type="PoplatekType" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="PoplatekMalyOdber">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="PoplatekMalyOdber1" type="PoplatekType" />
                    <xs:element name="PoplatekMalyOdber2" type="PoplatekType" />
                    <xs:element name="PoplatekMalyOdber3" type="PoplatekType" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="NavrhVyrovnani">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Vyrovnani1" type="VyrovnaniType" />
                    <xs:element name="Vyrovnani2" type="VyrovnaniType" />
                    <xs:element name="Vyrovnani3" type="VyrovnaniType" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="Zaver">
          <xs:complexType>
            <xs:all>
              <xs:element name="Odberatel">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Titul" type="xs:string" minOccurs="0" />
                    <xs:element name="Prijmeni" type="xs:string" minOccurs="0" />
                    <xs:element name="Jmeno" type="xs:string" minOccurs="0" />
                    <xs:element name="Funkce" type="xs:string" minOccurs="0" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="Datum" type="xs:date" minOccurs="0"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="Prilohy">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Priloha" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Duvod" type="xs:string" minOccurs="0" /> <!-- nepouziva se, v budoucnu bude nejspise odstranen -->
                    <xs:element name="PitnaVoda" type="xs:boolean" minOccurs="0" />
                    <xs:element name="OstatniUziti" type="xs:boolean" minOccurs="0" />
                    <xs:element name="IDOdberu" type="xs:string" minOccurs="0" />
                    <xs:element name="NazevOdber" type="xs:string" minOccurs="0" />
                    <xs:element name="NazevZdroj" type="xs:string" minOccurs="0" />
                    <xs:element name="NazevMistaOdberu" type="xs:string" minOccurs="0" />
                    <xs:element name="Obec" type="xs:string" minOccurs="0" />
                    <xs:element name="ObecRozPus" type="xs:string" minOccurs="0" />
                    <xs:element name="Kraj" type="xs:string" minOccurs="0" />
                    <xs:element name="Katastr" type="xs:string" minOccurs="0" />
                    <xs:element name="HydroRajon" type="xs:string" minOccurs="0" />
                    <xs:element name="HydroPoradi" type="xs:string" minOccurs="0" />
                    <xs:element name="PovoleniVydana">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="Povoleni">
                            <xs:complexType>
                              <xs:all>
                                <xs:element name="Vydejce" type="xs:string" minOccurs="0" />
                                <xs:element name="CJ" type="xs:string" minOccurs="0" />
                                <xs:element name="Datum" type="xs:date" minOccurs="0" />
                              </xs:all>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="PovoleneMnozstvi">
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="Rok" type="xs:decimal" minOccurs="0" />
                          <xs:element name="Mesic" type="xs:decimal" minOccurs="0" />
                          <xs:element name="LitrySekundu" type="xs:decimal" minOccurs="0" />
                          <xs:element name="PrumerLzS" type="xs:decimal" minOccurs="0" />
                          <xs:element name="OstatniDoplnUdaj" type="xs:decimal" minOccurs="0" />
                        </xs:all>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="ZpusobOdberu" type="xs:string" minOccurs="0" />
                    <xs:element name="Meridlo">
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="Typ" type="xs:string" minOccurs="0" />
                          <xs:element name="EvidCislo" type="xs:string" minOccurs="0" />
                          <xs:element name="OvereniProvedl" type="xs:string" minOccurs="0" />
                          <xs:element name="DatumOvereni" type="xs:date" minOccurs="0" />
                          <xs:element name="PlatnostOvereniDo" type="xs:date" minOccurs="0" />
                        </xs:all>
                      </xs:complexType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="PovoleneUdajeType">
    <xs:sequence>
      <xs:element name="PovoleneUdaje">
        <xs:complexType>
          <xs:all>
            <xs:element name="PovolOdber" type="xs:decimal" minOccurs="0" />
            <xs:element name="Zaloha" type="xs:decimal" minOccurs="0" />
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OdberyProZasobType">
    <xs:all>
      <xs:element name="SkutecnyOdber" type="xs:decimal" minOccurs="0" />
      <xs:element name="OdberMinusLimit" type="xs:string" minOccurs="0" />
      <xs:element name="ZpoplatnenoMesic" type="xs:decimal" minOccurs="0" />
      <xs:element name="ZpoplatnenoRok" type="xs:decimal" minOccurs="0" />
      <xs:element name="PrekrocenLimit" type="xs:string" minOccurs="0" />
      <xs:element name="Poznamka" type="xs:string" minOccurs="0" />
    </xs:all>
  </xs:complexType>

  <xs:complexType name="PoplatekType">
    <xs:all>
      <xs:element name="Odber" type="xs:decimal" minOccurs="0" />
      <xs:element name="Zaloha" type="xs:decimal" minOccurs="0" />
    </xs:all>
  </xs:complexType>

  <xs:complexType name="VyrovnaniType">
    <xs:all>
      <xs:element name="Zaloha" type="xs:decimal" minOccurs="0" />
      <xs:element name="Poplatek" type="xs:decimal" minOccurs="0" />
      <xs:element name="Vyrovnani" type="xs:decimal" minOccurs="0" />
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="MetaInfoType">
    <xs:sequence>
      <xs:element name="version" type="xs:nonNegativeInteger" fixed="2010" />
      <xs:element name="revision" type="xs:nonNegativeInteger" fixed="1" />

      <xs:element name="user-agent" type="NotEmptyString" />
      <xs:element name="user-agent-version" type="NotEmptyString" />

      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="NotEmptyStringType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ICType">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="\d{8}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PscType">
    <xs:restriction base="xs:integer">
      <xs:pattern value="\d{5}" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>