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