﻿<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://www.ispv.cz/schema/ispv2024" 
           xmlns="http://www.ispv.cz/schema/ispv2024" 
           elementFormDefault="qualified">
	<!-- nez se bude typ porovnavat, v porovnavanem retezci se prevedou vyskyty posloupnosti mezer,
     tabulatoru, entru na mezeru a jeste se oriznou krajni mezery (trim) -->
	<xs:simpleType name="typeCollapsedString">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- nahrada tabulatoru a koncu radku za mezery -->
	<xs:simpleType name="typeReplacedString">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="replace"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- typ povolujici pouze prazdny retezec "" -->
	<xs:simpleType name="typePrazdny">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<!-- typy pro polozky typu kod -->
	<xs:simpleType name="typeKod10">
		<xs:restriction base="typeReplacedString">
			<xs:minLength value="1"/>
			<xs:maxLength value="10"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- typy pro polozky typu cena -->
	<!-- nn.nn -->
	<xs:simpleType name="typeUnsignedNumeric5">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,5}|[0-9]{0,3}[\.,][0-9]|[0-9]{0,2}[\.,][0-9][0-9])"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- nnnn.n -->
	<xs:simpleType name="typeUnsignedNumeric6">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,6}|[0-9]{0,4}[\.,][0-9])"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- nnnn.nn -->
	<xs:simpleType name="typeUnsignedNumeric7">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,7}|[0-9]{0,5}[\.,][0-9]|[0-9]{0,4}[\.,][0-9][0-9])"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- nnnn.nn -->
	<xs:simpleType name="typeSignedNumeric7">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,7}|[0-9]{0,5}[\.,][0-9]|[0-9]{0,4}[\.,][0-9][0-9]|-[0-9]{1,6}|-[0-9]{0,4}[\.,][0-9]|-[0-9]{0,3}[\.,][0-9][0-9])"/>
		</xs:restriction>
	</xs:simpleType>	
	<!-- nnnnn.nn -->
	<xs:simpleType name="typeUnsignedNumeric8">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,8}|[0-9]{0,6}[\.,][0-9]|[0-9]{0,5}[\.,][0-9][0-9])"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- nnnnnn.nn -->
	<xs:simpleType name="typeUnsignedNumeric9">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,9}|[0-9]{0,7}[\.,][0-9]|[0-9]{0,6}[\.,][0-9][0-9])"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- nnnnnnn.nnnn -->
	<xs:simpleType name="typeUnsignedNumeric12">
		<xs:restriction base="typeCollapsedString">
			<xs:pattern value="0*([0-9]{1,12}|[0-9]{1,10}[\.,][0-9]|[0-9]{1,9}[\.,][0-9]{2}|[0-9]{1,8}[\.,][0-9]{3}|[0-9]{1,7}[\.,][0-9]{4})"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- typy pro data parametry -->
	<xs:simpleType name="typeDesTeckaCarka">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value="."/>
			<xs:enumeration value=","/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<!-- typy pro data odesilatel -->
	<xs:simpleType name="typeFirma">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="typeJmeno">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="typeEmail">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="typeTelefon">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="typeZprava">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<!-- typy pro MI data -->
	<xs:simpleType name="typeIco">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>

    <!-- typy pro MP data -->
	<xs:simpleType name="typeIdzam">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeKod10"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeRoknar">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="1900"/>
					<xs:maxExclusive value="3000"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
  <xs:simpleType name="typeLau1">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="typeCollapsedString">
          <xs:pattern value="CZ0[0-9]{2}[a-zA-Z0-9]{1}"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="typePrazdny"/>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:simpleType name="typePohlavi">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value="M"/>
			<xs:enumeration value="Z"/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeStobc">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeCollapsedString">
					<xs:pattern value="[a-zA-Z]{2}"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeVzdelani">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value="A"/>
			<xs:enumeration value="B"/>
			<xs:enumeration value="C"/>
			<xs:enumeration value="D"/>
			<xs:enumeration value="E"/>
			<xs:enumeration value="H"/>
			<xs:enumeration value="J"/>
			<xs:enumeration value="K"/>
			<xs:enumeration value="L"/>
			<xs:enumeration value="M"/>
			<xs:enumeration value="N"/>
			<xs:enumeration value="R"/>
			<xs:enumeration value="T"/>
			<xs:enumeration value="V"/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeOborvzd">
		<xs:restriction base="typeReplacedString">
			<xs:maxLength value="30"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeInvald">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value="C"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="Z"/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeMistovp">
		<xs:restriction base="typeLau1"/>
	</xs:simpleType>
	<xs:simpleType name="typeCzicse">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="1000"/>
					<xs:maxInclusive value="9999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeCzisco">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeCollapsedString">
					<xs:pattern value="[0-9]{5}"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeNazpoz">
		<xs:restriction base="typeReplacedString">
			<xs:maxLength value="254"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeVedouci">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value="A"/>
			<xs:enumeration value="N"/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeKontopd">
		<xs:restriction base="typeCollapsedString">
			<xs:enumeration value="A"/>
			<xs:enumeration value="N"/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="typeDobazam">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric5"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeEviddny">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeKonecep">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeCollapsedString">
					<xs:pattern value="[0-9]{8}|0"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeFondsta">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeFondsje">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeOdpracd">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePrescas">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeSignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeAbscelk">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeAbsplac">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeAbsdovol">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeAbsnemoc">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeAbsnemz">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric7"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeMzda">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePoprav">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="-9999999"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePoneprav">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="-9999999"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePrippcas">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePriplat">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeNahrady">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typeNahrnemz">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePohotov">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="99999999"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="typePrumvyd">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="typeUnsignedNumeric8"/>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="typePrazdny"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<!-- komplexni typy -->
	<xs:complexType name="typeZamestnanec">
		<xs:sequence>
			<xs:element name="idzam" type="typeIdzam" minOccurs="1" maxOccurs="1"/>
			<xs:element name="roknar" type="typeRoknar" minOccurs="1" maxOccurs="1"/>
			<xs:element name="pohlavi" type="typePohlavi" minOccurs="1" maxOccurs="1"/>
			<xs:element name="stobc" type="typeStobc" minOccurs="1" maxOccurs="1"/>
			<xs:element name="vzdelani" type="typeVzdelani" minOccurs="1" maxOccurs="1"/>
			<xs:element name="oborvzd" type="typeOborvzd" minOccurs="1" maxOccurs="1"/>
			<xs:element name="invald" type="typeInvald" minOccurs="1" maxOccurs="1"/>
			<xs:element name="mistovp" type="typeMistovp" minOccurs="1" maxOccurs="1"/>
			<xs:element name="czicse" type="typeCzicse" minOccurs="1" maxOccurs="1"/>
			<xs:element name="czisco" type="typeCzisco" minOccurs="1" maxOccurs="1"/>
			<xs:element name="nazpoz" type="typeNazpoz" minOccurs="1" maxOccurs="1"/>
			<xs:element name="vedouci" type="typeVedouci" minOccurs="1" maxOccurs="1"/>
			<xs:element name="kontopd" type="typeKontopd" minOccurs="1" maxOccurs="1"/>
			<xs:element name="dobazam" type="typeDobazam" minOccurs="1" maxOccurs="1"/>
			<xs:element name="eviddny" type="typeEviddny" minOccurs="1" maxOccurs="1"/>
			<xs:element name="konecep" type="typeKonecep" minOccurs="1" maxOccurs="1"/>
			<xs:element name="fondsta" type="typeFondsta" minOccurs="1" maxOccurs="1"/>
			<xs:element name="fondsje" type="typeFondsje" minOccurs="1" maxOccurs="1"/>
			<xs:element name="odpracd" type="typeOdpracd" minOccurs="1" maxOccurs="1"/>
			<xs:element name="prescas" type="typePrescas" minOccurs="1" maxOccurs="1"/>
			<xs:element name="abscelk" type="typeAbscelk" minOccurs="1" maxOccurs="1"/>
			<xs:element name="absplac" type="typeAbsplac" minOccurs="1" maxOccurs="1"/>
			<xs:element name="absdovol" type="typeAbsdovol" minOccurs="1" maxOccurs="1"/>
			<xs:element name="absnemoc" type="typeAbsnemoc" minOccurs="1" maxOccurs="1"/>
			<xs:element name="absnemz" type="typeAbsnemz" minOccurs="1" maxOccurs="1"/>
			<xs:element name="mzda" type="typeMzda" minOccurs="1" maxOccurs="1"/>
			<xs:element name="poprav" type="typePoprav" minOccurs="1" maxOccurs="1"/>
			<xs:element name="poneprav" type="typePoneprav" minOccurs="1" maxOccurs="1"/>
			<xs:element name="prippcas" type="typePrippcas" minOccurs="1" maxOccurs="1"/>
			<xs:element name="priplat" type="typePriplat" minOccurs="1" maxOccurs="1"/>
			<xs:element name="nahrady" type="typeNahrady" minOccurs="1" maxOccurs="1"/>
			<xs:element name="nahrnemz" type="typeNahrnemz" minOccurs="1" maxOccurs="1"/>
			<xs:element name="pohotov" type="typePohotov" minOccurs="1" maxOccurs="1"/>
			<xs:element name="prumvyd" type="typePrumvyd" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ispv">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="zamestnanci" minOccurs="0" maxOccurs="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="zamestnanec" minOccurs="0" maxOccurs="unbounded" type="typeZamestnanec"/>
						</xs:sequence>
						<xs:attribute name="ico" type="typeIco"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="struktura" type="xs:string"/>
			<xs:attribute name="verze" type="xs:string"/>
			<xs:attribute name="podverze" type="xs:string"/>
		</xs:complexType>
	</xs:element>
</xs:schema>
