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

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

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

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

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

20.2 Высокоуровневое сложное определение типа должно быть отображено в присвоении типа АСН.1. "Typereference" в "TypeAssignment" должно быть сформировано с применением 10.3 к имени сложного определения типа, и "Туре" в "TypeAssignment" должно быть определением типа АСН.1, как указано в 20.4-20.11.

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

20.4 Определение типа АСН.1 должно быть последовательностью типа АСН.1, и ноль* и более компонентов должны быть добавлены к нему, как описано в 20.5-20.11 в указанном порядке.

________________

* Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.

20.5 Если тип содержимого сложного определения типа представляет собой смешанную (mixed) модель содержимого, то компонент должен быть добавлен к типу последовательности АСН.1. "identifier" в "NamedType" этого компонента должен быть embed-values, и "Туре" в "NamedType" должен быть типом последовательности, компонентом которой должен быть "Туре", полученный применением раздела 23 к XSD-встроенному типу xsd:string. Заключительная команда кодирования EMBED-VALUES должна быть присвоена к типу последовательности АСН.1.

20.6 Если тип содержимого сложного определения типа является частицей, термом которой выступает модельная группа с наборщиком всего, то компонент должен быть добавлен к типу последовательности АСН.1. "identifier" в "NamedType" компонента должен быть order, и "Туре" в "NamedType" должен быть типом последовательности, компонентом которой должен быть "EnumeratedType". Для каждой частицы модельной группы (термом которой всегда является объявление элемента), "Enumerationltem", т.е. "identifier" идентичный "identifier" в "NamedType", соответствующей каждой частице, должно быть добавлено к "Enumeration" по порядку. Заключительная команда кодирования USE-ORDER должна быть присвоена типу последовательности АСН.1.

Примечание - "identifier" в "NamedType", отображаемых из частиц, формируется (применение 10.3) как добавление каждого компонента к типу последовательности. Таким образом, даже если компонент order находится в положении, которое дословно предшествует положениям этих компонентов в типе последовательности АСН.1, формирование компонента order может быть завершено только после того, как все частицы были отображены в последовательность компонентов.

20.7 Если сложное определение типа имеет применения атрибута, то компоненты, полученные применением раздела 22 к применениям атрибута, должны быть добавлены к типу последовательности АСН.1 в порядке, основанном на целевом пространстве имен и имени объявления атрибута каждого применения атрибута. Применения атрибута должны быть предварительно отсортированы по целевому пространству имен объявления атрибутаотсутствующим ключевым словом, предшествующим всем именам пространства имен, упорядоченным по возрастанию в лексикографическом порядке), а затем по имени объявления атрибута внутри каждого целевого пространства имен (также в возрастающем лексикографическом порядке).

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

20.9 Если тип содержимого сложного определения типа является частицей, то применяется один из четырех следующих пунктов.

20.9.1 Если термом частицы является модельная группа с наборщиком последовательности, чьи min occurs и max occurs являются оба единицей, то для каждой частицы модельной группы по порядку упорядоченный список из нуля и более "NamedType" АСН.1 должен быть получен применением раздела 19 к частице в модельной группе, и эти "NamedType" должны быть добавлены к типу последовательности АСН.1 в том же порядке.

20.9.2 Если термом частицы является модельная группа с наборщиком последовательности, чьи min occurs и max occurs не являются оба единицей, то компонент, полученный применением раздела 19 к частице в типе содержимого, должен быть добавлен к типу последовательности АСН.1.

20.9.3 Если термом частицы является модельная группа с наборщиком всего, то для каждой частицы модельной группы по порядку, компонент, полученный применением раздела 19 к частице модельной группы, должен быть добавлен к типу последовательности АСН.1. Если частица в типе содержимого сложного определения типа имеет min occurs ноль, каждая из частиц модельной группы с min occurs, равным единице, должна быть отображена, как если бы она имела min occurs ноль.

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

20.10 Если тип содержимого сложного определения типа является простым определением типа, то компонент должен быть добавлен к типу последовательности АСН.1. "identifier" в "NamedType" компонента должен быть сформирован с применением 10.3 к символьной строке "base", и "Туре" в "NamedType" должно быть определением типа АСН.1, полученным применением раздела 23 к типу содержимого. Заключительная команда кодирования UNTAGGED должна быть присвоена к компоненту.

20.11 Если тип содержимого сложного определения типа пуст, то никакие дополнительные компоненты к типу последовательности АСН.1 не добавляются.