25.1 Применение данного раздела является прямым запросом из других мест настоящего стандарта сформировать определение типа АСН.1, соответствующее высокоуровневому простому определению типа или сложному определению типа, используемому в качестве определения типа объявлений элемента, которые имеют заменяемое определение типа (см. 14.7) и обнуляемы.
25.2 Использование простого определения типа (STD, например) или сложного определения типа (CTD, например) должно быть отображено в тип выбора АСН.1.
25.3 Одна из альтернатив должна быть добавлена к типу выбора АСН.1 для STD или CTD и одна альтернатива должна быть добавлена для каждого высокоуровневого простого определения типа и сложного определения типа в исходной схеме XSD, которая получается ограничением или расширением (непосредственно или косвенно) STD или CTD.
25.4 Для каждой альтернативы "identifier" в "NamedType" должен быть сформирован применением 10.3 к имени простого определения типа или сложного определения типа, соответствующему альтернативе, и "Туре" в "NamedType" должно быть определением типа АСН.1 ("DefinedType"), полученным применением 10.2 к присвоению типа АСН.1, полученному применением раздела 30 к простому определению типа или сложному определению типа.
25.5 Первой альтернативой, добавленной к типу выбора, должна быть альтернатива, соответствующая STD или CTD. Последующие альтернативы должны быть добавлены к типу выбора в порядке, основанном на целевом пространстве имен и имени простого определения типа и сложного определения типа. Определения типа должны быть сначала отсортированы по целевому пространству имен (с отсутствующим пространством имен, предшествующим всем именам пространства имен, отсортированным по возрастанию в лексикографическом порядке), а затем - по имени (также в лексикографическом порядке возрастания) внутри каждого целевого пространства имен.
25.6 Заключительная команда кодирования USE-TYPE должна быть присвоена типу выбора АСН.1.
25.7 Если ограничение значения было предоставлено при инициировании данного пункта, то заключительная команда кодирования DEFAULT-FOR-EMPTY должна быть присвоена каждой альтернативе типа выбора АСН.1, соответствующего простому или сложному определению типа, что проверит гипотетический элемент, содержащий каноническое лексическое представление значения в ограничении значения, но не другим альтернативам (если таковые имеются). Применяется один из трех следующих пунктов.
25.7.1 Если альтернатива соответствует простому определению типа, "Value" в заключительной команде кодирования DEFAULT-FOR-EMPTY должно быть получено применением раздела 16 к значению в ограничении значения, рассматриваемому как значение в области значений простого определения типа.
25.7.2 Если альтернатива соответствует сложному определению типа, тип содержимого которого является простым определением типа, "Value" в заключительной команде кодирования DEFAULT-FOR-EMPTY должно быть получено применением раздела 16 к значению в ограничении значения, рассматриваемому как значение в области значений простого определения типа.
25.7.3 Если альтернатива соответствует сложному определению типа со смешанным типом содержимого, "Value" в заключительной команде кодирования DEFAULT-FOR-EMPTY должно быть получено применением раздела 16 к значению в ограничении значения, рассматриваемому как значение в области значений xsd:string с whiteSpace preserve.
25.8 Если ограничение значения было предоставлено при инициировании данного раздела и значение в ограничении значения является фиксированной величиной, то ограничение внутреннего подтипа АСН.1 должно быть добавлено к типу выбора АСН.1. Один из четырех следующих пунктов применяется к каждой альтернативе типа выбора.
25.8.1 Если альтернатива была присвоена заключительной команде кодирования DEFAULT-FOR-EMPTY в 25.7 и соответствует простому определению типа, ограничение внутреннего подтипа должно применить к альтернативе (которой является тип последовательности АСН.1 с заключительной командой кодирования USE-NIL) другое ограничение внутреннего подтипа АСН.1, которое, в свою очередь, должно применить к компоненту content ключевое слово PRESENT и одиночное ограничение значения АСН.1 с "Value", идентичным "Value" в заключительной команде кодирования DEFAULT-FOR-EMPTY.
25.8.2 Если альтернатива была присвоена заключительной команде кодирования DEFAULT-FOR-EMPTY в 25.7 и соответствует сложному определению типа, тип содержимого которого является простым определением типа, ограничение внутреннего подтипа должно применять к альтернативе (которой является тип последовательности АСН.1 с заключительной командой кодирования USE-NIL) другое ограничение внутреннего подтипа АСН.1, которое применяет к компоненту content ключевое слово PRESENT и одиночное ограничение значения АСН.1 с "Value", идентичным "Value" в заключительной команде кодирования DEFAULT-FOR-EMPTY.
25.8.3 Если альтернатива была присвоена заключительной команде кодирования DEFAULT-FOR-EMPTY в 25.7 и соответствует сложному определению типа со смешанным типом содержания, ограничение внутреннего подтипа должно применить к альтернативе (которой является тип последовательности АСН.1 с заключительной командой кодирования USE-NIL) другое ограничение внутреннего подтипа АСН.1, которое применяет к:
а) компоненту embed-values одиночное ограничение значения АСН.1 с "Value", состоящем в одиночном появлении "Value", идентичном "Value" в заключительной команде кодирования DEFAULT-FOR-EMPTY; и
б) компоненту content ключевое слово PRESENT.
25.8.4 Если альтернатива не была присвоена заключительной команде кодирования DEFAULT-FOR-EMPTY в 25.7, ограничение внутреннего подтипа должно применить ограничение присутствия ABSENT к альтернативе.