<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="sk:nbs:szp:data:items:in" targetNamespace="sk:nbs:szp:data:items:in">
  <xs:element name="SZPItemsReports">
    <xs:complexType>
      <xs:choice>
        <xs:element maxOccurs="unbounded" minOccurs="0" name="SZPItemsReport" type="SZPItemsReportType"/>
        <xs:element maxOccurs="unbounded" minOccurs="0" name="SZPIndividualReport" type="SZPIndividualReportType">
          <xs:annotation>
            <xs:documentation>Hlásenie s údajmi patriacimi do individuálnych tried.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="SZPItemsReportType">
    <xs:sequence>
      <xs:element name="header" type="SZPItemsReportHeaderType"/>
      <xs:element name="comments" minOccurs="0" maxOccurs="1" type="SZPItemsReportCommentsType"/>
      <xs:element maxOccurs="unbounded" name="part" type="SZPItemsReportPartType"/>
    </xs:sequence>
    <xs:attribute name="reportVersion" use="required" type="SZPItemsReportOrdNumType"/>
    <xs:attribute name="atribs" type="xs:string"/>
  </xs:complexType>
  <xs:simpleType name="SZPItemsReportOrdNumType">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="9999999"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SZPItemsReportReportVersionType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="data"/>
      <xs:enumeration value="storno"/>
      <xs:enumeration value="empty"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SZPItemsReportHeaderType">
    <xs:sequence>
      <xs:element name="template" type="SZPItemsReportTemplateType"/>
      <xs:element name="subject" type="xs:token"/>
      <xs:element name="period" type="xs:date"/>
      <xs:element minOccurs="0" name="preparedAt" type="xs:dateTime"/>
      <xs:element minOccurs="0" name="preparedBy" type="xs:token"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportTemplateType">
    <xs:sequence>
      <xs:element name="code" type="xs:token"/>
      <xs:element name="templateValidFrom" type="xs:date"/>
      <xs:element minOccurs="0" name="version" type="SZPItemsReportOrdNumType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportPartType">
    <xs:sequence>
      <xs:element name="comments" minOccurs="0" maxOccurs="1" type="SZPItemsReportCommentsType"/>
      <xs:choice>
        <xs:element name="partial" type="SZPItemsReportPartPartialType"/>
        <xs:element name="full" type="SZPItemsReportPartFullType"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="code" type="xs:token" use="required"/>
    <xs:attribute name="atribs" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportPartFullType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="updInsObject" type="SZPItemsReportupdInsObjectType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportPartPartialType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="deleteObject" type="SZPItemsReportDeleteObjectType"/>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="deleteData" type="SZPItemsReportDeleteDataType"/>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="updInsObject" type="SZPItemsReportupdInsObjectType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportupdInsObjectType">
    <xs:sequence>
      <xs:element name="data" type="SZPItemsReportDataType" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="class" type="xs:token" use="required"/>
    <xs:attribute name="statID" type="xs:string" use="optional"/>
    <xs:attribute name="dynID" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportDataType">
    <xs:sequence>
      <xs:element name="comments" minOccurs="0" maxOccurs="1" type="SZPItemsReportCommentsType"/>
      <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
    </xs:sequence>
    <xs:attribute name="class" type="xs:token"/>
    <xs:attribute name="statID" type="xs:string"/>
    <xs:attribute name="metric" type="xs:string" use="required"/>
    <xs:attribute name="atribs" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportDeleteDataType">
    <xs:attribute name="class" type="xs:token" use="required"/>
    <xs:attribute name="statID" type="xs:string" use="required"/>
    <xs:attribute name="metric" type="xs:string" use="required"/>
    <xs:attribute name="dynID" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportDeleteObjectType">
    <xs:attribute name="class" type="xs:token" use="required"/>
    <xs:attribute name="statID" type="xs:string" use="required"/>
    <xs:attribute name="dynID" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="SZPItemsReportCommentsType">
    <xs:sequence>
      <xs:element name="comment" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportType">
    <xs:sequence>
      <xs:element name="header">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="SZPItemsReportHeaderType">
              <xs:sequence>
                <xs:element name="type" default="data" minOccurs="0">
                  <xs:annotation>
                    <xs:documentation>SZPItemsReportHeaderType pre ind. vykaz je rozsireny o element type, ktory moze mat hodnotu "data" (vykaz s udajmi) alebo "empty" (prazdny vykaz)</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="SZPItemsReportReportVersionType">
                      <xs:enumeration value="data"/>
                      <xs:enumeration value="empty"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:element>
              </xs:sequence>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="comments" minOccurs="0" maxOccurs="1" type="SZPItemsReportCommentsType"/>
      <xs:element maxOccurs="unbounded" name="part" type="SZPIndividualReportPartType">
        <xs:annotation>
          <xs:documentation>Časť verzie individuálneho výkazu.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="reportVersion" use="required" type="SZPItemsReportOrdNumType"/>
    <xs:attribute name="atribs" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportPartType">
    <xs:sequence>
      <xs:element name="fields" type="SZPIndividualReportFieldsType">
        <xs:annotation>
          <xs:documentation>Zoznam polí - kódy vlastností z danej individuálnej triedy,   ktoré sa vykazujú v hlasení. Poradie polí je dôležité, lebo určuje poradie hôdnot v dátovych objektoch.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="comments" minOccurs="0" maxOccurs="1" type="SZPItemsReportCommentsType">
        <xs:annotation>
          <xs:documentation>Komentáre súvisiace s danou časťou verzie vykazu.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="partial" type="SZPIndividualReportPartPartialType">
          <xs:annotation>
            <xs:documentation>Čiastočná aktualizácia časti verzie výkazu. Dátové objekty, ktoré sa tu nespomenú, zostávajú bez zmeny.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="full" type="SZPIndividualReportPartFullType">
          <xs:annotation>
            <xs:documentation>Nahradí celú časť verzie individuálneho výkazu novými dátovými objektami. Pôvodné objekty sa vymažú.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="code" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>Kód časti vzoru individuálneho výkazu. Časť vzoru individuálneho výkazu je naviazaná na práve jednu individuálnu triedu. Všetky dátové objekty v časti verzie výkazu patria do danej individuálnej triedy.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="atribs" type="xs:string">
      <xs:annotation>
        <xs:documentation>Atribúty merani vzťahujúce sa na čast verzie výkazu.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportPartPartialType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="deleteObject" type="SZPIndividualReportDeleteObjectType">
        <xs:annotation>
          <xs:documentation>Výmaz dátových objektov, ktoré sa identifikujú cez kľúčové polia.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="updInsObject" type="SZPIndividualReportUpdInsObjectType">
        <xs:annotation>
          <xs:documentation>Vloženie objektu do individuálneho výkazu, alebo aktualizácia existujúceho objektu.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportPartFullType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="updInsObject" type="SZPIndividualReportUpdInsObjectType">
        <xs:annotation>
          <xs:documentation>Vloženie objektu do individuálneho výkzu.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportUpdInsObjectType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="row" type="SZPIndividualReportObjectRowType">
        <xs:annotation>
          <xs:documentation>Údaje individuálneho dátového objektu.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportDeleteObjectType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="rowKey" type="xs:string">
        <xs:annotation>
          <xs:documentation>Bodkočiarkov oddelené hodnoty kľúčových polí v poradí zadefinovanom na začiatku časti výkazu (vo fields). Kombinácia hodnôt tvorí vlastný kľúč a jednoznačne identifikuje objekt, ktorý sa má zmazať.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportObjectRowType">
    <xs:sequence>
      <xs:element name="data" type="SZPIndividualReportDataType">
        <xs:annotation>
          <xs:documentation>Hodnoty polí individuálneho dátového objektu v poradí zadefinovanom vo fields, oddelené bodkočiarkov.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="comments" type="SZPItemsReportCommentsType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Komentáre k danému dátovému objektu.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="atribs" type="xs:string">
      <xs:annotation>
        <xs:documentation>Atribúty merania, ktoré sa vzťahujú na celý riadok.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportDataType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="observStatus" type="xs:string">
          <xs:annotation>
            <xs:documentation>Hodnoty príznaku observStatus, ktoré sa vzťahujú na vykázanú hodnotu, v poradí zadefinovanom vo fields, oddelené bodkočiarkov.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="confidStatus" type="xs:string">
          <xs:annotation>
            <xs:documentation>Hodnoty príznaku confidStatus, ktoré sa vzťahujú na vykázanú hodnotu, v poradí zadefinovanom vo fields, oddelené bodkočiarkov.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportFieldsType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="field" type="SZPIndividualReportFieldType">
        <xs:annotation>
          <xs:documentation>Pole v individuálnom dátovom objekte - kód vlastnosti v individuálnej triede.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SZPIndividualReportFieldType">
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute name="key" type="xs:boolean">
          <xs:annotation>
            <xs:documentation>Príznak, či je dané pole súčasťou vlastného kľúča.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="atribs" type="xs:string">
          <xs:annotation>
            <xs:documentation>Atribúty meraní, ktoré sa vzťahujú na celý stĺpec - vlastnosť vo všetkých dátových objektov danej časti výkazu.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:schema>
