<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="sk:nbs:szp:data:in" targetNamespace="sk:nbs:szp:data:in">
  <xs:element name="SZPReport">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="confidStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="observStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="commentReport"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="statPart"/>
          <xs:element ref="dynPart"/>
          <xs:element ref="statdynPart"/>
          <xs:element ref="filePart"/>
          <xs:element ref="dynColPart"/>
          <xs:element ref="dynCardRowPart"/>
          <xs:element ref="dynCardColPart"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="reportVersion" use="required" type="ordNumType"/>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name="ordNumType">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="9999999"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="reportVersionType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="data"/>
      <xs:enumeration value="storno"/>
      <xs:enumeration value="empty"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="type"/>
        <xs:element ref="template"/>
        <xs:element ref="templateValidFrom"/>
        <xs:element ref="subject"/>
        <xs:element ref="period"/>
        <xs:element minOccurs="0" ref="version"/>
        <xs:element minOccurs="0" ref="preparedAt"/>
        <xs:element minOccurs="0" ref="preparedBy"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="type" type="reportVersionType"/>
  <xs:element name="template" type="xs:ID"/>
  <xs:element name="templateValidFrom" type="xs:date"/>
  <xs:element name="subject" type="xs:token"/>
  <xs:element name="period" type="xs:date"/>
  <xs:element name="deputySubject" type="xs:token"/>
  <xs:element name="version" type="ordNumType"/>
  <xs:element name="preparedAt" type="xs:dateTime"/>
  <xs:element name="preparedBy" type="xs:token"/>
  <xs:element name="statPart">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="confidStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="observStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="commentPart"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="commentCell"/>
      </xs:sequence>
      <xs:attribute name="code" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynPart">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="confidStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="observStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="commentPart"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="commentCell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dynRow"/>
      </xs:sequence>
      <xs:attribute name="code" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynCardRowPart">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dynSection"/>
      </xs:sequence>
      <xs:attribute name="code" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynCardColPart">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dynSection"/>
      </xs:sequence>
      <xs:attribute name="code" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynRow">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dCell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="commentDCell"/>
      </xs:sequence>
    <xs:attribute name="ord" use="required" type="ordNumType"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="statdynPart">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dynSection"/>
      </xs:sequence>
      <xs:attribute name="code" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynSection">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="confidStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="observStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="commentSection"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="commentCell"/>
        <xs:choice minOccurs="0">
          <xs:element maxOccurs="unbounded" ref="dynRow">
            <xs:annotation>
              <xs:documentation>Dynamický riadok. Používa sa v prípade dynamickej kartovo-riadkovej časti.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element maxOccurs="unbounded" ref="dynCol">
            <xs:annotation>
              <xs:documentation>Dynamický stĺpec. Používa sa v prípade dynamickej kartovo-stĺpcovej časti.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="ord" use="required" type="ordNumType"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="filePart">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="confidStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="observStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="commentPart"/>
        <xs:element maxOccurs="unbounded" ref="attachment"/>
      </xs:sequence>
      <xs:attribute name="code" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="attachment">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:base64Binary">
          <xs:attribute name="name" use="required" type="xs:normalizedString"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="commentReport" type="xs:string"/>
  <xs:element name="commentPart" type="xs:string"/>
  <xs:element name="commentSection" type="xs:string"/>
  <xs:element name="confidStatus" type="xs:string"/>
  <xs:element name="observStatus" type="xs:string"/>
  <xs:element name="commentCell">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="row" use="required" type="ordNumType"/>
          <xs:attribute name="col" use="required" type="xs:token"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="commentDCell">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="col" use="required" type="xs:token"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="commentDColCell">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="row" use="required" type="xs:token"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="cell">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="confidStatus" type="xs:string"/>
          <xs:attribute name="observStatus" type="xs:string"/>
          <xs:attribute name="row" use="required" type="ordNumType"/>
          <xs:attribute name="col" use="required" type="xs:token"/>
          <xs:attribute name="decimals" use="optional">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:pattern value="([-]?[1-9][0-9]{0,1})|[0]|(INF)"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="dCell">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="confidStatus" type="xs:string"/>
          <xs:attribute name="observStatus" type="xs:string"/>
          <xs:attribute name="col" use="required" type="xs:token"/>
          <xs:attribute name="decimals" use="optional">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:pattern value="([-]?[1-9][0-9]{0,1})|[0]|(INF)"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynColPart">
    <xs:annotation>
      <xs:documentation xml:lang="sk">Dáta za dynamickú stĺpcovú časť. Môže obsahovať statické bunky a dynamické stĺpce.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" ref="confidStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="observStatus"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="commentPart"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="commentCell"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dynCol"/>
      </xs:sequence>
      <xs:attribute name="code" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dynCol">
    <xs:annotation>
      <xs:documentation xml:lang="sk">Jeden dynamický stĺpec dynamickej časti.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dCellCol"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="commentDColCell"/>
      </xs:sequence>
      <xs:attribute name="ord" use="required" type="ordNumType"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dCellCol">
    <xs:annotation>
      <xs:documentation xml:lang="sk">Hodnota bunky dynamickej časti vzoru na konkrétnom dynamickom riadku.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="confidStatus" type="xs:string"/>
          <xs:attribute name="observStatus" type="xs:string"/>
          <xs:attribute name="row" use="required" type="xs:token"/>
          <xs:attribute name="decimals" use="optional">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:pattern value="([-]?[1-9][0-9]{0,1})|[0]|(INF)"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>
