Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-5-2013 Информационная технология (ИТ). Правила кодирования AСН.1. Часть 5. Отображение определений W3C схемы XML в AСН.1

     13 Отображение простых определений типа

13.1 Применение данного раздела является прямым запросом из других мест настоящего стандарта сформировать присвоение типа АСН.1 или определение типа АСН.1, соответствующее простому определению типа.

Примечание - Этот раздел не запрашивается для простых определений типа, которые являются XSD-встроенными типами.

13.2 Высокоуровневое простое определение типа должно быть отображено в присвоении типа АСН.1. "typereference" в "TypeAssignment" должно быть сформировано применением 10.3 к имени простого определения типа, и "Туре" в "TypeAssignment" должно быть определением типа АСН.1, как определено в 13.4-13.9.

13.3 Анонимное простое определение типа должно быть отображено в определении типа АСН.1, как указано в 13.4-13.9.

13.4 Для простого определения типа со множеством atomic с фасетом enumeration, который получается ограничением (прямо или косвенно) xsd:string, определение типа АСН.1 должно быть перечислимым типом АСН.1, "Enumeration" которого должно быть сформировано в соответствии с 12.4.1.

13.5 Для простого определения типа со множеством atomic с фасетом enumeration, который получается ограничением (прямо или косвенно) xsd:integer, определение типа АСН.1 должно быть перечислимым типом АСН.1, "Enumeration" которого должно быть сформировано в соответствии с 12.4.2. Заключительная команда кодирования USE-NUMBER должна быть присвоена перечислимому типу АСН.1.

13.6 Для любого другого простого определения типа (D, например) с любым множеством, которое получено ограничением (прямо или косвенно) высокоуровневого простого определения типа, определение типа АСН.1 должно быть сформировано применением 23 к высокоуровневому простому определению типа (В, например) так, что:

а) D получается ограничением (прямо или косвенно) от В;

b) либо В является базовым определением типа D, либо все промежуточные шаги вывода от В до D - анонимные простые определения типа.

Затем для каждого из фасетов D (если такие есть) ограничение АСН.1, сформированное в соответствии с 12 применительно к фасету, должно быть добавлено к определению типа АСН.1.

13.7 Для любого другого простого определения типа (D, например) со множеством atomic определение типа АСН.1 должно быть сформировано с помощью 23 применительно к встроенному типу XSD (В, например) так, что:

a) D получается ограничением (прямо или косвенно) от В;

b) либо В является базовым определением типа D, либо все промежуточные шаги вывода от В до D - анонимные простые определения типа.

Затем для каждого из фасетов D ограничение АСН.1, сформированное применением 12 к фасету, должно быть добавлено к определению типа АСН.1.

13.8 Для любого другого простого определения типа (D, например) со множеством list применяют пять следующих пунктов.

13.8.1 Определение типа АСН.1 должно быть последовательностью типа АСН.1, компонент которого должен быть "Туре", сформированный применением раздела 23 к объектному определению типа (item type definition).

13.8.2 Для каждого фасета D ограничение АСН.1, сформированное применением 12 к фасету, должно быть добавлено к последовательности типа АСН.1.

13.8.3 Если объектное определение типа списка является xsd:string или ограничением xsd:string и отображается в тип символьной строки АСН.1, то ограничение разрешенного алфавита (FROM ((0, 0, 0, 33)..(0, 16, 255, 253))) должно быть применено к типу символьной строки АСН.1.

13.8.4 Если объектное определение типа списка является типом объединения, то ограничение подтипа, описанное в 13.8.3, должно быть применено к каждой альтернативе типа выбора АСН.1, который является типом символьной строки, путем использования внутреннего ограничения подтипа, примененного к типу выбора.

13.8.5 Заключительная инструкция кодирования LIST должна быть присвоена типу последовательности АСН.1.

Пример - Далее представлено высокоуровневое простое определение типа, которое является list xsd:float:

<xsd:simpleType name="list-of-float">

<xsd:Iist itemType="xsd:float"/>

</xsd:simpleType>

Это отображается в присвоении типа АСН.1:

     List-of-float ::= [LIST] [NAME AS UNCAPITALIZED] SEQUENCE OF XSD.Float

13.9 Для любого другого простого определения типа (D, скажем) со множеством union, применяются пять следующих пунктов.

13.9.1 Определение типа АСН.1 должно быть типом выбора АСН.1 с одной альтернативой для каждого элемента элементных определений типа (member type definitions).

13.9.2 Для каждого элемента элементных определений типа "identifier" в "NamedType" соответствующей альтернативы должен быть получен применением 10.3 либо к имени элемента (если элементом является встроенный тип XSD или высокоуровневое простое определение типа), либо к символьной строке "alt" (если элемент является анонимным простым определением типа), и "Туре" в "NamedType" должно быть определением типа АСН.1, полученным применением раздела 23 к элементу элементных определений типа.

13.9.3 Для каждого элемента элементных определений типа, который является анонимным простым определением типа, соответствующее "NamedType" должно иметь заключительную команду кодирования NAME AS "".

13.9.4 Для каждого из фасетов D ограничение АСН.1, сформированное применением раздела 12 к фасету, должно быть добавлено к типу выбора АСН.1.