<?xml version="1.0" encoding="UTF-8"?>
<!-- Ziadost o vratenie dane podla par. 43 ods. 21 alebo podla zmluvy medzi SR a Svajciarskou konfederaciou - 2020 - BZIA-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:annotation>
		<xs:documentation>ZIA4321v20</xs:documentation>
	</xs:annotation>
	<!--  prazdny retazec  -->
	<xs:simpleType name="emptyStrType">
		<xs:restriction base="xs:string">
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<!--  povinny datum v tvare: (d)d.(m)m.rrrr  -->
	<xs:simpleType name="oneFieldDateType">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d?\d\.\d?\d\.\d\d\d\d"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  nepovinny datum v tvare: (d)d.(m)m.rrrr  -->
	<xs:simpleType name="optOneFieldDateType">
		<xs:union memberTypes="oneFieldDateType emptyStrType"/>
	</xs:simpleType>
	<!--  nepovinny datum rozdeleny v troch elementoch -->
	<xs:complexType name="optDateType">
		<xs:sequence>
			<xs:element name="den" type="optDayMonthType"/>
			<xs:element name="mesiac" type="optDayMonthType"/>
			<xs:element name="rok" type="optYearType"/>
		</xs:sequence>
	</xs:complexType>
	<!--  povinny den/mesiac v tvare: (d)d/(m)m  -->
	<xs:simpleType name="dayMonthType">
		<xs:restriction base="xs:decimal">
			<xs:pattern value="\d?\d"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  nepovinny den/mesiac v tvare: (d)d/(m)m  -->
	<xs:simpleType name="optDayMonthType">
		<xs:union memberTypes="dayMonthType emptyStrType"/>
	</xs:simpleType>
	<!--  povinny rok  -->
	<xs:simpleType name="yearType">
		<xs:restriction base="xs:decimal">
			<xs:pattern value="\d\d\d\d"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  nepovinny rok  -->
	<xs:simpleType name="optYearType">
		<xs:union memberTypes="yearType emptyStrType"/>
	</xs:simpleType>
	<!--  nepovinne realne cislo  -->
	<xs:simpleType name="optDouble">
		<xs:union memberTypes="xs:double emptyStrType"/>
	</xs:simpleType>
	<!--  korenovy element  -->
	<xs:element name="dokument">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ziadatel" type="ziadatelType"/>
				<xs:element name="platitel" type="platitelType"/>
				<xs:element name="udajeOPrijme" type="udajeOPrijmeType"/>
				<xs:element name="sposobVratenia" type="sposobVrateniaType"/>
				<xs:element name="poznamka" type="xs:string"/>
				<xs:element name="vypracoval" type="vypracovalType"/>
				<xs:element name="pocetPriloh" type="optInt5"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!--  povinne dic  -->
	<xs:simpleType name="dicType">
		<xs:restriction base="xs:decimal">
			<xs:pattern value="\d{10}"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  nepovinne dic  -->
	<xs:simpleType name="optDicType">
		<xs:union memberTypes="dicType emptyStrType"/>
	</xs:simpleType>
	<!--  povinne ico  -->
	<xs:simpleType name="ico12Type">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{6,12}"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  nepovinne ico  -->
	<xs:simpleType name="optIco12Type">
		<xs:union memberTypes="ico12Type emptyStrType"/>
	</xs:simpleType>
	<!--  nepovinne decimal cislo  -->
	<xs:simpleType name="optDecimal">
		<xs:union memberTypes="xs:decimal emptyStrType"/>
	</xs:simpleType>
	<!-- nepovinne patciferne cislo -->
	<xs:simpleType name="optInt5">
		<xs:union memberTypes="cislo5 emptyStrType"/>
	</xs:simpleType>
	<!-- cele patciferne cislo -->
	<xs:simpleType name="cislo5">
		<xs:restriction base="xs:integer">
			<xs:totalDigits value="5"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  ziadatel  -->
	<xs:complexType name="ziadatelType">
		<xs:sequence>
			<xs:element name="dic" type="optDicType"/>
			<xs:element name="ico" type="optIco12Type"/>
			<xs:element name="identifikator" type="xs:string"/>
			<xs:element name="obchodneMeno" type="obchodneMenoType"/>
			<xs:element name="sidlo" type="sidloType"/>
			<xs:element name="telefon" type="xs:string"/>
			<xs:element name="email" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<!--  platitel -->
	<xs:complexType name="platitelType">
		<xs:sequence>
			<xs:element name="dic" type="optDicType"/>
			<xs:element name="ico" type="optIco12Type"/>
			<xs:element name="obchodneMeno" type="obchodneMenoType"/>
			<xs:element name="sidlo" type="sidloType"/>
			<xs:element name="telefon" type="xs:string"/>
			<xs:element name="email" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<!--  obchodne meno  -->
	<xs:complexType name="obchodneMenoType">
		<xs:sequence>
			<xs:element name="riadok" type="xs:string" minOccurs="0" maxOccurs="2"/>
		</xs:sequence>
	</xs:complexType>
	<!--  sidlo  -->
	<xs:complexType name="sidloType">
		<xs:sequence>
			<xs:element name="ulica" type="xs:string"/>
			<xs:element name="cislo" type="xs:string"/>
			<xs:element name="psc" type="xs:string"/>
			<xs:element name="obec" type="xs:string"/>
			<xs:element name="stat" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<!-- suhrnne udaje o zrazeni a odvedeni dane vyberanej zrazkou -->
	<xs:complexType name="udajeOPrijmeType">
		<xs:sequence>
			<xs:element name="r01s01" type="prijemType"/>
			<xs:element name="r01s02" type="prijemType"/>
			<xs:element name="r01s03" type="prijemType"/>
			<xs:element name="r02s01" type="prijemType"/>
			<xs:element name="r02s02" type="prijemType"/>
			<xs:element name="r02s03" type="prijemType"/>
			<xs:element name="celkomNaVratenie" type="optDouble"/>
		</xs:sequence>
	</xs:complexType>
	<!--  zrazena/odvedena dan  -->
	<xs:complexType name="prijemType">
		<xs:sequence>
			<xs:element name="druhPrijmu" type="xs:string"/>
			<xs:element name="datumVyplatenia" type="optOneFieldDateType"/>
			<xs:element name="sumaPrijmu" type="optDouble"/>
			<xs:element name="sumaZrazena" type="optDouble"/>
			<xs:element name="sumaNaVratenie" type="optDouble"/>
		</xs:sequence>
	</xs:complexType>
	<!--  vypracoval  -->
	<xs:complexType name="vypracovalType">
		<xs:sequence>
			<xs:element name="dna" type="optOneFieldDateType"/>
			<xs:element name="tel" type="xs:string"/>
			<xs:element name="vypr" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<!--  sposob vratenia dane  -->
	<xs:complexType name="sposobVrateniaType">
		<xs:sequence>
			<xs:element name="poukazka" type="xs:boolean"/>
			<xs:element name="ucet" type="xs:boolean"/>
			<xs:element name="iban" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
