Проверка документа XML
Документ XML считается корректным, если его структура соответствует ожидаемой схеме. Для построения такой схемы используется XML Schema — язык описания структуры документов XML. Данный стандарт позволяет создать полную модель документа со словарями имен, типов и значений элементов, атрибутов и других узлов для строгой валидации XML. Формат, реализующий стандарт XML Schema, называется XML Schema definition (XSD).
В «1С:Шине» реализована проверка документов XML с помощью схемы XSD. Для этого используется специальный тип встроенного языка ПроверкаXml.
Пример
Для следующего документа в формате XML:
<?xml version="1.0" encoding="UTF-8"?>
<Приложения>
  <Приложение>
    <Название>Демо CRM</Название>
    <Сборка>1.0</Сборка>
  </Приложение>
  <Приложение>
    <Название>Демонстрационное приложение</Название>
    <Сборка>1.1</Сборка>
  </Приложение>
  <Приложение>
    <Название>1С:Кабинет сотрудника</Название>
    <Сборка>2.0</Сборка>
  </Приложение>
</Приложения>
так может выглядеть схема XSD, которая описывает структуру документа:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Приложения">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Приложение" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Название" type="xs:string"/>
              <xs:element name="Сборка" type="xs:decimal"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Проверка документа может быть выполнена в двух режимах:
- ПроверитьДоПервойОшибки — проверка документа до первой ошибки, после чего проверка останавливается. Опция по умолчанию.
- Проверить — полная проверка документа с получением списка всех ошибок. Требует больше системных ресурсов, поэтому рекомендуется к использованию при отладке и тестировании.
Использование схем XSD в проекте
Для проверки XML-документа схема может быть размещена в ресурсах проекта. Для этого необходимо добавить элемент Ресурсы, в котором необходимо загрузить файлы с расширением XSD или создать файл с расширением XSD и добавить в него описание структуры документа XML.  Для файлов схем в ресурсе могут быть созданы отдельные каталоги. Если в текущем ресурсе файл схемы ссылается на другую схему этого же ресурса, то указанный путь должен соответствовать относительному пути к целевой схеме в ресурсе.
При создании выгрузки приложения ресурсы проекта будут добавлены в файл архива автоматически.
Разрешение зависимостей
В документе XML могут использоваться ссылки на локальные или внешние ресурсы, например, схемы XSD. Их загрузка и сохранение для повторного использования выполняется с помощью внутреннего механизма технологии.
В «1С:Шине» разрешение зависимостей выполняется автоматически. Загруженные данные добавляются в каталог ресурсов, где внешний идентификатор ресурса (URI) соответствует внутреннему идентификатору ресурса, по которому выполняется загрузка при повторном обращении. Также в данный каталог автоматически добавляются ресурсы проекта, доступ к которым можно получить по специальному имени ресурса (URN).
| URI | Описание | Пример | 
|---|---|---|
| URN | имя ресурса проекта в формате urn:1c-element:resource:{пространство имен проекта, разделитель "-"}:{путь ресурса в проекте} | urn:1c-element:resource:dev-проект-основной:папка1/папка2/схема.xsd | 
| URL | ссылка на внешний ресурс | http://xmlcatalogs.org/schema/1.1/catalog.xsd,http://company.local/schema/1.0/entity.xsd | 
При успешном разрешении внешние зависимости сохраняются в локальной таблице базы данных для повторного использования. Сохраненные данные доступны для всего приложения.
Инициализация каталога выполняется после применения проекта при первом вызове проверки или преобразования XML. У записи каталога есть срок действия — 7 дней. Проверка истечения срока действия и удаление соответствующих записей выполняются после каждого применения проекта при вызове метода проверки или преобразования XML.
Также о разрешении зависимостей с примерами см. здесь.