Войти

Как подготовить инструментарий для создания xsd-схем

При проектировании ВС требуется описать СМЭВ-сообщения и структурированные файлы вложений в виде XSD-схем (далее - схем).

При отладке взаимодействия ИС УВ со СМЭВ возникает потребность в проверке соответствия запросов ИС УВ схемам ВС. Создание схем возможно в любом текстовом редакторе. Такой подход требует заметных затрат времени и может служить источником ошибок. Использование специализированных программных инструментов значительно сокращает трудозатраты на формирование комплекта файлов для регистрации нового ВС.

Рассмотрим возможности применения XML-инструментов для создания ВС для СМЭВ на примере продукта XMLSpy.

Примечание: Использование продукта ALTOVA XMLSpy требует приобретения лицензии.

Создание схемы

Для создания XSD-схемы выберите New в меню File, а затем выберите формат XML Schema v1.0:

Откроется стартовая форма документа - список элементов и типов схемы. Для новой схемы предлагается создать корневой элемент:


Создадим два корневых элемента – request и response. Для этого введем наименование и комментарий к существующей записи списка и добавим еще один корневой элемент.

Для добавления нового элемента или типа в список воспользуйтесь кнопкой Append (или Insert) и выберите тип добавляемого объекта:

 
Для просмотра древовидной структуры элемента воспользуйтесь кнопкой слева от записи списка:

 
Добавим в нашу схему два элемента:
  • applicant с описанием атрибутов физического лица – заявителя
  • application с описанием атрибутов заявления

Добавление элементов на схему осуществляется по правой кнопке мыши:

Сначала добавим Sequence, а затем наши элементы:

Аннотации к элементам можно создавать на графе, воспользовавшись командой Edit Annotation in Diagram из меню, вызываемого по правой кнопке мыши.

Приведем схему к следующему виду:

Атрибуты физического лица могут потребоваться в разных разделах схемы, поэтому для них лучше создать отдельный комплексный тип данных, который можно присваивать разным элементам запроса. Для этого нажмите правой кнопкой на элемент applicant и выберите команду «Make Global -> ComplexType»:

 
Будет создан новый комплексный тип данных с именем, состоящим из названия элемента и слова Type:

Переименуйте applicantType в PersonType и присвойте новый тип элементу applicationSubject:

 
Практически все операции создания схемы вида сведений можно выполнять на диаграмме схемы.
Ручное редактирование текста схемы также доступно:

Подробнее об описании запросной и ответных частей в статье Описываем типы запросной и ответных частей основной xsd-схемы.

Генерация XML-файла по схеме

Другой полезной при разработке вида сведений функцией является генерация XML-файла по схеме. Она может быть использована для подготовки эталонных запроса или ответа.
В меню «DTD/Schema» выполните команду «Generate Sample XML/JSON File…»:

 
Откроется форма с параметрами генерации. Выберите корневой элемент схемы, для которого будет создан XML-файл:
 

 
Будет сформирован следующий файл:


Поскольку в параметрах генерации не выбрана опция «Generate non-mandatory elements», то необязательный элемент patronymic не был включен в XML-файл ни для applicant, ни для applicationSubject.

Проверка XML-файла на соответствие схеме

На несоответствующий схеме запрос СМЭВ отвечает сообщение «Бизнес-данные сообщения не соответствуют схеме, зарегистрированной в СМЭВ» с подобным описанием ошибок:


Избежать получения подобных ошибок можно предварительно проверив корректность формируемых для отправки в СМЭВ сообщений. Для этого откройте файл запроса и в меню DTD/Schema воспользуйтесь командой Assign Schema, после чего выберите нужную схему (в примере это вид сведений ГИС ГМП «Прием необходимой для уплаты информации (начисления)»):


В XML-файл с запросом будет добавлена конструкция xsi:schemaLocation и в редакторе XML будут подсвечены все несоответствия запроса указанной схеме:
 


В разделе Messages отображается детальная информация об ошибках. После устранения выявленных при проверке ошибок в этом же разделе отображается сообщение, что XML полностью соответствует своей схеме:

 


Авторизуйтесь, чтобы оставить комментарий к статье