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 для определения абстрактного значения, которое было закодировано.
Примечание - Эти правила подразумевают, что декодер необходим в отсутствие идентификации типа (или при наличии неоднозначной идентификации), чтобы попытаться декодировать первую по тексту альтернативу, затем следующую и так далее, принимая первое успешное декодирование (или диагностирование ошибки, если нет ни одного успешного декодирования).
37.3.4 Атрибут идентификации типа должен быть экземпляром продукционного правила "Attribute" (см. 19.3.3) с "ControlAttributeName" пространства имен ограниченного использования (см. 19.3.5) "типа" ("type") из управляющего пространства имен (см. 15.9).
37.3.5 Значение атрибута идентификации типа должно быть идентификатором выбранной альтернативы, возможно, модифицированной в соответствии с любой окончательной командой кодирования NAME и NAMESPACE.
37.3.6 Все "Атрибуты" ("Attribute"s), которые были бы иначе в "AttributeList" "ExtendedXMLChoiceValue", должны быть добавлены к "AttributeList" включающего элемента, и "ExtendedXMLChoiceValue" типа выбора должно быть заменено "ExtendedXMLValue" в "ExtendedXMLChoiceValue".
37.3.7 "ExtendedXMLValue" посимвольно кодируемого типа должно быть одним из результатов кодирования, которое не содержит любые XML теги.
Примечание - Это может ограничить опции кодера.
37.3.8 Если альтернатива типа выбора имеет окончательную команду кодирования NAME AS " ", никакой атрибут идентификации типа не должен быть добавлен для этой альтернативы.