﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    elementFormDefault="qualified"
    xmlns=""
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="documents">
    <xs:annotation>
      <xs:documentation>Корневой элемент документа. Содержит коллекцию анкет ДХ и словарь с расшифровкой назначения полей анкеты</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:all>
        <xs:element ref="ReportHeaderValues" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="Reports" minOccurs="1" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="Reports">
    <xs:annotation>
      <xs:documentation>Коллекция анкет ДХ</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Report" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>
              Содержит данные ответов в анкете для ДХ. 
              Описание конкретного показателя можно найти в словаре xml документа, в элементе с одноименным значением в поля Name
            </xs:documentation>
          </xs:annotation>

          <xs:complexType>
            <xs:all>
              <xs:element name="territ" type="terr"/>
              <xs:element name="posel" type="xs:byte"/>
              <xs:element name="rayon"/>
              <xs:element name="uch" type="uch"/>
              <xs:element name="kart" type="kart"/>
              <xs:element name="dx" type="xs:integer"/>
              <xs:element name="C1" type="t12Type"/>
              <xs:element name="CInt1" type="t12Type"/>
              <xs:element name="CInt2" type="xs:integer"/>
              <xs:element name="CInt2_1" type="yesNoType"/>
              <xs:element name="CInt2_2" type="yesNoType"/>
              <xs:element name="CInt2_3" type="yesNoType"/>
              <xs:element name="CInt2_4" type="yesNoType"/>
              <xs:element name="CInt2_5" type="yesNoType"/>
              <xs:element name="CInt2_6" type="yesNoType"/>
              <xs:element name="CInt3" type="t123Type"/>
              <xs:element name="CInt4" type="t123Type"/>
              <xs:element name="CInt5" type="xs:integer"/>
              <xs:element name="CInt5_1" type="yesNoType"/>
              <xs:element name="CInt5_2" type="yesNoType"/>
              <xs:element name="CInt5_3" type="yesNoType"/>
              <xs:element name="CInt5_4" type="yesNoType"/>
              <xs:element name="CInt5_5" type="yesNoType"/>
              <xs:element name="CInt5_6" type="yesNoType"/>
              <xs:element name="CInt5_7" type="yesNoType"/>
              <xs:element name="B99" type="respNum"/>
              <xs:element name="C2" type="t1234Type"/>
              <xs:element name="C3" type="xs:integer"/>
              <xs:element name="C3_1" type="yesNoType"/>
              <xs:element name="C3_2" type="yesNoType"/>
              <xs:element name="C3_3" type="yesNoType"/>
              <xs:element name="C3_4" type="yesNoType"/>
              <xs:element name="C3_5" type="yesNoType"/>
              <xs:element name="C4" type="xs:integer"/>
              <xs:element name="C4_1" type="yesNoType"/>
              <xs:element name="C4_2" type="yesNoType"/>
              <xs:element name="C4_3" type="yesNoType"/>
              <xs:element name="C4_4" type="yesNoType"/>
              <xs:element name="C4_5" type="yesNoType"/>
              <xs:element name="C4_6" type="yesNoType"/>
              <xs:element name="C4_7" type="yesNoType"/>
              <xs:element name="C4_8" type="yesNoType"/>
              <xs:element name="C4_9" type="yesNoType"/>
              <xs:element name="C4_10" type="yesNoType"/>
              <xs:element name="Int1" type="t1234Type"/>
              <xs:element name="Int2" type="t1234Type"/>
              <xs:element name="Int3" type="xs:integer"/>
              <xs:element name="Int3_1" type="yesNoType"/>
              <xs:element name="Int3_2" type="yesNoType"/>
              <xs:element name="Int3_3" type="yesNoType"/>
              <xs:element name="Int3_4" type="yesNoType"/>
              <xs:element name="Int3_5" type="yesNoType"/>
              <xs:element name="Int3_6" type="yesNoType"/>
              <xs:element name="Int3_7" type="yesNoType"/>
              <xs:element name="Int3_8" type="yesNoType"/>
              <xs:element name="Int3_9" type="yesNoType"/>
              <xs:element name="Int4" type="xs:integer"/>
              <xs:element name="Int4_1" type="yesNoType"/>
              <xs:element name="Int4_2" type="yesNoType"/>
              <xs:element name="Int4_3" type="yesNoType"/>
              <xs:element name="Int4_4" type="yesNoType"/>
              <xs:element name="Int4_5" type="yesNoType"/>
              <xs:element name="Int4_6" type="yesNoType"/>
              <xs:element name="Int5" type="xs:integer"/>
              <xs:element name="Int5_1" type="yesNoType"/>
              <xs:element name="Int5_2" type="yesNoType"/>
              <xs:element name="Int5_3" type="yesNoType"/>
              <xs:element name="Int5_4" type="yesNoType"/>
              <xs:element name="Int5_5" type="yesNoType"/>
              <xs:element name="Int5_6" type="yesNoType"/>
              <xs:element name="Int5_7" type="yesNoType"/>
              <xs:element name="Int5_8" type="yesNoType"/>
              <xs:element name="Int5_9" type="yesNoType"/>
              <xs:element name="Int5_10" type="yesNoType"/>
              <xs:element name="Int5_11" type="yesNoType"/>
              <xs:element name="Int5_12" type="yesNoType"/>
              <xs:element name="Int5_13" type="yesNoType"/>
              <xs:element name="Int5_14" type="yesNoType"/>
              <xs:element name="Int5_15" type="yesNoType"/>
              <xs:element name="Int5_16" type="yesNoType"/>
              <xs:element name="Int5_17" type="yesNoType"/>
              <xs:element name="Int5_18" type="yesNoType"/>
              <xs:element name="Int5_19" type="yesNoType"/>
              <xs:element name="Int5_20" type="yesNoType"/>
              <xs:element name="Int5_21" type="yesNoType"/>
              <xs:element name="Int6" type="xs:integer"/>
              <xs:element name="Int6_1" type="yesNoType"/>
              <xs:element name="Int6_2" type="yesNoType"/>
              <xs:element name="Int6_3" type="yesNoType"/>
              <xs:element name="Int6_4" type="yesNoType"/>
              <xs:element name="Int6_5" type="yesNoType"/>
              <xs:element name="Int6_6" type="yesNoType"/>
              <xs:element name="Int6_7" type="yesNoType"/>
              <xs:element name="Int7" type="xs:integer"/>
              <xs:element name="Int7_1" type="yesNoType"/>
              <xs:element name="Int7_2" type="yesNoType"/>
              <xs:element name="Int7_3" type="yesNoType"/>
              <xs:element name="Int7_4" type="yesNoType"/>
              <xs:element name="Int7_5" type="yesNoType"/>
              <xs:element name="Int7_6" type="yesNoType"/>
              <xs:element name="Int8" type="xs:integer"/>
              <xs:element name="Int8_1" type="yesNoType"/>
              <xs:element name="Int8_2" type="yesNoType"/>
              <xs:element name="Int8_3" type="yesNoType"/>
              <xs:element name="Int8_4" type="yesNoType"/>
              <xs:element name="Int8_5" type="yesNoType"/>
              <xs:element name="Int8_6" type="yesNoType"/>
              <xs:element name="Int8_7" type="yesNoType"/>
              <xs:element name="Int9" type="xs:integer"/>
              <xs:element name="Int9_1" type="yesNoType"/>
              <xs:element name="Int9_2" type="yesNoType"/>
              <xs:element name="Int9_3" type="yesNoType"/>
              <xs:element name="Int9_4" type="yesNoType"/>
              <xs:element name="IntP1" type="t1234Type"/>
              <xs:element name="IntP2" type="xs:integer"/>
              <xs:element name="IntP2_1" type="yesNoType"/>
              <xs:element name="IntP2_2" type="yesNoType"/>
              <xs:element name="IntP2_3" type="yesNoType"/>
              <xs:element name="IntP2_4" type="yesNoType"/>
              <xs:element name="IntP2_5" type="yesNoType"/>
              <xs:element name="IntP2_6" type="yesNoType"/>
              <xs:element name="IntP3" type="xs:integer"/>
              <xs:element name="IntP3_1" type="yesNoType"/>
              <xs:element name="IntP3_2" type="yesNoType"/>
              <xs:element name="IntP3_3" type="yesNoType"/>
              <xs:element name="IntP3_4" type="yesNoType"/>
              <xs:element name="IntP3_5" type="yesNoType"/>
              <xs:element name="IntP3_6" type="yesNoType"/>
              <xs:element name="IntP3_7" type="yesNoType"/>
              <xs:element name="IntP3_8" type="yesNoType"/>
              <xs:element name="IntP3_9" type="yesNoType"/>
              <xs:element name="IntP3_10" type="yesNoType"/>
              <xs:element name="IntP3_11" type="yesNoType"/>
              <xs:element name="IntP3_12" type="yesNoType"/>
              <xs:element name="IntP3_13" type="yesNoType"/>
              <xs:element name="IntP3_14" type="yesNoType"/>
              <xs:element name="IntP3_15" type="yesNoType"/>
              <xs:element name="IntP4" type="xs:integer"/>
              <xs:element name="IntP4_1" type="yesNoType"/>
              <xs:element name="IntP4_2" type="yesNoType"/>
              <xs:element name="IntP4_3" type="yesNoType"/>
              <xs:element name="IntP4_4" type="yesNoType"/>
              <xs:element name="IntP4_5" type="yesNoType"/>
              <xs:element name="IntP4_6" type="yesNoType"/>
              <xs:element name="IntP4_7" type="yesNoType"/>
              <xs:element name="IntP4_8" type="yesNoType"/>
              <xs:element name="IntP4_9" type="yesNoType"/>
              <xs:element name="IntP4_10" type="yesNoType"/>
              <xs:element name="IntP5" type="xs:integer"/>
              <xs:element name="IntP5_1" type="yesNoType"/>
              <xs:element name="IntP5_2" type="yesNoType"/>
              <xs:element name="IntP5_3" type="yesNoType"/>
              <xs:element name="IntP5_4" type="yesNoType"/>
              <xs:element name="IntP5_5" type="yesNoType"/>
              <xs:element name="IntP5_6" type="yesNoType"/>
              <xs:element name="IntP5_7" type="yesNoType"/>
              <xs:element name="IntP5_8" type="yesNoType"/>
              <xs:element name="PS1" type="xs:integer"/>
              <xs:element name="PS1_1" type="yesNoType"/>
              <xs:element name="PS1_2" type="yesNoType"/>
              <xs:element name="PS1_3" type="yesNoType"/>
              <xs:element name="PS1_4" type="yesNoType"/>
              <xs:element name="PS1_5" type="yesNoType"/>
              <xs:element name="PS1_6" type="yesNoType"/>
              <xs:element name="PS2" type="xs:integer"/>
              <xs:element name="PS2_s1" type="yesNoType"/>
              <xs:element name="PS2_s2" type="yesNoType"/>
              <xs:element name="PS2_s3" type="yesNoType"/>
              <xs:element name="PS2_s4" type="yesNoType"/>
              <xs:element name="PS2_s5" type="yesNoType"/>
              <xs:element name="PS2_s6" type="yesNoType"/>
              <xs:element name="PS2_s7" type="yesNoType"/>
              <xs:element name="PS2_s8" type="yesNoType"/>
              <xs:element name="PS2_s9" type="yesNoType"/>
              <xs:element name="PS2_s10" type="yesNoType"/>
              <xs:element name="PS2_s11" type="yesNoType"/>
              <xs:element name="PS2_s12" type="yesNoType"/>
              <xs:element name="PS2_s13" type="yesNoType"/>
              <xs:element name="PS2_s14" type="yesNoType"/>
              <xs:element name="PS2_s15" type="yesNoType"/>
              <xs:element name="PS2_s16" type="yesNoType"/>
              <xs:element name="PS2_s17" type="yesNoType"/>
              <xs:element name="PS2_s18" type="yesNoType"/>
              <xs:element name="PS2_s19" type="yesNoType"/>
              <xs:element name="PS2_s20" type="yesNoType"/>
              <xs:element name="PS2_s21" type="yesNoType"/>
              <xs:element name="PS2_s22" type="yesNoType"/>
              <xs:element name="PS2_s23" type="yesNoType"/>
              <xs:element name="PS2_s24" type="yesNoType"/>
              <xs:element name="PS2_s25" type="yesNoType"/>
              <xs:element name="PS2_s26" type="yesNoType"/>
              <xs:element name="PS3" type="xs:integer"/>
              <xs:element name="PS3_1" type="yesNoType"/>
              <xs:element name="PS3_2" type="yesNoType"/>
              <xs:element name="PS3_3" type="yesNoType"/>
              <xs:element name="PS3_4" type="yesNoType"/>
              <xs:element name="PS3_5" type="yesNoType"/>
              <xs:element name="PS3_6" type="yesNoType"/>
              <xs:element name="PS4" type="xs:integer"/>
              <xs:element name="PS4_1" type="yesNoType"/>
              <xs:element name="PS4_2" type="yesNoType"/>
              <xs:element name="PS4_3" type="yesNoType"/>
              <xs:element name="PS4_4" type="yesNoType"/>
              <xs:element name="PS4_5" type="yesNoType"/>
              <xs:element name="PS5" type="t123Type"/>
              <xs:element name="PS6" type="xs:integer"/>
              <xs:element name="PS6_1" type="yesNoType"/>
              <xs:element name="PS6_2" type="yesNoType"/>
              <xs:element name="PS6_3" type="yesNoType"/>
              <xs:element name="PS6_4" type="yesNoType"/>
              <xs:element name="PS6_5" type="yesNoType"/>
              <xs:element name="PS6_6" type="yesNoType"/>
              <xs:element name="PS6_7" type="yesNoType"/>
              <xs:element name="PS6_8" type="yesNoType"/>
              <xs:element name="PS6_9" type="yesNoType"/>
              <xs:element name="PS6_10" type="yesNoType"/>
              <xs:element name="PS7" type="t12Type"/>
              <xs:element name="PS8" type="t12Type"/>
              <xs:element name="PS9" type="t12345Type"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ReportHeaderValues">
    <xs:annotation>
      <xs:documentation>Словарь расшифровки полей анкеты ДХ</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ReportHeaderValue" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Расшифровка назначения поля анкеты</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:all>
              <xs:element name="Name" type="xs:string">
                <xs:annotation>
                  <xs:documentation>Ключ-наименование поля в документе</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Value" type="xs:string">
                <xs:annotation>
                  <xs:documentation>Расшифровка назначения поля</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


  <xs:simpleType name="yesNoType">
    <xs:annotation>
      <xs:documentation>Бинарный тип с ограничением, поддерживает только 2 ответа 0 - нет, 1 - да</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:byte">
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="t12Type">
    <xs:annotation>
      <xs:documentation>Тип с ограничением, поддерживает ответы 1,2 или отсутствие ответа - 0</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:byte">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="2"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="t123Type">
    <xs:annotation>
      <xs:documentation>Тип с ограничением, поддерживает ответы 1,2,3 или отсутствие ответа - 0</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:byte">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="3"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="t1234Type">
    <xs:annotation>
      <xs:documentation>Тип с ограничением, поддерживает ответы 1,2,3,4 или отсутствие ответа - 0</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:byte">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="4"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="t12345Type">
    <xs:annotation>
      <xs:documentation>Тип с ограничением, поддерживает ответы 1,2,3,4,5 или отсутствие ответа - 0</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:byte">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="5"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="respNum">
    <xs:annotation>
      <xs:documentation>Тип-описание номера респондента, значение от 0 до 7</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:byte">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="7"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="uch">
    <xs:annotation>
      <xs:documentation>Тип-описание кода участка, значение от 010101 до 999999</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="010101"/>
      <xs:maxInclusive value="999999"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="kart">
    <xs:annotation>
      <xs:documentation>Тип-описание номера карточки, значение от 1 до 999</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="999"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="terr">
    <xs:annotation>
      <xs:documentation>Тип-описание кода территории, максимум 5 символов</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:maxLength value="5"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
