<?xml version="1.0" encoding="utf-8"?>
<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">  
  <xs:include schemaLocation="Tables.xsd" />
  <xs:include schemaLocation="Editors.xsd" />
  <xs:include schemaLocation="Sheets.xsd" />
  <xs:include schemaLocation="MenuItems.xsd" />
  <xs:include schemaLocation="Images.xsd" />

  <xs:element name="document">
    <xs:annotation>
      <xs:documentation xml:lang="ru-ru">
        Корневой элемент файла документа.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="interface" minOccurs="0" maxOccurs="1" type="InterfaceType">
          <xs:annotation>
            <xs:documentation xml:lang="ru-ru">
              Секция описания интерфейса. Содержит описание используемых изображений.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="rules" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation xml:lang="ru-ru">
              Секция описания используемой логики. Описывает импорт внешних правил написанных на Javascript с использованием API.
              Есть возможность описывать правила на внутреннем макроязыке, но данная возможность будет недоступна начиная с 1.8, поэтому не рекомендуется к использованию.
              В данной документации внутренние команды не описаны.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="import" minOccurs="0" maxOccurs="unbounded" >
                <xs:annotation>
                  <xs:documentation xml:lang="ru-ru">
                    Импорт правил внешнего Javascript-файла.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:attribute name="sourceFile" use="required" type="xs:string">
                    <xs:annotation>
                      <xs:documentation xml:lang="ru-ru">
                        Имя файла документа-источника в относительной адресации, по отношению к директории главного документа.
                      </xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="id" use="optional" type="xs:string">
                    <xs:annotation>
                      <xs:documentation xml:lang="ru-ru">
                        Идентификатор директивы импорта. 
                        Используется в выражениях меняющих ссылки на файлы логики.
                      </xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:complexType>                
              </xs:element>
            </xs:choice >
          </xs:complexType>
        </xs:element>
        <xs:element name="tables" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation xml:lang="ru-ru">
              Секция описания таблиц. Содержит описание данных содержащихся в самом файле или импортированных из других файлов
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:group ref="Tables_Sequence" minOccurs="1" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="sheets" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation xml:lang="ru-ru">
              Секция описания листов. Содержит описание табличных листов и листов с полями ввода для редактирования данных.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:group ref="Sheets_Sequence" minOccurs="1" maxOccurs="unbounded"/>
              <xs:group ref="DocumentSheets_RulesGroup" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="editors" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation xml:lang="ru-ru">
              Секция описания редакторов. Содержит описание функционала для редактирования данных, размещаемых на листах. 
              Есть возможность вызова редакторов посредством правил.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="editor" minOccurs="0" maxOccurs="unbounded" type="EditorType"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="menu" minOccurs="0" maxOccurs="1" type="MainMenuItemsType">
          <xs:annotation>
            <xs:documentation xml:lang="ru-ru">
              Секция описания главного меню. Содержит описание пунктов главного меню которые будут длоступны при показе этого документа.             
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="caption" type="xs:string" use="optional">
        <xs:annotation>
          <xs:documentation>
            Пояснение к документу, выводится в правом верхнем углу и на сплэш-форме.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="version" type="xs:string" use="required">
        <xs:annotation>
          <xs:documentation>
            Текущая версия документа.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="versionOld" type="xs:string" use="optional">
        <xs:annotation>
          <xs:documentation>
            Предыдущая версия документа.
            Появляется автоматически после обновления документа.
            При первом сохранении сбрасывается.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="canOpen" type="xs:boolean" use="optional" default="false">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Признак возможности открытия документа в качестве "главного".
            По умолчанию false.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="isDocumentUpdated" use="optional" type="xs:boolean" default="false">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Признак того что документ был обновлен.
            Появляется автоматически после обновления документа.
            При первом сохранении сбрасывается.
            По умолчанию false.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="isDefaultExportEnabled" use="optional" type="xs:boolean" default="true">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Управляет активностью кнопки экспорта в Excel. По умолчанию true.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="canCloseInGroup" use="optional" type="xs:boolean" default="false">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Флаг возможности закрытия документа отдельно, если он находится в группе. По умолчанию false.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="javascriptDocumentClassName" type="xs:string" use="optional" default="DocumentObject">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Имя javascript-класса который будет создан в качестве базового. 
            При описании в правилах элементов документа имя класса можно заменять на %Doc%
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="timeZoneBias" type="xs:int" use="optional" >
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Смещение по часовому поясу от UTC с которым сохранены данные. Автоматически добавляется при сохранении.
            Позволяет при переносе данных в другой часовой пояс корректно их отображать.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="guid" type="xs:string" use="optional">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Уникальный идентификатор документа guid без спец символов сплошной строкой, заглавными буквами.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="userVersion" type="xs:string" use="optional">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Пользовательская версия документа. Не используется при обновлении.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>