2. Введение
Типы данных, используемы для передачи документов, делятся на два вида:
Простые типы данных
Составные типы данных
2.1. Простые типы данных
Простые типы данных используется для определения представления и допустимых значений одного реквизита документа (поля структуры данных). Простым типа данных форматов документов соответствуют типа данных XSD-схемы, описанные элементом simpleType.
Каждый простой тип данных содержит ограничения на множество возможных значений поля данных. При проектировании сложных структур данных для типов полей используются только простые типы данных,описанные в настоящем документе.
Необходимость введения ограничения связана с тем, что для хранения документов в базе данных используются типы данных СУБД, которые однозначно не соответствуют базовым типам данных XML. Например, для эффективного хранения и поиска строковых данных в базе все строки должны иметь установленный максимальный размер.
Для определённых типов данных и полей структур данных возможно наложение ограничений на значение, которое невозможно формально описать в XSD-схеме структуры данных. В этом случае данные об установленных ограничениях приводится словесной форме в описании типа или поля данных.
При нарушении ограничений на значения полей данных, установленных в описании типа данных или дополнительных ограничениях поля данных в поступивших сообщениях, клиенту веб-сервиса происходит возврат сообщения об ошибке форматно-логического контроля данных. Данные, нарушающие ограничения, веб-сервисом не принимаются.
Описание простых типов данных выполнено в виде нескольких таблиц одного вида. Описание колонок таблиц находится в таблице 1. В качестве примера приведено описание строкового типа данных с возможной длиной значения от 1 до 50 символов.
Таблица 1: Описание простых типов Наименование колонки
| Описание
| Пример
|
Описание
| Содержит описание поля на русском языке.
| Строка длиной от 1 до 50 символов
|
Наименование типа данных
| Наименование (идентификатор) типа данных так, как это записано в XSD-схеме документа
| String_1_50
|
Базовый тип данных XSD
| Тип данных, предопределённый в базовых типах данных XML.
| string
|
Ограничения типа в XSD-схеме
| Значения элементов с ограничениями на значения типа, в виде элементов, включённых в элемент restriction в XSD-схеме.
| minLength value="1"; maxLength value="50"
|
Дополнительная информация
| Содержит описание дополнительных ограничений на значения, примеры значений.
|
|
Данные справочника
| Содержит список допустимых значений поля данного типа и их расшифровку. Может указываться наименование справочника в подсистеме Нормативно-Справочной Информации — НСИ.
|
|
2.2. Составные типы данных
Составные типы данных представляют собой структуры данных, состоящие из нескольких полей. Значение составного типа в XML-представлении данных всегда представлено XML-элементом, включающем в себя другие элементы или атрибуты. Составные типы данных описаны в XSD-схеме в виде complexType-элементов.
При заполнении составного типа следует учитывать порядок следования элементов. Он должен совпадать с порядком строк таблицы, в которой описан составной тип. Порядок следования атрибутов в составе значения типа не имеет значения.
Для всех элементов или атрибутов составного типа указана необходимость их присутствия в структуре данных составного типа. В случае, если присутствие элемента или атрибута необязательно, при отсутствии данных, значение вместе с соответствующим элементом или атрибутом в составе структуры данных должно отсутствовать.
В случае присутствия элемента или атрибута его значение должно удовлетворять ограничением его типа данных и дополнительным ограничениям на значение поля, при их наличии.
Составной тип данных может быть основан на другом составном типе данных. В этом случае говорится, что описываемый тип данных «расширяет» базовый тип. При этом в состав типа входят сначала элементы базового типа, затем элементы описываемого типа данных. Множества атрибутов типов данных объединяются в произвольном порядке. Поля, обязательные для заполнения в базовом типе данных, также обязательны для заполнения во всех типах, расширяющих базовый тип.
Каждый составной тип данных описан отдельной таблицей. Каждому реквизиту (полю) или элементу составного типа в составе документа соответствуют одна строка таблицы. Значение полей описания приведено в таблице 2. Для примера приведено описание поля «Категория транспортного средства» в составе типа данных «Транспортное средство». Это поле представлено в виде элемента, может содержать значение строкового типа длиной от 1 до 50 символов, элемент поля должен обязательно присутствовать в XML-представлении структуры данных. Дополнительных ограничений на значение поля не накладывается, но приведен пример значений («Грузовой», «Автобус» и т. п.), которыми рекомендуется заполнять поле.
Таблица 2: Описание полей и структур данных в составных типах. Наименование колонки
| Описание
| Пример
|
Заголовок элемента
| Заголовок поля данных в том виде, в котором он показывается пользователю АИС.
| Категория транспортного средства
|
Наименование элемента
| Наименование элемента или атрибута в XSD-схеме данных и XML-представлении документа.
| AutomType
|
Тип данных элемента
| Содержит наименование типа данных в таблице простых типов и в XSD-схеме.
| String_1_50
|
П/С/А
| Содержит литеру, показывающую в каком виде должно быть представлено значение поля документа в XML-представлении для простых типов. Сложные типы отмечаются отдельно.
Допустимые значения поля:
П — поле простого типа представляется в виде элемента.
А — поле простого типа представляется в виде атрибута
С — структура данных составного типа, представляется в виде элемента.
| П
|
О(М)
| Показывает обязательность наличия поля в XML-представлении данных. Для этого используются литеры:
Н — необязательное поле или структура данных
О — обязательное поле или структура данных.
Также в этом здесь описывается возможность включать несколько значений одного поля документа или структуры данных в представлении, т. е. создавать массивы данных. Допустимо только для элементов данных и отмечается в поле дополнительной литерой «М».
Если значение поля представляет собой идентификатор какого-либо ведомственного классификатора, дополнительно может быть указана литера «К»
| О
|
Дополнительная информация
| Здесь указываются дополнительные ограничения на значения данных поля, примеры значений, которыми следует заполнять поле и прочая информация.
| Заполняется значениями «Грузовой», «Автобус» и т. п.
|
В строке таблицы описания составного типа могут быть описаны несколько элементов, наименования которых разделены символом «|». Такая форма записи применяется в случае возможного присутствия в элементе данных только одного подчинённого элемента из описанных таким образом.