ГОСТ Р ИСО/МЭК 8825-4 — 2009
37.2.4 В следующих двух подразделах термин "identifier” означает: идентификатор (возможно моди-
фицированый в соответствии с любой окончательной командой кодирования NAME and NAMESPACE)
альтернативы (типа выбора).
37.2.5 Если тип выбора (скажем, тип U). кодируется как альтернатива включающего типа выбора
(скажем, типа Е). с окончательной командой кодирования USE-TYPE и идентификатор одной из альтерна
тив Е тождествен идентификаторуодной из альтернатив U.тогда каждоеабстрактное значение этой альтер
нативы U должно иметь по крайней мере один результат кодирования, который отличается от всех резуль
татов кодирования предшествующих по тексту альтернатив U.
П р и м е ч а н и е — Это требование обусловлено невозможностью идентифицировать альтернативу U.
так как идентификатор в атрибуте идентификации типа для Е просто идентифицировал бы весь U.
37.2.6 Если тип выбора (скажем. U1) кодируется как альтернатива включающего типа выбора
(скажем, типа Е)с окончательной командой кодирования USE-TYPE и Е содержитдругой тип выбора (ска
жем. U2) с командой кодирования USE-UNION, которая следует по тексту за U1 в Е. и идентификатор любой
из альтернатив U2 тождествен одному из идентификаторов U1. тогда каждое абстрактное значение этой
альтернативы U2должно иметь, по крайней мере, один результат кодирования, который отличается от всех
результатов кодирования предшествующих по тексту альтернатив U1.
П р и м е ч а н и е — Это требование обусловлено невозможностью идентифицировать альтернативу U2.
так как идентификатор в атрибуте идентификации типа для Е идентифицировал бы альтернативу в U1.
37.2.7 Эта команда кодирования недолжна быть назначена, если нет команды кодирования GLOBAL-
DEFAULTS MODIFIED-ENCODINGS в раздело управления кодированием.
37.2.8 Тип с этой окончательной командой кодирования не должен также иметь окончательной
командой кодирования USE-TYPE.
П р и м е ч а н и е — Нижеперечисленные окончательные команды кодирования никогда не могут
появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено:
ANY-ATTRIBUTES. ANY-ELEMENT, BASE64. DECIMAL. EMBED-VALUES. LIST. TEXT. USENIL. USE-NUMBER.
USE-ORDER. USE-QNAME. WHITESPACE.
37.2.9 В “TargetList" не должно быть уточняющей информации.
37.3 Действие на результат кодирования
37.3.1 Если тип выбора не имеет окончательной командой кодированияATTRIBUTE или UNTAGGED
и не закодирован как компоненттипа последовательность-из или набор-изс окончательной командой коди
рования LIST, тогда атрибут идентификации типа может быть добавлен как опция кодера к "AttributeList"
включающего элемента (носы. 37.3.8).
П р и м е ч а н и е — Если тип выбора закодирован как альтернатива выбора с командой кодирования
USE-TYPE, атрибут идентификации типа, определенный командой кодирования USE-UNION, может использо
ваться вместо атрибута идентификации типа, определенного командой кодирования USE-TYPE (см. 36.3.8).
37.3.2 Если каждый возможный результат кодирования кодируемого абстрактного значения иденти
чен одному из результатов кодирования абстрактного значения предшествующей по тексту альтернативы,
тодолжен бытьдобавлен атрибут идентификации типа.
П р и м е ч а н и е — Подраздел 37.3.2 отменяет опцию кодера подраздела 37.3.1 и делает дополнение
атрибута идентификации типа обязательным. Ограничения, определенные в 37.2.4 к 37.2.6 гарантируют, что это
может произойти, только когда тип выбора закодирован как элемент и когда никакая двусмысленность из-за
идентичных идентификаторов невозможна.
37.3.3 Если тип выбора имеет окончательную команду кодирования ATTRIBUTE или UNTAGGED.
или его включающий тип является типом последовательность-из или набор-из с окончательной командой
кодирования LIST, никакой атрибут идентификации типа не может быть вставлен ни в один элемент.
В случае сценариев, описанных в 37.2.4 — 37.2.6. атрибут идентификации типа не может быть вставлендля
точной идентификации некоторых альтернатив U ил и U2. Декодеры должны поэтому полагаться на условия
37.2.4 — 37.2.6для определения абстрактного значения, которое было закодировано.
П р и м е ч а н и е — Эти правила подразумевают, что декодер необходим вотсутствие идентификации типа
(или при наличии неоднозначной идентификации), чтобы попытаться декодировать первую по тексту альтерна
тиву. затем следующую и так далее, принимая первое успешное декодирование (или диагностирование ошибки,
если нет ни одного успешного декодирования).
64