<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- Union typ: povoluje buď platnou hodnotu unsignedByte (0-255), nebo doslovný text "NULL" -->
    <xs:simpleType name="vysledekOrNullType">
        <xs:union>
            <xs:simpleType>
                <xs:restriction base="xs:unsignedByte"/>
            </xs:simpleType>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="NULL"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>

    <!-- Union typ: povoluje buď platnou hodnotu dateTime, nebo doslovný text "NULL" -->
    <xs:simpleType name="casUkonceniOrNullType">
        <xs:union>
            <xs:simpleType>
                <xs:restriction base="xs:dateTime"/>
            </xs:simpleType>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="NULL"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>

    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="transakce">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="ID" type="xs:string"/>
                            <xs:element name="vysledek" type="vysledekOrNullType"/>
                            <xs:element name="stav" type="xs:string"/>
                            <xs:element name="spokojenost" type="xs:unsignedByte" minOccurs="0"/>
                            <xs:element name="ovm" type="xs:integer"/>
                            <xs:element name="agenda" type="xs:string"/>
                            <xs:element name="sluzba" type="xs:string"/>
                            <xs:element name="kanal_vstup" type="xs:string"/>
                            <xs:element name="kanal_vystup" type="xs:string"/>
                            <xs:element name="cas_zahajeni" type="xs:dateTime"/>
                            <xs:element name="cas_ukonceni" type="casUkonceniOrNullType"/>
                            <xs:element name="vp_" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="IS" type="xs:string"/>
                            <xs:element name="IS_zdroj" type="xs:string" minOccurs="0"/>
                            <xs:element name="IS_cil" type="xs:string" minOccurs="0"/>
                            <xs:element name="bytes" type="xs:int" minOccurs="0"/>
                            <xs:element name="mistni_prislusnost" type="xs:string" minOccurs="0"/>
                            <xs:element name="urad" type="xs:string" minOccurs="0"/>
                            <xs:element name="etapy" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="etapa">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="id" type="xs:string"/>
                                                    <xs:element name="nazev" type="xs:string"/>
                                                    <xs:element name="cas" type="xs:dateTime"/>
                                                    <xs:element name="ukon" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="vp_" minOccurs="0">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="etapa_kanal" type="xs:string"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                    <xs:unique name="uniqueEtapaID">
                        <xs:selector xpath="etapy/etapa"/>
                        <xs:field xpath="id"/>
                    </xs:unique>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:unique name="uniqueTransakceID">
            <xs:selector xpath="transakce"/>
            <xs:field xpath="ID"/>
        </xs:unique>
    </xs:element>
</xs:schema>
