Войти

Как избежать ошибок при xsd-проектировании для СМЭВ?

Синтаксические ошибки

Для того, чтобы избежать синтаксических ошибок при проектировании XSD-схем (далее- схем) для ВС, рекомендуется использовать один из специализированных XML-редакторов, например XMLSpy от компании Altova.

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

В подобных редакторах схемы можно разрабатывать в графическом представлении, а текст схемы редактор сформирует «за сценой» самостоятельно.

Если вручную внести изменения в текст схемы редактор проверит изменения на наличие ошибок и подсветит их, а также предоставит необходимые пояснения.

Например, попробуем вынести элемент за границы sequence:

  
Редактор подсказывает, что мы выбрали неудачное место для нашего элемента.

Семантические ошибки

Для того, чтобы избежать семантических ошибок в проектировании схем ВС, следует придерживаться положений документа Требования к XML-схемам, регистрируемым в СМЭВ 3, опубликованный в разделе "Документация" -> "СМЭВ 3" -> "Для разработчиков".
 
Приведем здесь краткую выжимку из этих требований:
  • В каждой схеме должно быть определено пространство имен (одинаковое для запроса и ответов и включающее в себя номер версии ВС) и targetNamespace.
  • В заголовке схемы должен присутствовать атрибут elementFormDefault="qualified".
  • Каждый элемент должен иметь определенный тип (использование anyType запрещается).
  • Использование кириллицы в наименованиях элементов и атрибутов запрещается.
  • Наименование элементов и атрибутов схемы должно быть на английском языке. Транслитерация запрещается, за исключением общепринятых сокращений типа ИНН (INN), ОГРН (OGRN), СНИЛС (SNILS) и т.п.
  • На верхнем уровне схемы должны присутствовать только элементы запроса и ответов. Другие элементы на верхнем уровне не допускаются.
  • Типы данных, которые используются в нескольких видах сведений одного и того же участника, рекомендуется выносить в отдельные дополнительные схемы, которые помещаются в каталог commons, находящийся на одном уровне с основной схемой.
  • Определять тип данных элементов как xs:string категорически не рекомендуется. Подумайте о том, как вы будете сохранять эти значения в свое базе данных, где длина полей всегда ограничена. Поэтому рекомендуется использовать производные от xs:string простые типы с ограниченной длиной.
 
В том же документе приведены типовые шаблоны для описания различных сущностей – данные физического лица, реквизиты юридических лиц и т.д.  

Ошибки в содержимом

Категорически запрещается включать в схемы ответов всевозможные статусы обработки запроса, а также коды ошибок, которые могут возникнуть при выполнении форматно-логического контроля на стороне ответчика.

Для целей информирования потребителя о статусах и ошибках следует использовать разделы RequestStatus и RequestRejected СМЭВ-сообщения SendResponseRequest соответственно:

 
 
 Структура этих разделов представлена на следующем рисунке:    

  
Также не следует включать в запросы и ответы ВС описание файлов вложений.
 
Для этого используются стандартные разделы СМЭВ-сообщения SendResponseRequest, а именно AttachmentHeader (для файлов вложений, передаваемых в MTOM формате в составе XML-сообщения) и RefAttachmentHeader (для файлов вложений, передаваемых через FTP-сервер СМЭВ).
 
Структура этих разделов приведена на рисунке ниже:
  

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