12.11 Каждая из альтернатив для продукционного правила "PositiveInstruction" находится в определенной категории команды кодирования (или в некоторых случаях охватывает множественные категории). Категория каждой команды кодирования определена в столбце 3 таблицы 1 (но см. также 14.3 для команд кодирования, которые охватывают множественные категории).
Примечание - Категории команд кодирования используются в 14.4, чтобы определить эффект многократного назначения команд кодирования.
12.12 "TargetList" во всех конструкциях "EncodingInstruction", которые появляются в префиксе типа, будет "пуст", и адресатом должен быть "Type", связанный с префиксом типа.
12.13 Команда отрицания находится в той же категории, что и соответствующая положительная команда.
12.14 Тип АСН.1 никогда не мог связывать с этим больше чем одну команду кодирования XER данной категории (см. 14.3 и 14.4), независимо от того, как они назначены. Результат множественных назначений команды кодирования XER данной категории определен в разделе 14.
13.1.1 Команды кодирования XER могут быть назначены типам АСН.1 с использованием либо продукционного правила "EncodingInstruction" в префиксе типа XER, либо продукционного правила "EncodingInstructionAssignmentList" в разделе управления кодированием XER. Назначения, использующие префикс типа, определены в разделе 12. Назначения, использующие раздел управления кодированием XER, определены в этом разделе.
13.1.2 XER "EncodingInstruction" продукционное правило:
13.1.3 Продукционное правило "EncodingInstruction" определено в 13.3.
13.1.4 Каждое использование "EncodingInstruction" в разделе управления кодированием назначает эту команду кодирования XER появлению "Type", идентифицированному в команде кодирования "TargetList", или ссылкам на тип в перечне импорта. Продукционное правило "TargetList" и цели, которые идентифицируются перечнем, определены в 13.2.
13.1.5 Подразделы 12.4 и 12.14 также применяются к командам кодирования в разделе управления кодированием. Разделы, определяющие детализированный синтаксис для каждой категории команды кодирования, перечислены в таблице 1. Категории команд кодирования XER также перечислены в таблице 1.
13.2.1 Общие правила приведены ниже.
13.2.1.1 Альтернативы "EncodingInstruction" определяют команду кодирования XER, которая назначается, и цель (цели) для назначения в пределах модуля АСН.1. Все цели - появления продукционных правил "Type" в пределах модуля АСН.1.
Примечание - Могут быть определены множественные цели в тех же самых или в различных назначениях типа АСН.1. Цель, которая является полным модулем, или всеми появлениями в пределах модуля встроенного типа или конструктора, также может быть определена. Таким образом, (при использовании раздела управления XER кодирования) единственная "EncodingInstruction" может использоваться для назначения конкретной команды XER кодирования всем типам в модуле АСН.1, которым необходимо назначить эту команду кодирования.
13.2.1.2 При идентификации цели (целей) для назначения команды XER кодирования используется продукционное правило "TargetList". Это определено в следующих подразделах.
Примечание 1 - На продукционное правило "TargetList" ссылаются в разделе 19.
Примечание 2 - Продукционное правило "TargetList" имеет "пустую" альтернативу. Это - единственная разрешенная альтернатива, если "EncodingInstruction" используется в префиксе типа (см. 12.12). В 13.2 рассматривается только использование "TargetList" в управляющем разделе кодирования.
13.2.1.3 Продукционное правило "TargetList":
13.2.1.4 Если "TargetList" - перечень одного или более продукционных правил "Targets", то каждое из "Targets" идентифицирует одну или более целей (типы - "Type", которым назначена команда кодирования), но оно может также обеспечить уточняющую информацию для команды кодирования, ограничивая ее применение кодированием с использованием конкретного идентификатора в определении целевого типа, или с использованием тегов пустых элементов для управляющих символов, определенных в ИСО/МЭК 8824-1, 11.15.5.
Примечание - Уточняющая информация присутствует только в том случае, если цель является определением одного из следующих типов: булевский, строка битов, перечислимый, целочисленный или ограниченная строка символов (см. 13.2.2.9).
13.2.1.5 "TargetList" "пустых" разрешается только в префиксе типа (когда это - единственная разрешенная альтернатива) и в команде кодирования GLOBAL-DEFAULTS. В префиксе типа он идентифицирует тип, связанный с префиксом. В команде кодирования GLOBAL-DEFAULTS он идентифицирует весь "Type" в модуле.
13.2.1.6 Команда кодирования XER (возможно, со связанной уточняющей информацией) назначена всем типам, идентифицированным "TargetList", как определено в 13.2.1.10 - 13.2.1.16.
Примечание - Это было бы необычным, но правомочным для данного "Type", который будет идентифицирован не раз в целевом перечне. В таких случаях применяется раздел 14.
13.2.1.7 Идентификация цели (целей) (и, возможно, уточняющей информации) продукционным правилом "Targets" использует одну из пяти базовых форм:
а) использование ссылки на тип ("typereference", см. 13.2.2), возможно, сопровождаемой перечнем разделенных точкой идентификаторов, с распознаванием также:
1) "Type" в назначении типа (идентификаторы отсутствуют);
2) "Type" в компоненте определения типов (который может включать компоненты верхнего уровня, введенные конструкцией COMPONENTS OF - см. 13.2.1.12);
3) один из "Type" - (1) или (2), плюс конечный идентификатор, перед которым стоит двоеточие (не точка) для идентификатора, используемого в определении целевого типа, обеспечивает уточняющую информацию;
б) использование ALL как последнего идентификатора в форме (а), идентифицируя все, что типы ("Types") дословно представляют в определении типов (что идентифицировано предшествующей ссылкой на тип и перечнем идентификаторов, разделенных точками), или использование уточняющей информации (которой предшествует двоеточие, не точка), распознающей все идентификаторы, используемые для значений определений типов: булевских, строк битов, перечислимых, или целочисленных (которые идентифицированы предыдущей ссылкой на тип и списком идентификаторов, разделенных точками), или идентифицирующей все использования тегов пустого элемента XML, обычно представляющих некоторые управляющие символы (см. ИСО/МЭК 8824-1, 11.15.5);
в) использование "BuiltInTypeName" (см. 13.2.3), идентифицирующего все типы ("Type"s) в модуле, которые определены при помощи соответствующего встроенного названия типа или конструктора, возможно только в случае типов BOOLEAN, BIT STRING, ENUMERATED, INTEGER и ограниченной строки, в сопровождении уточняющей информацией;
г) использование списка "идентификаторов", сопровождаемого IN (или ALL сопровождаемого IN, или COMPONENTS, сопровождаемых IN) и формой (а), (см. также 13.2.4), идентифицирующего:
1) "Type" идентифицированных компонентов формы (а);
2) все "Types", которые текстуально встречаются в пределах "Type", идентифицированного формой (а) (использование ALL);
3) все ("Type"s), которые являются компонентами верхнего уровня "Type", идентифицированного формой (а) (использование COMPONENTS);
д) использование "ImportedTypesIdentification" (см. 13.2.5) идентифицирует все ссылки на типы ("typereference"s) в списке IMPORTS, которые импортированы из специфицированного модуля.
Примечание 1 - Термин "определение типов", используемый в формах (а) и (б) подчеркивает, что только дословно представленные идентификаторы могут использоваться. Идентификаторы не могут использоваться, если "Type" - ссылка на тип.
Примечание 2 - В общем случае на компонент можно сослаться при помощи форм (а) или (г). Если нужно сослаться больше чем на один компонент типа, то предпочтительнее вариант (г), так как это менее многословно, при других критериях надо отдать предпочтение форме (а). Это - вопрос стиля.
13.2.1.8 Тип строка битов или строка октетов с ограничением контента, который содержит тип, будет обработан как тип с единственным компонентом, с использованием "*" как составляющего идентификатора для назначения целевой команды типу ("Type") в ограничении содержания.
13.2.1.9 Определение типов, которые являются последовательностью-из или набором-из, должно быть обработано как тип с единственным компонентом, с использованием "*" как составляющего идентификатора для назначения целевой команды типу ("Type"), который является компонентом последовательности-из или набора-из.
Примечание - Также возможно идентифицировать этот единственный компонент, используя составляющий идентификатор (если представлен).
13.2.1.10 Если цель - использование фиктивного параметра параметризованного типа, цель наследует окончательные команды кодирования фактического параметра прежде, чем команды кодирования, предназначенные для фиктивного параметра, назначены. Спецификация правомочна, если только результирующие окончательные команды кодирования для всех реализаций параметризованного типа правомочны.
Примечание 1 - Если параметризованный тип экспортирован, окончательные команды кодирования для его фиктивных параметров выполняются с ним.
Примечание 2 - Нет никаких механизмов, обеспечивающих назначение команды кодирования непосредственно типу ("Type") фактического параметра в реализации параметризованного типа.
13.2.1.11 Если цель - "SelectionType", она наследует окончательные команды кодирования выбранной альтернативы типа выбора, на который ссылается тип выбора, после которого назначаются команды кодирования, предназначенные типу "SelectionType".
13.2.1.12 Если цель - компонент, произведенный в результате COMPONENTS OF преобразования, она наследует окончательные команды кодирования компонента типа, на который ссылаются COMPONENTS OF. После преобразования назначаются команды кодирования, которые были назначены компонентам, произведенным COMPONENTS OF. Любые команды кодирования для типа "Type", из которого извлечены компоненты, игнорируются.
13.2.1.13 Если продукционное правило "Targets" - "TypeIdentification", то идентифицируемые цели определены в 13.2.2.
13.2.1.14 Если продукционное правило "Targets" - "BuiltInTypeIdentification", то идентифицируемые цели определены в 13.2.3.
13.2.1.15 Если продукционное правило "Targets" - "IdentifiersInContext", то идентифицируемые цели определены в 13.2.4.
13.2.1.16 Если продукционное правило "Targets" - "ImportedTypesIdentification", то идентифицируемые цели определены в 13.2.5.
13.2.1.17 Пример определения типов АСН.1, сопровождаемого двумя различными способами назначения команды кодирования XER в разделе управления кодированием, и то же самое определение типов АСН.1 с командами кодирования XER, назначенными с использованием префиксов типа. Все три подхода приводят к тому же самому результату EXTENDED-XER кодирования.
Определение типов:
Команды кодирования XER в разделе управления кодированием могли быть:
ATTRIBUTE field1 IN My-Type
LIST first IN My-Type.field2
Альтернативно, они могли быть:
ATTRIBUTE My-Type.field1
LIST My-Type.field2.first
Определение типов с префиксами типа:
13.2.2.1 Продукционное правило "TypeIdentification":
13.2.2.2 "TypeIdentification" ALL идентифицирует все типы ("Types") в назначениях типа ("TypeAssignment"s) в модуле.
13.2.2.3 Продукционное правило "ModuleAndTypeReference" идентифицирует "Type", который назначен "typereference". "Modulereference" в "ModuleAndTypeReference" должен быть ссылкой на модуль для модуля, содержащего "EncodingInstructionAssignmentList", и "typereference" должен быть ссылкой на тип, который определен в модуле. Это должно использоваться, если и только если "typereference" состоит из тех же самых символов как одно из ключевых слов, определенных в 11.3, иначе одна ссылка "typereference" должна быть использована.
13.2.2.4 Символ "*" идентифицирует "Type" (единственного) компонента типа последовательность-из или набора-из, или типа в ограничении контента, которое содержит "Type".
Примечание - Эта форма может использоваться, даже если компонент типа последовательность-из или набор-из имеет идентификатор, но использование идентификатора должно быть предпочтительней.
13.2.2.5 Если ключевое слово ALL будет использоваться как "ComponentId", то это должен быть последний "ComponentId" в "ComponentIdList" и он не должен сопровождаться "QualifyingInformation".
13.2.2.6 Если первый "ComponentId" в "ComponentIdList" (если присутствует) - идентификатор, который дословно присутствует (или следует из использования COMPONENTS OF) как составляющий идентификатор в "Type", идентифицированном "ModuleAndTypeReference", то это идентифицирует "Type" того компонента. Если это не идентификатор, который дословно присутствует (или следует из использования COMPONENTS OF) как составляющий идентификатор в "Type", идентифицированном "ModuleAndTypeReference", то это появление "TypeIdentification" не правомочно, кроме того, не идентифицирует никакой цели.
Примечание - Это требует, чтобы тип, на который ссылается "ModuleAndTypeReference", был определением типов: последовательность, набор, выбор, последовательность-из, или набор-из, или определением типов: строка битов или строка октетов с ограничением содержания, которое содержит "Тип".
13.2.2.7 Если последующий "ComponentId" (кроме последнего) в "ComponentIdList" (если присутствует) - идентификатор, который дословно присутствует как идентификатор компонента в "Type", идентифицированном предыдущим "ComponentId", то идентифицируется "Type" того компонента. Если это не идентификатор компонента, который дословно присутствует в "Type", идентифицированном предыдущим "ComponentId", то появление "TypeIdentification" не правомочно, кроме того, не идентифицирует никакой цели.
Примечание - В первом использовании "ComponentId" можно ссылаться на компоненты, введенные COMPONENTS OF. Компоненты этих компонентов не могут быть идентифицированы последующим "ComponentId".
13.2.2.8 Если последний "ComponentId" в "ComponentIdList" (если присутствует):
а) идентификатор, который дословно присутствует как идентификатор компонента в "Type", идентифицированном предыдущим "ComponentId", то он идентифицирует "Type" этого компонента, команда кодирования должна быть назначена этому "Type";
б) ключевое слово ALL - команда кодирования должна быть назначена всем типам "Types", которые дословно присутствуют в определении типов, идентифицированном предыдущим "ComponentId", который должен быть типом с одним компонентом или более.
13.2.2.9 "QualifyingInformationPart" не должна присутствовать, если только "ModuleAndTypeReference" с "ComponentReference" (если присутствует) не идентифицирует цели:
а) булевского типа;
б) типа строки битов с поименованными битами;
в) перечислимого типа;
г) целочисленного типа с поименованными числами;
д) типа строки с ограниченным набором символов.
13.2.2.10 Альтернатива "identifier" для "QualifyingInformation" не должна использоваться, если "ModuleAndTypeReference" с "ComponentReference" (если присутствует) не идентифицирует единственной цели, которая не принадлежит к типу строки с ограниченным набором символов, или идентифицирует перечень целей булевского типа. "Идентификатор" должен быть идентификатором в определении типа цели, если цель не принадлежит к булевскому типу, или должен быть true или false. "Идентификатор" является уточняющей информацией, которая распознает, что команда кодирования применяется только к кодированию с использованием того идентификатора.
13.2.2.11 Альтернативы true и false для "QualifyingInformation" для булевского типа определяют уточняющую информацию, которая идентифицирует, что команда кодирования применяется только к кодированию абстрактных значений true или false соответственно.
13.2.2.12 Альтернатива ALL для "QualifyingInformation" не должна использоваться, если цель не идентифицирует (только) одно или более определений типов для типов, перечисленных в 13.2.2.9. Она не должна использоваться, если цель идентифицирует одну или более целей типа строки с ограниченным набором символов, если применяемая команда кодирования не NAMESPACE. Она определяет уточняющую информацию, которая идентифицирует положение, что команда кодирования применяется ко всем идентификаторам в определениях типов, или в случае типа строки ограниченного набора символов - ко всем вариантам использования тегов пустых элементов XML, применяемых для представления управляющих символов, перечисленных в ИСО/МЭК 8824-1, 11.15.5.
Примечание - Невозможно использовать уточняющую информацию с "идентификатором", чтобы выборочно влиять на представление управляющих символов. Только ALL возможно в этом случае.
13.2.3.1 Продукционное правило "BuiltInTypeIdentification":
13.2.3.2 Продукционное правило "BuiltInTypeIdentification" определяет, что команда кодирования должна быть применена ко всем дословным появлениям в пределах модуля соответствующего встроенного типа или типа, определенного с использованием соответствующего конструктора.
13.2.3.3 "RestrictedCharacterStringType" определен в ИСО/МЭК 8824-1, 37.
13.2.3.4 "BuiltInTypeQualifyingInformationPart" не должна присутствовать, если только "BuiltInTypeName" не принадлежит типам: булевский, строка битов, перечислимый, целочисленный, или строка ограниченного набора символов.
Примечание - Только форма ALL для "BuiltInTypeQualifyingInformation" разрешается для строки ограниченного набора символов (см. 13.2.2.10 и следующие подразделы).
13.2.3.5 Альтернатива "identifier" для "BuiltInTypeQualifyingInformation" не должна использоваться, если "BuiltInTypeName" не булевского типа, и тогда значение должно быть true или false. Это определяет уточняющую информацию, идентифицирующую команду кодирования как применяемую только к кодированию абстрактных значений true или false, соответственно.
13.2.3.6 Альтернатива ALL для "BuiltInQualifyingInformation" определяет уточняющую информацию, которая идентифицирует команду кодирования как применяемую ко всем идентификаторам в любом случае использования "BuiltInTypeName" в пределах модуля (или ко всем значениям определения булевского типа, или ко всем тегам пустых элементов, используемым в значениях специфицированного типа строки ограниченного набора символов - см. ИСО/МЭК 8824-1, 11.15.5).
13.2.4.1 Продукционное правило "IdentifiersInContext":
13.2.4.2 "TypeIdentification" определена в 13.2.2 и идентифицирует тип, определенный в операторе присваивания типа в модуле или компоненте, или субкомпоненте типа, определенного в модуле. "QualifyingInformationPart" должна отсутствовать.
13.2.4.3 "Type", идентифицированный "TypeIdentification", должен быть одним из типов: последовательность, набор или выбор, и называться в целях этого раздела идентифицированным "Type".
Примечание - "TypeIdentification" в "IdentifiersInContext" не может использоваться для типов последовательность-из или набор-из. Такое использование запрещено для ясности, поскольку это было бы не менее многословным, чем прямое использование "TypeIdentification" в "Targets".
13.2.4.4 Каждый "identifier" в "IdentifierList" должен быть идентификатором компонента, идентифицированного "Type". Команда кодирования XER назначена типу всех компонентов идентифицированного "Type", которые имеют идентификатор компонента в "IdentifierList".
13.2.4.5 Использование ALL для "IdentifierList" определяет, что все дословно существующие компоненты (и все дословно существующие компоненты тех компонентов до любой глубины) в идентифицированном "Type" - цели, которым назначается команда кодирования XER.
13.2.4.6 Использование COMPONENTS для "IdentifierList" определяет, что все компоненты (на первом уровне) идентифицированного "Type" - цели, которым назначается команда кодирования XER.
13.2.5.1 Продукционное правило "ImportedTypesIdentification":
ImportedTypesIdentification::=
ALL IMPORTS FROM modulereference
13.2.5.2 "Modulereference" должна быть одной из ссылок "modulereference", используемых в одной из "GlobalModuleReferences" раздела по импорту модуля.
13.2.5.3 Команда кодирования XER назначена каждой из "typereference" в соответствующем "SymbolList" после того, как окончательные команды кодирования, продуцированные назначением в модуле экспорта, были назначены.
13.2.5.4 Если импортированная "typereference" экспортируется из этого модуля, окончательные команды кодирования, унаследованные этой "typereference" в модуле, который импортирует ее, - унаследованные в этом модуле импортирования, и не затронуты назначением команд кодирования, с использованием "ImportedTypesIdentification". Это назначение затрагивает только использование ссылки на тип в пределах этого модуля.
14.1.1 "Type", который не является ссылкой на тип ("typereference"), имеет первоначально пустой набор ассоциированных команд кодирования.
14.1.2 "Type", который является ссылкой на тип ("typereference") (который может быть импортирован) имеет первоначально набор окончательных команд кодирования "Type", назначенный этому набору, когда он был определен (возможно, измененный командами кодирования, назначенными ему в списке импорта модуля импортирования - см. 13.2.5).
14.1.3 Целевые команды кодирования для "Type" (при использовании раздела управления кодированием) назначаются следующими в порядке, в котором целевые команды кодирования появляются в разделе управления кодированием. Если "Type" идентифицирован более чем одним элементом "TargetList" (см. 13.2), то должна быть обработка как многократных назначений той же самой команды кодирования к тому "Type" в порядке, в котором элементы встречаются в "TargetList".
Примечание - Эффект 14.1.2 и 14.1.3 означает, что целевое назначение типу "Type" в "TypeAssignment" всегда отменяется целевым назначением типу "Type", определенному с использованием соответствующей ссылки "typereference", независимо от того, какое целевое назначение появится первым в разделе управления кодированием. Однако, если целевое назначение сделано всем компонентам типа, и также некоторому индивидуальному компоненту этого типа, то эффект будет зависеть от порядка команд кодирования в разделе управления кодированием.
14.1.4 Снабженные префиксами команды кодирования (использующие префикс типа), назначенные типу, рассматриваются следующим образом: крайняя правая (самая внутренняя) команда кодирования, снабженная префиксом рассматривается первой, а крайняя левая (наиболее удаленная) команда кодирования, снабженная префиксом, рассматривается последней.
14.1.5 Как определено в 13.2.1.10, команды кодирования назначаются фиктивному параметру только после того, как окончательные команды кодирования для фактического параметра были определены.
14.1.6 Как определено в 13.2.1.11 и 13.2.1.12, "Тип выбора" ("SelectionType") и компоненты, продуцированные преобразованием COMPONENTS OF, наследуют сначала окончательные команды кодирования оригинального типа, и затем применяют команды кодирования, предназначенные для них.
14.1.7 Каждое назначение команды кодирования продуцирует новый набор связанных команд кодирования, как определено в 14.2 - 14.4.
14.2.1 Все назначения команды кодирования отрицания приводят к удалению (из набора связанных команд кодирования) любой команды кодирования той же самой категории. Если нет никаких связанных команд кодирования другой категории, набор становится пустым.
14.2.2 Команда кодирования NOT GLOBAL-DEFAULTS никогда не должна назначаться.
14.2.3 Для команд кодирования с множественными категориями (см. 14.3), команда кодирования отрицания удаляет все команды кодирования в любой из категорий.
Примечание - Команда кодирования отрицания никогда не становится частью набора связанных команд кодирования.
14.3.1 Команды кодирования NAME и TEXT (см. разделы 27 и 30) могут быть назначены типу с целью:
Примечание - Это применяется только к команде кодирования NAME.
б) изменить результат кодирования "ExtendedXMLValue", обеспечивая новое название для специфицированного идентификатора "identifier", присутствующего в определении типа (присутствует уточняющая информация "QualifyingInformation", которая не является ALL);
в) изменить результат кодирования "ExtendedXMLValue", обеспечив модификацию, которая будет применена ко всем идентификаторам "identifiers", присутствующим в определении типов (присутствует уточняющая информация "QualifyingInformation", которая является ALL, с целью, которая не является типом ограниченной строки символов).
14.3.2 В случае 14.3.1 (б) команда кодирования для специфицированного идентификатора "identifier" обрабатывается как категория, отличная от команды кодирования для любого другого идентификатора "identifier", и от команды кодирования для 14.3.1 (а).
14.3.3 В случае 14.3.1 (в) команда кодирования попадает в набор команд кодирования типа 14.3.1 (б) с одной командой кодирования для каждого идентификатора "identifier", присутствующего в определении типов.
14.3.4 Команда кодирования PI-OR-COMMENT (см. раздел 29) имеет четыре категории, соответствующие четырем альтернативам для "Position".
14.3.5 В соответствии с 14.3.3 и 14.3.4, подраздел 14.4 определяет правила для множественного назначения команд кодирования XER.
14.3.6 Каждая из альтернатив команды кодирования GLOBAL-DEFAULTS - отдельная категория, но каждая категория этой команды кодирования должна быть назначена не больше одного раза.
Примечание - Предполагается, что множественное назначение команд кодирования XER той же категории будет редким, за исключением тех случаев, когда команда кодирования XML назначается глобально, и команда кодирования замены (возможно, отрицания) назначена определенным типам или компонентам. Этот подраздел определяет правила для случаев, когда множественное назначение команд кодирования XER происходит в той же самой категории. На этот раздел также ссылается пункт 14.3.5 для обработки множественных назначений команд кодирования NAME, PI-OR-COMMENT и TEXT.
14.4.1 Назначение положительных команд кодирования приводит к добавлению (к набору связанных команд кодирования) этой команды кодирования XER, если нет никаких других связанных команд кодирования той же категории.
14.4.2 Назначение команды кодирования ELEMENT всегда эквивалентно назначению NOT UNTAGGED команды кодирования.
14.4.3 Если есть команда кодирования той же самой категории в наборе связанных команд кодирования, то эта команда кодирования удаляется из набора, а назначенная команда кодирования XER добавляется.
Примечание - Если команды кодирования назначаются глобально в раздел управления кодированием с намерением отменить их в определенных случаях, то отмена должна быть сделана с использованием или префикса типа или более поздней команды кодирования в разделе управления кодированием, но не более ранней.
14.4.4 Если тип, который появляется либо в "ОграниченииКонтента" ("ContentsConstrait"), либо в "ОграниченииТипа" ("TypeConstraint") должен быть закодирован по правилам EXTENDED-XER, то окончательные команды кодирования (как определено правилами выше) используются при определении кодирования этого типа. Если тип появляется в любом другом ограничении АСН.1, то все связанные команды кодирования не обрабатываются
14.5.1 Таблица 2 определяет разрешенные комбинации окончательных команд кодирования для "Типа" ("Type"), когда использовалась GLOBAL-DEFAULTS of MODIFIED-ENCODINGS. В графе 1 перечислены все команды кодирования, в графе 2 перечислены все команды кодирования, которые могут использоваться в комбинации с командой кодирования графы 1 как окончательной командой кодирования. Но во многих случаях применяются ограничения, которые перечислены в соответствующих разделах.
Примечание - GLOBAL-DEFAULTS не приводится в таблице, поскольку она не назначается типу.
Таблица 2
с MODIFIED-ENCODINGS
14.5.2 Таблица 3 определяет разрешенные комбинации окончательных команд кодирования, когда команда GLOBAL-DEFAULTS MODIFIED-ENCODINGS не использовалась. В графе 1 перечислены все команды кодирования, которые разрешаются как окончательные команды кодирования, если команда GLOBAL-DEFAULTS MODIFIED-ENCODINGS не использовалась. В графе 2 приведены "Не разрешено" или перечислены все команды кодирования, которые могут использоваться в комбинации с командой кодирования графы 1, как окончательной командой кодирования, но во многих случаях применяются ограничения, которые перечислены в соответствующих разделах. "Не разрешено" означает, что команда кодирования не может использоваться как окончательная команда кодирования, если команда GLOBAL-DEFAULTS MODIFIED-ENCODINGS не использовалась.
Примечание - GLOBAL-DEFAULTS не приведена в таблице, поскольку она не назначается "Типу" ("Type").
Таблица 3
без MODIFIED-ENCODINGS
15.1 Рекомендация W3C XML Namespaces определяет понятия и правила, управляющие необходимыми классификаторами и механизмами, чтобы гарантировать, что имя элемента XML или атрибута могут быть правильно идентифицированы с соответствующей спецификацией связанной семантики.
15.2 W3C XML Namespaces определяет пространства имен XML как набор однозначных имен, идентифицированных URI, которые используются в документах XML в качестве типов элементов и имен атрибутов. URI, которое идентифицирует пространство имен, называется именем пространства имен. В настоящем стандарте пространство имен также используется, чтобы классифицировать значения типа, который имеет окончательную команду кодирования USE-QNAME (см. 35) и который представляет XML QName (см. W3C XML Схема, Часть 2, 3.2.18).
15.3 Имена ссылок на тип и идентификаторы могут (но не обязательно) быть назначенными пространству имен.
Примечание - Настоящий стандарт использует имя пространства имен, т.е., по умолчанию, форму URI, основанную на идентификаторах объекта АСН.1 (см. раздел 28). Все другие формы URI могут использоваться, чтобы назначить имя пространства имен именам в модуле АСН.1.
15.4 Принадлежность типа части пространства имен (и если так, его имени пространства имен) определяется присутствием (или отсутствием) окончательной команды кодирования NAMESPACE.
Примечание - Команда кодирования NAMESPACE может присутствовать, только если команда кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS также присутствует в разделе управления кодированием (см. 28.2.1).
15.5 Пространство имен идентифицировано продукционным правилом "NamespaceSpecification", которое обеспечивает Унифицированный Идентификатор Ресурса для пространства имен, и опционально рекомендованный префикс пространства имен. "NamespaceSpecification" определена в разделе 28.
15.6 Имена элементов и атрибутов XML при EXTENDED-XER кодировании генерируются из нескольких источников. В 15.8 перечислены источники имен элементов и атрибутов XML, идентифицировано пространство имен, частью которого они являются, и определено, должны ли они быть именами в уточненном пространстве имен или нет.
15.7 Имя элемента XML, имя атрибута XML или значение атрибута идентификации типа могут (но не обязательно) иметь окончательную команду кодирования NAMESPACE, которая, применяется к "Типу" ("Type") и генерирует имя. Если происходит это генерирование, имя должно быть именем в уточненном пространстве имен при кодировании (уточненное пространство имен при кодировании может быть создано или явно с использованием определенного префикса пространства имен XML, или неявно путем установления пространства имен XML для диапазона действий, который включает использование имени или значения). Если нет команды кодирования NAMESPACE, примененной к "Типу" ("Type"), которая генерирует имя, тогда имя не является именем уточненного пространства имен. Имена, которые не являются именами уточненного пространства имен, называются неуточненными именами, и не должны встречаться в пределах установленного значения по умолчанию пространства имен XML.
Примечание - Базовые правила BASIC-XER не поддерживают пространство имен XML, и имена уточненного пространства имен никогда не встречаются при кодировании.
15.8 В следующих подразделах термин "Пространство имен АСН.1" относится к пространству имен, чье имя и рекомендованный префикс определены в 15.9. Термин "назначенное пространство имен" относится к пространству имен, назначенному командой кодирования NAMESPACE типу. Если сгенерированные имена не из пространства имен АСН.1 и нет такого назначения пространства имен, то имена элементов XML, атрибутов XML и значения атрибутов идентификации типа являются неуточненными именами.
15.8.1 Во всех подпунктах подраздела 15.8 имена элементов и атрибутов в тегах XML (будут ли теги тегами пустого элемента или начальными тегами) являются именами уточненного пространства имен при кодировании, если и только если порождающий "Тип" ("Type") имеет окончательную команду кодирования NAMESPACE.
15.8.2 Названия элементов в тегах пустого элемента XML, используемых для управляющих символов (см. ИСО/МЭК 8824-1, 11.15.5), не имеют пространства имен, пока одно не будет назначено применением команды кодирования NAMESPACE к типу "ограниченная строка символов" с уточняющей информацией ALL.
15.8.3 Имена элементов в тегах пустого элемента XML, используемых для значений типов целый, перечислимый, строка битов и специальных значений действительных типов (см. ИСО/МЭК 8824-1, 18.9, 19.8, 20.6 и 21.9), будут всегда неуточненными именами (см. 15.7) при кодировании этих типов.
15.9 Пространство имен атрибута идентификации типа (см. раздел 36) и атрибута идентификации пустого множества (см. раздел 32) - это управляющее пространство имен, которое, по умолчанию, является пространством имен АСН.1, если только другое управляющее пространство имен не определено командой кодирования GLOBAL-DEFAULTS (см. раздел 25). Пространство имен АСН.1 имеет имя "urn:oid:2.1.5.2.0.1" (см. 39.3), и рекомендованный префикс пространства имен "asn.1" (см. также 25.3.2.).
15.10 Для типа строка октетов с ограничением содержания, которое определяет EXTENDED-XER кодирование, любое абстрактное значение типа строка октетов должно быть полным EXTENDED-XER кодированием значения типа АСН.1 (см. ИСО/МЭК 8824-3, 11.5 и 11.6) и будет содержать все необходимые декларации пространства имен для всех уточненных имен с префиксом и без префикса, присутствующих в абстрактном значении строки октетов.
Примечание - Такой тип (строка октетов) закодирован как "xmlhstring" или "Base64OctetstringValue". Любые объявления пространства имен, представленные в документе XML, который содержит "xmlhstring", или "Base64OctetstringValue" не включают в их область применения имена, представленные в строке октетов.
15.11 Когда открытый тип закодирован как "xmlhstring" или "Base64XMLOpenTypeFieldVal" и правила кодирования, используемые для содержавшегося типа, являются EXTENDED-XER, "xmlhstring" или "Base64XMLOpenTypeFieldVal" должны иметь шестнадцатеричное или base64 представление (соответственно) строки октетов, которая является полным EXTENDED-XER кодированием значения содержавшегося типа, и должна содержать все необходимые декларации пространства имен для всех имен с префиксом или без префикса, представленных в ней.
Примечание - Любые декларации пространства имен, представленные в документе XML, который содержит "xmlhstring" или "Base64XMLOpenTypeFieldVal" не включают в их область применения имена, представленные в строке октетов.
Спецификация кодирования EXTENDED-XER использует продукционные правила, определенные в следующих подразделах. Эти правила позволяют применять весь синтаксис соответствующих продукционных правил, используемых BASIC-XER (того же самого названия, но с удаленным "Extended"), но обеспечивают дополнительный синтаксис, который допускается в кодировании EXTENDED-XER. Использование этого дополнительного синтаксиса определено применением команд кодирования XER (см. 17 - 38).
Примечание - Альтернативные доступные продукционные правила часто ограничиваются использованием или не использованием команды кодирования GLOBAL-DEFAULTS с ключевым словом MODIFIED-ENCODINGS (см. 9.2.7 и 9.2.8). В частности, таким ограничением управляется использование пустого элемента или текстового кодирования для некоторых встроенных типов.
16.1.1 Элемент XML документа должен быть "ExtendedXMLTypedValue".
16.1.2 "ExtendedXMLTypedValue" - это:
Примечание - Отличие от продукционного правила "XMLTypedValue" - включение возможно пустого "AttributeList" и использование "ExtendedXMLValue" вместо "XMLValue" для содержания элемента XML.
16.1.3 "TypeNameOrModifiedTypeName" определено в 16.2.
16.1.4 "AttributeList" определен в 16.3.
16.1.5 "ExtendedXMLValue" определено в 16.4 и должно быть типа "ExtendedXMLValue", идентифицированного "TypeNameOrModifiedTypeName".
16.1.6 Вторая альтернатива "XMLTypedValue" (использование тега пустого элемента XML) может использоваться, только если продукционное правило "ExtendedXMLValue" является пустым.
Примечание - Если бы продукционное правило "ExtendedXMLValue" было "xmlcstring", содержащим только "пробел", оно не было бы пустым, и вторая альтернатива не могла бы использоваться.
16.2.1 "TypeNameOrModifiedTypeName" - это:
16.2.2 Непараметризованное имя типа "NonParameterizedTypeName" определено в ИСО/МЭК 8824-1, 13.2, и используется (как определено в том подразделе и в ИСО/МЭК 8824-1, 13.4 - 13.7) как имя элемента XML, которое идентифицирует тип АСН.1.
16.2.3 Уточненное или неуточненное имя "QualifiedOrUnqualifiedName" определено в 28.3.2. Альтернатива "QualifiedOrUnqualifiedName" должна использоваться, если и только если есть окончательная команда кодирования NAME или NAMESPACE, примененная к типу (см. 27), иначе должно использоваться непараметризованное имя типа "NonParameterizedTypeName".
16.3.1 "AttributeList" - это:
16.3.2 "Attribute" определен в 19.3.3.
16.3.3 "AttributeList" будет пуст, если применение окончательных команд кодирования не требует его использования (см. разделы 19, 32 и 36).
16.3.4 Атрибутам ("Attribute") в "AttributeList" будет предшествовать "пробел" (см. 7.1.4).
16.4.1 "ExtendedXMLValue":
16.4.2 Альтернативы "ExtendedXMLBuiltinValue", чьи имена продукционных правил не начинаются с "Extended", их использование для кодирования абстрактных значений полностью определены в ИСО/МЭК 8824-1 (см. 15.10 и 15.2 настоящего стандарта) и (для "XMLFixedTypeFieldVal" и третьей альтернативы для "ExtendedXMLOpenTypeFieldVal") в ИСО/МЭК 8824-2, 14.6.
16.4.3 "Base64XMLRestrictedCharacterStringValue" определено в 20.3.5 и должно использоваться только так, как определено в этом подразделе.
16.4.4 "ExtendedXMLChoiceValue" определено в 16.5 и должно использоваться только так, как определено в этом подразделе.
16.4.5 "ExtendedXMLEnumeratedValue" определено в 33.3 и должно использоваться только так, как определено в этом подразделе.
16.4.6 "ExtendedXMLSequenceValue" и "ExtendedXMLSetValue" определены в 16.6 и должны использоваться только так, как определено в этом подразделе.
16.4.7 "ExtendedXMLSequenceOfValue" и "ExtendedXMLSetOfValue" определены в 16.7 и должны использоваться только так, как определено в этом подразделе.
16.4.8 "Base64XMLOctetStringValue" и "Base64XMLOpenTypeFieldVal" определены в 20.3.2 и 20.3.4 и должны использоваться только так, как определено в этих подразделах.
16.4.9 "ModifiedXMLIntegerValue" определено в 16.8 и должно использоваться только так, как определено в этом подразделе.
16.4.10 "ModifiedXMLRealValue" определено в 16.9 и должно использоваться только так, как определено в этом подразделе.
16.4.11 "Пустая" альтернатива для "ExtendedXMLValue" должна использоваться только так, как определено в разделе 22.
Примечание - Другие альтернативы для "ExtendedXMLValue" могут также продуцировать "пустой" лексический элемент. Этот пункт не затрагивает использование таких появлений.
16.5.2 "QualifiedOrUnqualifiedName" определено в 28.3.2. "QualifiedOrUnqualifiedName" должно использоваться, если имеется окончательная команда кодирования NAME (см. раздел 27), или окончательная команда кодирования NAMESPACE примененная к типу (см. раздел 28), иначе должен использоваться "идентификатор".
Примечание - Если "идентификатор" используется, то кодирование не может включать декларацию пространства имен XML по умолчанию с областью применения, которая включает использование этого идентификатора (см. 15.7).
16.5.3 "AttributeList" и его использование определены в 16.3 и в разделах, на которые 16.3 ссылается.
16.5.4 "ExtendedXMLValue" в обеих альтернативах для "ExtendedXMLChoiceValue" должно быть "ExtendedXMLValue" выбранной альтернативы типа выбора.
16.5.5 Вторая альтернатива "ExtendedXMLChoiceValue" должна использоваться если:
а) выбранная альтернатива для типа выбора имеет окончательную команду кодирования UNTAGGED (см. раздел 31);
б) тип выбора имеет окончательную команду кодирования USE-TYPE или USE-UNION (см. разделы 36 и 37).
Примечание - Это означает, что присутствие этих окончательных команд кодирования приводит к удалению тегов XML как определителей выбора, и определение выбора должно произойти другими средствами (см. разделы 36, 37).
16.6.1 "ExtendedXMLSequenceValue" и "ExtendedXMLSetValue" - это:
16.6.2 "Пустые" альтернативы "ExtendedXMLSequenceValue" и "ExtendedXMLSetValue" должны использоваться, если никакой компонент типа последовательности или набора (до любой глубины) после разрешения всех ссылок на тип и после применения всех окончательных команд кодирования, не продуцирует "ExtendedXMLNamedValue".
Примечание - Это включает (но не ограничивает) случаи, в которых все компоненты помечены: DEFAULT или OPTIONAL, и все значения опущены; имеет окончательную команду кодирования UNTAGGED, и их значения имеют пустое кодирование; имеет окончательную команду кодирования ATTRIBUTE. Это также включает комбинации вышеупомянутого, и случая, в котором нотацией типа является SEQUENCE {} или SET {}.
16.6.3 "TagName" определено в 16.5.1. "QualifiedOrUnqualifiedName" в форме "IdentifierOrModifiedIdentifier" "TagName" должно использоваться, если и только если есть окончательная команда кодирования NAME или NAMESPACE, примененная к типу (см. раздел 28), иначе должен использоваться "идентификатор".
16.6.4 "AttributeList" и его использование определены в 16.3 и пунктах, на которые он ссылается.
16.6.5 "ExtendedXMLValue" в обеих альтернативах для "ExtendedXMLNamedValue" должно быть "ExtendedXMLValue" компонента типа последовательности или набора.
16.6.6 Вторая альтернатива для "ExtendedXMLSequenceValue" и "ExtendedXMLSetValue" должна использоваться, если и только если альтернатива имеет окончательную команду кодирования UNTAGGED (см. раздел 31).
16.7.1 "ExtendedXMLSequenceOfValue" и "ExtendedXMLSetOfValue":
16.7.2 Использование альтернатив "ExtendedXMLSequenceOfValue", "ExtendedXMLSetOfValue" и "ExtendedXMLValueList" должно быть в соответствии с использованием альтернатив "XMLSequenceOfValue", "XMLSetOfValue" и "XMLValueList" (соответственно), как определено в ИСО/МЭК 8824-1, 25 и 27, исключение составляет случай, когда команда кодирования GLOBAL-DEFAULTS с ключевым словом MODIFIED-ENCODINGS присутствует, тогда "ExtendedXMLValueList" не должен использоваться (см. также 9.2.7 ж).
16.7.3 "ExtendedXMLListValue" определено в 26.3.2. Эти альтернативы "ExtendedXMLSequenceOfValue" и "ExtendedXMLSetOfValue" должны использоваться, только если есть окончательная команда кодирования LIST (см. раздел 26), примененная к типу последовательность-из или набор-из.
16.7.4 Первая альтернатива "ExtendedXMLDelimitedItem" должна использоваться, если и только если тип последовательность-из или набор-из не содержит "идентификатор", и компонент не имеет окончательной команды кодирования UNTAGGED.
16.7.4.1 Если компонент типа последовательность-из или набор-из есть "typereference" или "ExternalTypeReference" (возможно с одним или более "TypePrefix"), то "TypeNameOrModifiedTypeName" должен быть "typereference" или "typereference" в "ExternalTypeReference", соответственно, возможно измененный в соответствии с любыми окончательными командами кодирования NAME и NAMESPACE, примененными к компоненту (см. раздел 27).
16.7.4.2 Если компонент типа последовательность-из или набор-из (после игнорирования любых появлений "TypePrefix") не "typereference" или "ExternalTypeReference", то "TypeNameOrModifiedTypeName" должно быть "xmlasn1typename", определенное в ИСО/МЭК 8824-1, таблица 4, соответствующее встроенному типу компонента, возможно измененного в соответствии с любой окончательной командой кодирования NAMESPACE, примененной к компоненту (см. раздел 28).
16.7.5 Вторая альтернатива "ExtendedXMLDelimitedItem" должна использоваться, если и только если тип последовательность-из или набор-из содержит "идентификатор", и компонент не имеет окончательной команды кодирования UNTAGGED. "IdentifierOrModifiedIdentifier" должен быть тем "идентификатором", возможно измененным в соответствии с любыми окончательными командами кодирования NAME и NAMESPACE, примененными к компоненту (см. разделы 27 и 28).
16.7.6 Третья альтернатива "ExtendedXMLDelimitedItem" должна использоваться, если и только если компонент типа последовательность-из или набор-из имеет окончательную команду кодирования UNTAGGED (см. раздел 31).
16.7.7 "ExtendedXMLValue" во всех альтернативах для "ExtendedXMLDelimitedItem" должен быть "ExtendedXMLValue" повторного компонента типа последовательность-из или набор-из.
16.7.8 "TypeNameOrModifiedTypeName" в "ExtendedXMLValueOrEmpty" должен быть "xmlasn1typename", определенным в ИСО/МЭК 8824-1, таблица 4, соответствующий встроенному типу компонента, возможно измененного в соответствии с любой окончательной командой кодирования NAMESPACE, примененной к компоненту (см. раздел 28).
16.8.1 "ModifiedXMLIntegerValue":
16.8.2 Эта альтернатива "ExtendedXMLIntegerValue" (см. 16.4) должна использоваться, только если назначена команда кодирования GLOBAL-DEFAULTS с ключевым словом MODIFIED-ENCODINGS.
Примечание 1 - Лексическая единица "ModifiedXMLNumber" отображена в целочисленное значение, она интерпретируется как десятичная нотация.
Примечание 2 - Эта лексическая единица отличается от лексической единицы "число" (см. ИСО/МЭК 8824-1, 11.8) только тем, что разрешает любое число начальных (незначащих) нулей.
16.8.4 Любое положительное целое значение может быть закодировано с использованием либо первой, либо третьей альтернативы "ModifiedXMLSignedNumber" как опция кодера. Отрицательное целое значение должно быть закодировано с использованием второй альтернативы. Целое нулевое значения может быть закодировано с использованием любой из этих трех альтернатив как опция кодера.
16.8.5 "TextInteger" определено в ИСО/МЭК 8824-1, 18.9, и обеспечивает альтернативное кодирование (как опция кодера) для целочисленных значений, которые имеют определение "NamedNumber".
16.9.1 "ModifiedXMLRealValue":
16.9.2 Эта альтернатива "ExtendedXMLRealValue" (см. 16.4) должна использоваться, только если будет назначена команда кодирования GLOBAL-DEFAULTS с ключевым словом MODIFIED-ENCODINGS.
16.9.3 Лексическая единица "ModifiedXMLRealNumber" должна состоять из целой части, которая является рядом одной или более цифр, и опционально десятичной точки (.). Десятичная точка может опционально сопровождаться дробной частью, которая является одной или более цифрами. Целая часть, десятичная точка или дробная часть (какая бы ни была последним представлением) могут опционально сопровождаться "e" или "E" с показателем степени, состоящим из одной или более цифр и имеющим знак ("+" или "-" - опционально).
Примечание - Эта лексическая единица отличается от лексической единицы "действительное число" ("realnumber") (см. ИСО/МЭК 8824-1, подраздел 11.9) только потому, что разрешает любое число начальных нулей в показателе степени.
16.9.4 Любое положительное действительное значение и действительное значение плюс нуль могут быть закодированы с использованием первой или третьей альтернативы "ModifiedXMLNumericRealValue" как опция кодера. Любое отрицательное действительное значение должно быть закодировано с использованием второй альтернативы "ModifiedXMLNumericRealValue". Действительное значение минус нуль должно быть закодировано с использованием второй альтернативы.
16.9.5 "XMLDecimalMinusZeroRealValue" определено в 21.3.2 и должно использоваться только, как определено в том пункте.
Примечание - Команда кодирования DECIMAL, определенная в 21.3.2, обеспечивает это продукционное правило как альтернативное представление для положительного нулевого абстрактного действительного значения, но требует, чтобы отрицательное нулевое абстрактное значение было исключено из типа, к которому оно применено.
17.1.1 "AnyAttributesInstruction":
17.1.2 Продукционное правило "TargetList" определено в 13.2.
17.1.3 "QuotedURI" определено в 28.1.1.
17.1.4 Данная команда кодирования назначается типу АСН.1, который является типом последовательность-из или набор-из с компонентом UTF8String, значение которого обеспечивает нуль, один или более имен атрибута и значений (по одному в каждом UTF8String), каждое из которых подчиняется любому присутствующему ограничению пространства имен "NamespaceRestriction".
17.1.5 Контент каждой UTF8String закодирован как атрибут "Attribute" включающего XML элемента. Имя компонента последовательность-из или набора-из игнорируется.
17.1.6 Разделы FROM и EXCEPT (если присутствуют) идентифицируют перечни имен пространства имен или специальное ключевое слово ABSENT.
17.1.7 FROM ограничивает имена атрибутов таким образом, что они должны быть именами пространства имен ограниченного применения из одного из специфицированных пространств имен. Если ABSENT присутствует в "URIList", неуточненные имена также могут использоваться.
17.1.8 EXCEPT позволяет исключать перечисленные имена пространства имен ограниченного применения из любого пространства имен. Эта команда допускает также неуточненные имена, если только ABSENT не присутствует в "URIList".
17.2.1 Тип АСН.1 не должен иметь эту окончательную команду кодирования, если она не типа последовательность-из или набор-из с компонентом типа UTF8String.
17.2.2 Тип с этой окончательной командой кодирования должен использоваться только как компонент типа включающей последовательности или набора, и компонент не должен быть маркирован как OPTIONAL или DEFAULT. Должен быть только один такой компонент в включающем типе.
17.2.3 Тип последовательность-из или набор-из с этой окончательной командой кодирования обязательно должен иметь ограничение, применяемое к ней, которое задает формат и контент, определенные в 18.2.6 - 18.2.11 при каждом появлении UTF8String или определенные другим способом.
Примечание - Рекомендуется, чтобы ограничение типов набор-из или последовательность-из выражалось как:
(CONSTRAINED BY
{/* Каждая UTF8String должна соответствовать "AnyAttributeFormat", определенному в ИСО/МЭК 8825-4, 18. */})
17.2.4 Не должно быть окончательной команды кодирования UNTAGGED, применяемой к типу, который имеет эту окончательную команду кодирования или к включающему типу.
17.2.5 Каждый "URIList" должен содержать не более одного появления ABSENT и не должен содержать двух идентичных "QuotedURI".
17.2.6 Формат каждой UTF8String должен соответствовать продукционному правилу "AnyAttributeFormat":
17.2.7 Для определения продукционного правила "URI" см. 28.1.4, для определения продукционного правила "NCName" см. 28.1.7. Лексическая единица "xmlcstring" определена в ИСО/МЭК 8824-1, 11.15.
17.2.8 Если имеется "NamespaceRestriction" команды кодирования FROM, то "URI" в "AnyAttributeFormat" должен быть "URI" в "QuotedURI" в "URIList" и может отсутствовать, только если ключевое слово a ABSENT встречается в "URIList".
17.2.9 Если имеется "NamespaceRestriction" команды кодирования EXCEPT, то "URI" в "AnyAttributeFormat" не должен быть "URI" в "QuotedURI" в "URIList" и не может отсутствовать, если ключевое слово ABSENT встречается в "URIList".
17.2.10 "Xmlcstring" должно быть синтаксически правильным значением XML атрибута (определенным в W3C XML, раздел 3), которому предшествует и после которого следует или единственный символ APOSTROPHE (см. раздел 38), или единственный символ QUOTATION MARK (см. раздел 34).
17.2.11 Применение этой команды кодирования и команды кодирования ATTRIBUTE к различным компонентам включающего типа не будет нарушать условий, приведенных в 19.3.11.
17.2.12 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
17.2.13 Тип с этой окончательной командой кодирования не должен иметь ни одной из перечисленных окончательных команд кодирования: LIST, PI-OR-COMMENT или UNTAGGED.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не могут появляться вместе с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ELEMENT, ATTRIBUTE, BASE64, DECIMAL, DEFAULT-FOR-EMPTY, EMBED-VALUES, TEXT, USE-NIL, USE-NUMBER, USE-ORDER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE.
17.2.14 В "TargetList" не должно быть никакой уточняющей информации.
17.3.1 Если тип кодируется как тип верхнего уровня, эта команда кодирования должна игнорироваться.
17.3.2 "ExtendedXMLNamedValue" для этого компонента не должна включаться в "ExtendedXMLSequenceValue" или "ExtendedXMLSetValue" типа включающей последовательности или набора. Вместо этого значение включающего типа должно кодироваться с использованием значения каждой UTF8String как атрибута "Attribute" (см. 19) включающего элемента, специфицированного ниже.
17.3.3 Кодер должен:
а) обрабатывать каждый "URI", который присутствует в UTF8String, как требующий, чтобы следующий "NCName" (имя атрибута) был пространством имен ограниченного применения с пространством имен, определенным "URI", и рассматривать отсутствие "URI" в UTF8String как признак того, что следующий "NCName" не должен быть пространством имен ограниченного применения и должен тогда удалить "URI" из UTF8String;
б) вставить в результат кодирования любые необходимые декларации пространства имен с масштабами охвата, которые включают вставляемые атрибуты для обеспечения того, чтобы необходимые уточнения пространства имен "NCName", идентифицированные в (а), были достигнуты;
в) вставить каждый UTF8String (после удаления "URI") как атрибут в включающем элементе, включая префиксы пространства имен как обязательные перед каждым "NCName" для обеспечения того, чтобы требования, приведенные в (а) были удовлетворены.
17.3.4 Порядок всех атрибутов в включающем элементе (определяемый присутствием одного или более компонента включающего типа с окончательной командой кодирования ATTRIBUTE или ANY-ATTRIBUTES) есть опция кодера.
17.3.5 Декодер EXTENDED-XER должен генерировать UTF8String в формате ограничений (см. 18.2.6) для каждого атрибута в включающем элементе, который не входит в управляющее пространство имен и имя которого не совпадает с именем идентификатора (возможно, модифицированного в соответствии с любой из окончательных команд кодирования NAME или NAMESPACE encoding) другого компонента включающего типа с окончательной командой кодирования ATTRIBUTE.
18.1.1 "AnyElementInstruction":
18.1.2 Продукционное правило "TargetList" определено в 13.2.
18.1.3 "NamespaceRestriction" определено в 17.1.
18.1.4 Эта команда кодирования дает типу АСН.1 возможность для UTF8String обеспечивать спецификацию единственного XML элемента.
Примечание - Контент и атрибуты XML элемента не ограничиваются. Он может иметь атрибуты или дочерние элементы, и имена этих дочерних элементов могут быть составными или несоставными и не быть подверженными влиянию "NamespaceRestriction".
18.1.5 Если присутствует ограничение пространства имен "NamespaceRestriction", то требуется имя элемента для удовлетворения "NamespaceRestriction" (см. 17.1.6 - 17.1.8), иначе пространство имен не имеет ограничения.
18.1.6 UTF8String с этой окончательной командой кодирования может быть корневого типа кодирования или может быть компонентом типа выбора, последовательности, набора, последовательности-из или набора-из. Если это тип высшего уровня, имя ссылки на тип игнорируется. Если это - компонент, имя компонента игнорируется.
18.2.1 Тип АСН.1 не должен иметь этой окончательной команды кодирования, если только это не тип UTF8String. Требуется компонент, чтобы иметь ограничение, примененное к нему, что подразумевает формат и контент, определенные в 18.2.4 - 18.2.9 ссылкой на раздел 18 или другие.
Примечание - Рекомендуется ограничение UTF8String выражать как:
(CONSTRAINED BY
{/* Должна соответствовать "AnyElementFormat" определенному в ИСО/МЭК 8825-4, раздел 19. */})
18.2.2 Не должно быть окончательной команды кодирования UNTAGGED, применяемой к типу.
18.2.3 Каждый "URIList" должен содержать не более одного появления ABSENT и не содержать двух идентичных "QuotedURI".
18.2.4 Формат абстрактных значений UTF8String должен соответствовать продукционному правилу "AnyElementFormat":
18.2.5 "Xmlcstring" должна быть синтаксически правильным XML элементом, определенным в W3C XML 1.0 и W3C XML Namespaces.
18.2.6 "Xmlcstring" должна использовать только префиксы пространства имен, которые объявлены в декларациях пространства имен, присутствующих в "xmlcstring". Если существуют составные имена, не снабженные префиксами, должна присутствовать соответствующая декларация пространства имен по умолчанию.
18.2.7 Значение UTF8String не должно нарушать условия пункта 9.2.11.
18.2.8 Если FROM имеет "NamespaceRestriction", то (самое удаленное) имя элемента в "AnyElementFormat" должно быть "URI" в "QuotedURI" в "URIList", и может отсутствовать, только если ключевое слово ABSENT появляется в "URIList".
18.2.9 Если EXCEPT имеет "NamespaceRestriction", то (самое удаленное) имя элемента в "AnyElementFormat" не должно быть "URI" в "QuotedURI" в "URIList", и не должно отсутствовать, если ключевое слово ABSENT появляется в "URIList".
18.2.10 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
18.2.11 Тип с этой окончательной командой кодирования не должен также иметь никакой из перечисленных окончательных команд кодирования: ATTRIBUTE, BASE64, DEFAULT-FOR-EMPTY, PI-OR-COMMENT, UNTAGGED или WHITESPACE.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не могут появляться вместе с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, DECIMAL, EMBED-VALUES, LIST, TEXT, USE-NIL, USE-NUMBER, USEORDER, USE-QNAME, USE-TYPE, USE-UNION.
18.2.12 В "TargetList" не должно быть никакой уточняющей информации.
18.3.1 EXTENDED-XER кодер должен включать абстрактное значение UTF8String при кодировании, как XML элемент вместо XML элемента, который бы иначе был сгенерирован для этого компонента (при игнорировании идентификатора компонента) или для корневого типа. Включенный элемент должен быть идентичен абстрактному значению UTF8String, за исключением ситуации, специфицированной в 18.3.2.
18.3.2 Любые декларации пространства имен, которые присутствуют в первом стартовом теге (или теге пустого элемента) элемента и идентичны декларациям пространства имен, появляющимся в точке вставки, могут быть (не обязательно) удалены в качестве опции кодера.
Примечание - Изменение, перемещение или удаление других деклараций пространства имен в UTF8String не разрешены, поскольку такие действия могут влиять на пространство имен и уточнение XML Q-имен, присутствующих в контенте элемента или значениях атрибута и в общем случае для кодера невозможно определить, являются ли такие значения контента или атрибута Q-именами.
18.3.3 EXTENDED-XER декодер должен сгенерировать формат (см. 18.2.4) из входящего XML документа как абстрактное значение UTF8String.
18.3.4 Декодер должен включать в первом стартовом теге (или теге пустого элемента) в абстрактном значении UTF8String атрибуты декларации пространства имен для всех деклараций пространства имен, которые принадлежат одному множеству с декодируемым элементом, но которые не присутствуют в стартовом теге этого элемента.
19.1.1 "AttributeInstruction":
19.1.2 Продукционное правило "TargetList" определено в 13.2.
19.1.3 Эта команда кодирования определяет, что тип АСН.1, который может кодироваться посимвольно, следует кодировать как XML атрибут.
Примечание - Частный (но важный) пример типа, который может кодироваться посимвольно, есть тип выбора (все, альтернативы являются типами, которые могут кодироваться посимвольно), имеющий окончательную команду кодирования USE-UNION.
19.2.1 Тип АСН.1 не должен иметь этой окончательной команды кодирования, если он не имеет, по крайней мере, одного кодирования "ExtendedXMLValue" (принимая во внимание опции кодера) для каждого из его абстрактных значений, которые не содержат тегов XML и не основаны на использовании "xmlhstring" (если тип является открытым типом или типом строки октетов) или "xmlbstring" (если тип является типом строки битов), или на окончательных командах кодирования UNTAGGED, ATTRIBUTE, или ANY-ATTRIBUTE, примененных к его компонентам (если тип является типом последовательности или набора) чтобы достичь этого.
Примечание 1 - Подразумевается, что тип строки с ограниченным набором символов с окончательной командой кодирования ATTRIBUTE должен иметь такое ограничение, чтобы не содержать никаких управляющих символов, перечисленных в ИСО/МЭК 8824-1, таблица 3 (последовательности управляющих символов в "xmlcstring"), или должен иметь окончательную команду кодирования BASE64.
Примечание 2 - Не должны включаться открытые типы или типы строки октетов и строки битов с CONTAINING без ENCODED BY, так как их "ExtendedXMLValue" может содержать теги, если только они не кодируются как "xmlhstring".
Примечание 3 - Признано, что некоторые инструменты АСН.1 не могут обеспечить статистический контроль за тем, что вышеуказанное ограничение удовлетворяется для всех абстрактных значений, а кодеры, соответствующие правилам кодирования Extended XER, не могут генерировать результаты кодирования, в которых "ExtendedXMLValue" нарушает это ограничение (см. 19.3.14).
19.2.2 Тип с этой окончательной командой кодирования будет использоваться только как компонент типа последовательности или набора.
Примечание - Компонент может быть OPTIONAL или DEFAULT.
19.2.3 Не должно быть окончательной команды кодирования UNTAGGED для типа, который имеет эту окончательную команду кодирования или для включающего типа, который содержит ее как компонент.
19.2.4 Если окончательные команды кодирования для других компонентов включающего типа включают или эту команду кодирования, или команду кодирования ANY-ATTRIBUTES, условие, приведенное в 19.3.11, не будет нарушаться.
19.2.5 Тип с этой окончательной командой кодирования не должен также иметь любой из окончательных команд кодирования: ANY-ELEMENT, DEFAULT-FOR-EMPTY, PI-OR-COMMENT или UNTAGGED.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не могут использоваться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, EMBED-VALUES, USE-NIL, USE-ORDER, USE-TYPE.
19.2.6 Не должно быть уточняющей информации в "TargetList".
19.3.1 Если тип кодируется как тип высшего уровня, то эта команда кодирования должна быть проигнорирована.
19.3.2 "ExtendedXMLNamedValue" этого компонента не должно быть включено в "ExtendedXMLSequenceValue" или "ExtendedXMLSetValue" типа включающей последовательности или набора. Вместо этого значение компонента (если присутствует) должно кодироваться как "Attribute" (см. 19.3.3 - 19.3.15) включающего элемента.
19.3.4 Продукционное правило "IdentifierOrModifiedIdentifier" определено в 16.5.1, и его использование в контексте этой команды кодирования определено в 16.6.3.
19.3.5 Продукционное правило "ControlAttributeName" не используется непосредственно этим разделом. Все "QualifiedName"s в этом продукционном правиле взяты из управляющего пространства имен (см. 15.9). Такие атрибуты генерируются только в соответствии с разделами 32 и 36, а непредвиденные управляющие атрибуты необходимо акцептовать декодерам (см. 9.2.10).
19.3.6 "QualifiedName" определено в 28.3.2.
19.3.7 "ExtendedXMLValue" определено в 16.4.
19.3.8 "AttributeName" должно быть или "идентификатором" компонента, который имеет эту окончательную команду кодирования, или, если есть окончательные команды кодирования NAME или NAMESPACE, "QualifiedOrUnqualifiedName" определяется этими командами кодирования, как специфицировано в разделах 27 и 28.
19.3.9 "CharacterEncodableValue" в "QuotedValue" атрибута (см. 19.3.3) должно быть "ExtendedXMLValue" этого типа, возможно, модифицированным, как определено в 19.3.12 - 19.3.15.
19.3.10 Порядок, в котором атрибуты появляются в "AttributeList", является опцией кодировщика: будут ли они генерироваться этой командой кодирования или командой кодирования ANY-ATTRIBUTES.
Примечание - Никакой семантики нельзя накладывать на порядок атрибутов в любой команде EXTENDED-XER. Это ограничение является требованием W3C XML 1.0, 3.1.
19.3.11 Когда "AttributeList" в варианте кодирования содержит множественные атрибуты, то для любых двух атрибутов в перечне:
а) если имена "AttributeName"s двух атрибутов - оба неуточненные имена, то они должны быть различными;
б) если имена "AttributeName"s двух атрибутов - оба имени уточненных пространств имен, то либо они должны иметь различные пространства имен, либо они должны быть различными именами одного и того же пространства имен.
Если это условие будет нарушаться применением окончательных команд кодирования для любого абстрактного значения типа высшего уровня, который кодируется, такое использование команд кодирования будет неправомочным.
19.3.12 Если "QuotedValue" является "DoubleQuotedValue", и "ExtendedXMLValue" в "CharacterEncodableValue" содержит символ КАВЫЧКИ (QUOTATION MARK (34)) то этот символ должен быть заменен символами:
"
или, как опция кодировщика, управляющей последовательностью формы &#n; или &#xn;, определенными ИСО/МЭК 8824-1, 11.15.8.
19.3.13 Если "QuotedValue" является "SingleQuotedValue" и "ExtendedXMLValue" в "CharacterEncodableValue" содержит символ АПОСТРОФ (APOSTROPHE (39)), то этот символ должен быть заменен символами:
'
или, как опция кодировщика, управляющей последовательностью формы &#n; или &#xn;, определенными ИСО/МЭК 8824-1, 11.15.8.
19.3.14 "ExtendedXMLValue" в "CharacterEncodableValue" должно быть одним из результатов кодирования типа, который можно кодировать посимвольно и который не содержит тегов XML.
19.3.15 Если "ExtendedXMLValue" содержит символы ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (HORIZONTAL TABULATION (9)), ПЕРЕВОД СТРОКИ (LINE FEED (10)), или ПЕРЕВОД КАРЕТКИ (CARRIAGE RETURN (13)), то эти символы должны быть заменены в "ExtendedXMLValue" управляющими последовательностями формы "&#n;" или "&#xn;", определенными в ISO/IEC 8824-1, 11.15.8.
20.1.1 "Base64Instruction":
20.1.2 Продукционное правило "TargetList" определено в 13.2.
20.1.3 Эта команда кодирования может быть назначена типу строка октетов, "открытый" или любому типу "ограниченная строка символов".
20.1.4 Применение этой окончательной команды кодирования к типу строки октетов или открытому типу удаляет опцию шестнадцатеричного кодирования, но позволяет опцию кодирования Base64 (как определено в запросе на комментарии IETF 2045, 6.8). Применение этой окончательной команды кодирования к типу ограниченная строка символов требует, чтобы значение типа ограниченной строки символов было закодировано как Base64.
20.2.1 Если окончательная команда кодирования для типа АСН.1 будет содержать команду кодирования BASE64, то тип должен быть одним из:
а) строка октетов;
б) открытый;
в) ограниченная строка символов.
20.2.2 Тип с этой окончательной командой кодирования не должен иметь окончательных команд кодирования ANY-ELEMENT или WHITESPACE.
Примечание - Нижеперечисленные окончательные команды кодирования не могут появляться вместе с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, DECIMAL, EMBED-VALUES, LIST, TEXT, USE-NIL, USE-NUMBER, USEORDER, USE-QNAME, USE-TYPE, USE-UNION.
20.2.3 В "TargetList" не должно быть уточняющей информации.
20.3.1 Эта команда кодирования затрагивает только "ExtendedXMLValue" типа, к которому она применяется. Она требует использования первой или второй альтернативы для "ExtendedXMLOctetStringValue" и "ExtendedXMLOpenTypeFieldVal" (как опция кодера), запрещая третью альтернативу (см. 16.4). Она требует использования второй альтернативы для "ExtendedXMLRestrictedCharacterStringValue" (см. 16.4).
"XMLBase64String" определен в 20.3.6.
20.3.3 ИСО/МЭК 8824-1, пункт 22.4, применяется.
XMLBase64String:: =
XMLRestrictedCharacterStringValue
"XMLRestrictedCharacterStringValue" должно быть результатом кодирования контента при передаче Content-Transfer-Encoding, определенное в запросе на комментарии IETF 2045, пункт 6.8, за исключением того, что предел в 76 символов не применяется, и "пробел с переходом" (см. 7.1.5), разрешен в любой позиции результата кодирования "XMLBase64String".
Примечание - IETF RFC, 2045 определяет присутствие концов строки, делящих результат кодирования на строки максимум 76 символов, но это не требуется при EXTENDED-XER кодировании. Это также позволяет вставить пробел "white-space" в любую позицию результата кодирования Base64.
20.3.7 Если команда кодирования Base64 применяется к типу "ограниченная строка символов", то каждый символ в строке символов должен быть закодирован с windows-1251 (см. ИСО 10646, приложение D). Получающиеся октеты для всей строки символов должны быть закодированы в символы, как определено в IETF RFC 2045, пункт 6.8, и получающиеся символы должны сформировать "ExtendedXMLValue".
21.1.1 "DecimalInstruction":
21.1.2 Продукционное правило "TargetList" определено в 13.2.
21.1.3 Назначение этой команды кодирования состоит в изменении кодирования действительного типа так, чтобы запрещалась экспоненциальная нотация, и дефис, сопровождаемый "0", обозначал значение плюс нуль вместо значения минус нуль.
Примечание - Значение минус нуль не может быть представлено.
21.2.1 Эта команда кодирования используется только для действительного типа.
21.2.2 Действительный тип, к которому применена эта команда кодирования, должен быть ограничен таким способом, что значения минус нуль, MINUS-INFINITY, PLUS-INFINITY и NOT-A-NUMBER не разрешаются, и base есть 10.
Примечание - Рекомендуются следующие ограничения:
((WITH COMPONENTS {..., base(10)})
(ALL EXCEPT (-0 | MINUS-INFINITY | PLUS-INFINITY | NOT-A-NUMBER))
21.2.3 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
21.2.4 Тип с этой окончательной командой кодирования может иметь любые другие окончательные команды кодирования, разрешенные для этого типа.
Примечание - Нижеперечисленные окончательные команды кодирования не могут появляться вместе с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, BASE64, EMBED-VALUES, LIST, TEXT, USE-NIL, USE-NUMBER, USE-ORDER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE.
21.2.5 В "TargetList" не должно быть уточняющей информации.
21.3.1 "ModifiedXMLRealNumber" (см. 16.9.3) не должно содержать "e" или "E", сопровождаемое показателем степени.
Примечание - Все абстрактные значения, включая те, которые являются очень большими или очень малыми реальными числами, должны быть закодированы как целая часть, опционально сопровождаемая десятичным разделом и дробной частью.
21.3.2 Действительное значение плюс нуль может быть закодировано в качестве опции кодера как "XMLDecimalMinusZeroRealValue", определенное следующим образом:
где "ModifiedXMLRealNumber" ограничено условием 21.3.1 и не содержит никаких цифр кроме нуля.
Примечание - Вышеупомянутое не может быть спутано с действительным значением минус нуль, потому что значение минус нуль удалено обязательным ограничением, которое применяется к действительному типу (см. 21.2.2).
22.1.1 "DefaultForEmptyInstruction":
22.1.2 Продукционное правило "TargetList" определено в 13.2.
22.1.3 Эта команда кодирования определяет абстрактное значение, которое может быть закодировано при EXTENDED-XER кодировании (как выбор кодера) как "пустая" альтернатива для "ExtendedXMLValue" для типа (см. 16.4), который кодируется как единственный контент элемента XML.
Примечание - Этот механизм по умолчанию поддерживает присутствие элемента XML без контента (типично, но не обязательно, закодированный как тег пустого элемента). Это отличается от использования DEFAULT АСН.1, которая связана с отсутствием "ExtendedXMLNamedValue" компонента последовательности или набора.
22.1.4 "TargetList" не должен использовать ключевое слово ALL и должен определять единственную цель.
22.1.5 Пять различных случаев, когда эта команда кодирования может использоваться, представлены ниже.
22.1.5.1 Первый случай - команда назначается непосредственно посимвольно кодируемому типу, который не является нетегированным UNTAGGED (см. раздел 31). Если включающий элемент приложения имеет пустой контент, то этот пустой контент представляет специфицированное значение "Value" посимвольно кодируемого типа (который управляет значением "Value").
22.1.5.2 Второй случай - команда назначается (NOT UNTAGGED, NOT EMBED-VALUES и NOT USE-NIL) типу последовательность, содержащему UNTAGGED посимвольно кодируемый компонент, при кодировании которого формируется единственный контент (для всех абстрактных значений типа последовательность) включающего элемента типа последовательность. Если включающий элемент типа последовательность имеет пустой контент, то этот пустой контент представляет специфицированное значение "Value" посимвольно кодируемого типа (который управляет значением "Value").
Примечание - Посимвольно кодируемый компонент может быть единственным контентом, потому что это - единственный компонент, или он может быть единственным контентом, потому что все другие компоненты имеют окончательные команды кодирования ATTRIBUTE (см. раздел 19), или ANY-ATTRIBUTES (см. раздел 17).
22.1.5.3 Третий случай - команда назначается (NOT UNTAGGED, NOT EMBED-VALUES и NOT USE-NIL) типу последовательность с окончательной командой кодирования EMBED-VALUES (см. 24.3.1.4). Если включающий элемент типа последовательность имеет пустой контент, то этот пустой контент представляет абстрактное значение типа последовательности, который иначе продуцировал бы контент, исключительно определенный значением "Value" единственной UTF8String в последовательности-из EMBED-VALUES (UTF8String управляет значением "Value").
22.1.5.4 Четвертый случай - команда назначается (NOT UNTAGGED, NOT EMBED-VALUES) типу последовательность с окончательной командой кодирования USE-NIL (см. раздел 32), чей компонент OPTIONAL - посимвольно кодируемый тип. Если включающий элемент типа последовательность имеет атрибут идентификации пустого множества со значением true, DEFAULT-FOR-EMPTY не влияет на смысл результата кодирования. Если включающий элемент типа последовательность имеет атрибут идентификации пустого множества со значением false (или не имеет атрибута идентификации пустого множества) и имеет пустой контент, то этот пустой контент представляет специфицированное значение "Value" компонента OPTIONAL (чей тип управляет значением "Value").
22.1.5.5 Пятый случай - команда назначается (NOT UNTAGGED) типу последовательность с окончательной командой кодирования EMBED-VALUES (см. 24.3.1.4) и с окончательной командой кодирования USE-NIL (см. раздел 32), чей компонент OPTIONAL - типа последовательность. Если включающий элемент типа последовательность имеет атрибут идентификации пустого множества со значением true, DEFAULT-FOR-EMPTY не влияет на результат кодирования. Если включающий элемент типа последовательность имеет атрибут идентификации пустого множества со значением false (или не имеет атрибута идентификации пустого множества) и имеет пустой контент, то этот пустой контент представляет абстрактное значение типа последовательность, который иначе продуцировал бы контент, определенный значением "Value" единственной UTF8String в последовательности-из EMBED-VALUES (UTF8String управляет значением "Value").
22.1.6 "Value" определено ИСО/МЭК 8824-1, 16.7.
Примечание - Это позволяет использовать эталонное значение, определенное в модуле или импортированное в него (модуль). Эталонное значение может быть определено с использованием нотации значений XML (XML Value Notation), но такая нотация не может использоваться непосредственно в "DefaultForEmptyInstruction".
22.2.1 Если окончательные инструкции кодирования для типа АСН.1, который является NOT UNTAGGED посимвольно кодируемым типом, содержит команду кодирования DEFAULT-FOR-EMPTY, то этот тип не должен быть компонентом (АСН.1 SEQUENCE или SET) со значением DEFAULT АСН.1.
Примечание - Это ограничение не является строго обязательным, оно должно исключить путаницу между нормальным механизмом определения АСН.1 и механизмом по умолчанию EXTENDED-XER.
22.2.2 Эта команда кодирования должна быть назначена только:
б) типу последовательность NOT UNTAGGED без окончательных команд кодирования EMBED-VALUES или USE-NIL, одним из компонентов которых является посимвольно кодируемый тип с окончательной командой кодирования UNTAGGED и все другие компоненты (если есть хотя бы один) имеют окончательные команды кодирования ATTRIBUTE или ANY-ATTRIBUTES;
в) типу последовательность NOT UNTAGGED, без окончательной команды кодирования USE-NIL, но с окончательной командой кодирования EMBED-VALUES (см. 24.3.1.4);
г) типу последовательность NOT UNTAGGED без окончательной команды кодирования EMBED-VALUES, но с окончательной командой кодирования USE-NIL, OPTIONAL компонент которой - посимвольно кодируемый тип;
д) типу последовательность NOT UNTAGGED с окончательной командой кодирования EMBED-VALUES и с окончательной командой кодирования USE-NIL, OPTIONAL компонент которой - типа последовательность.
22.2.3 Если применяется ограничение 22.2.2 (а) и "empty" - допустимое значение "ExtendedXMLValue" для одного из абстрактных значений (скажем, V), возможно, ограниченного типа, и V отличается от значения "Value" в "DefaultForEmptyInstruction", то должен быть, по крайней мере, один альтернативный результат кодирования для V.
22.2.4 Если применяются ограничения 22.2.2 (б) или (г), и "empty" - допустимое значение "ExtendedXMLValue" для одного из абстрактных значений (скажем, V) UNTAGGED компонента (случай б) или OPTIONAL компонента, (случай г), и V отличается от значения "Value" в "DefaultForEmptyInstruction", то должен быть, по крайней мере, один альтернативный результат кодирования для V.
Примечание - Признается, что некоторые инструменты АСН.1 не в состоянии статически проверить, что вышеупомянутые ограничения соответствуют всем абстрактным значениям, но соответствующие кодировщики не могут продуцировать результаты кодирования, в которых "ExtendedXMLValue" нарушает это ограничение.
22.2.5 Если применяется ограничение 22.2.2 (в), то тип SEQUENCE должен быть ограничен так, чтобы (без DEFAULT-FOR-EMPTY) не было абстрактного значения, которое продуцировало бы пустой контент для заключающего элемента.
22.2.6 Если посимвольно кодируемый тип [случай 22.2.2 (а)] с этой окончательной командой кодирования имеет тип, являющийся типом последовательность-из или набор-из с окончательной командой кодирования LIST, или типам выбора с окончательной командой кодирования USE-UNION, тогда эта окончательная команда кодирования должна игнорироваться.
22.2.7 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
22.2.8 Тип с этой окончательной командой кодирования не должен иметь окончательных команд кодирования ANY-ELEMENT, ATTRIBUTE или UNTAGGED.
Примечание - Окончательные команды кодирования ANY-ATTRIBUTES, USE-TYPE не могут применяться с этой окончательной командой кодирования, их применение к этому типу запрещено.
22.2.9 В "TargetList" не должно быть уточняющей информации.
22.3.1 Эта команда кодирования действует только на значение "ExtendedXMLValue" типа, который управляет "значением" "Value" (см. 22.1.5).
22.3.2 Результат кодирования "ExtendedXMLValue" абстрактного значения, специфицированного "Value" будет (как выбор кодера) одним из следующих:
а) результат кодирования "ExtendedXMLValue" того значения, которое было бы продуцировано, если бы DEFAULT-FOR-EMPTY отсутствовал (нормальный результат кодирования);
б) "пустой" "empty".
Примечание - От декодеров требуется, чтобы они принимали и нормальный результат кодирования и "пустой" как обозначение пустого по умолчанию значения DEFAULT-FOR-EMPTY.
22.3.3 Если применяется ограничение 22.2.2 (а) и "пустой" "empty" есть допустимое значение "ExtendedXMLValue" для одного из абстрактных значений (скажем, V) типа и V отличается от "значения" "Value", специфицированного в "DefaultForEmptyInstruction", тогда любая из альтернатив результата кодирования для V должна использоваться (как опция кодера) вместо "пустого" "empty".
22.3.4 Если применяются ограничения 22.2.2 (б) или (г) и "пустое" "empty" - допустимое значение "ExtendedXMLValue" для одного из абстрактных значений (скажем, V) UNTAGGED компонента [случай (б)] или OPTIONAL компонента [случай (г)] и V отличается от "значения" "Value", специфицированного в "DefaultForEmptyInstruction", тогда любой из альтернативных результатов кодирования для V должен использоваться (как опция кодера) вместо "пустого" "empty".
22.3.5 Если применяется ограничение 22.2.2 (в), действие этой команды кодирования определено в 24.3.1.4 и 24.3.1.5.
22.3.6 Если применяется ограничение 22.2.2 (д), действие этой команды кодирования определено в 24.3.1.6.
23.1.1 "ElementInstruction":
23.1.2 Продукционное правило "TargetList" определено в 13.2.
23.1.3 Эта команда кодирования синонимична с NOT UNTAGGED и не подразумевает никакой семантики кроме NOT UNTAGGED.
23.2.1 В "TargetList" не должно быть уточняющей информации.
23.2.2 Эта команда кодирования не должна использоваться как предварительно установленная команда кодирования, снабженная префиксом, в комбинации ни с одной из команд, снабженных префиксами ANY-ATTRIBUTES, ANY-ELEMENT или ATTRIBUTE, чтобы избежать разночтения.
Эта команда кодирования отрицает команду кодирования UNTAGGED и по-другому не влияет на кодирование.
24.1.1 "EmbedValuesInstruction":
24.1.2 Продукционное правило "TargetList" определено в 13.2.
24.1.3 Эта команда кодирования позволяет первому компоненту типа последовательность (NOT UNTAGGED) обеспечить вставку строки символов перед первым элементом XML, после последнего элемента XML и между XML элементами, которые формируют результат кодирования "ExtendedXMLValue" типа последовательность.
24.1.4 Если окончательная команда кодирования USE-NIL также присутствует и OPTIONAL компонент, поддерживающий USE-NIL, отсутствует в конкретном абстрактном значении, тогда не будет никаких элементов XML для компонентов типа последовательность и не будет строки символов, обеспечивающих это абстрактное значение. Иначе, для всех абстрактных значений число строк символов обязано быть на единицу больше, чем число элементов в результате кодирования типа последовательность. Некоторые или все строки символов могут быть пустыми.
24.2.1 Тип АСН.1 не должен иметь этой окончательной команды кодирования, если только это не тип последовательность. Первый компонент последовательности SEQUENCE OF UTF8String не должен быть отмечен как OPTIONAL или DEFAULT.
24.2.2 Не должно быть окончательной команды кодирования UNTAGGED (см. раздел 31), примененной к типу последовательность-из или к компоненту последовательность-из.
24.2.3 Не должно быть окончательной команды кодирования UNTAGGED, применяемой к любому компоненту типа последовательность, который является типом character-encodable.
24.2.4 Не должно быть окончательной команды кодирования UNTAGGED примененной к какому-либо компоненту типа последовательность, который является посимвольно кодируемым типом.
24.2.5 Если тип последовательность имеет окончательную команду кодирования USE-NIL, то компонент OPTIONAL, поддерживающий команду кодирования USE-NIL, не должен быть посимвольно кодируемым типом (см. также 32.2.4).
24.2.6 Ни один из компонентов последовательности не должен быть отмечен DEFAULT, если только они не имеют окончательной команды кодирования ATTRIBUTE. Если есть компоненты типа SEQUENCE или SET (на любой глубине), то возможно создание элементов в "ExtendedXMLValue" с использованием UNTAGGED - непосредственных дочерних элементов типа последовательность. Они не должны быть отмечены как DEFAULT.
24.2.7 Тип последовательность должен быть ограничен таким способом что:
а) если тип имеет окончательную команду кодирования USE-NIL и OPTIONAL компонент, поддерживающий USE-NIL, отсутствует, число повторений компонентов последовательность-из обязано быть нулем;
б) иначе, число повторений компонентов последовательность-из в каждом абстрактном значении равно единице плюс число элементов XML в "ExtendedXMLValue" типа последовательность, определенного после применения всех окончательных команд кодирования к другим компонентам последовательности и игнорирования первого компонента.
Примечание - Рекомендуется выражать ограничение типа последовательность как:
(CONSTRAINED BY
{/* Должно соответствовать ИСО/МЭК 8825-4, раздел 25 */})
24.2.8 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
24.2.9 Тип с этой окончательной командой кодирования не должен иметь окончательной команды кодирования UNTAGGED.
Примечание - Нижеперечисленные окончательные команды кодирования не должны появляться вместе с этой окончательной командой кодирования потому, что их применение к типу запрещается: ANY-ATTRIBUTES, ANY-ELEMENT, ATTRIBUTE, BASE64, DECIMAL, LIST, TEXT, USENUMBER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE.
24.2.10 В "TargetList" не должно быть уточняющей информации.
24.3.1 Кодер должен сначала продуцировать частичный результат "ExtendedXMLValue" кодирования типа включающая последовательность, игнорируя первый компонент. Это должно модифицировать результат кодирования, как определено в следующих подразделах.
Примечание - Значения UTF8String, которые вставляются, могут быть "пустыми".
24.3.1.1 Первое значение UTF8String должно быть вставлено в последовательность-из (см. 24.3.1.6) в начале результата частичного кодирования перед начальным тегом первого XML элемента (если есть хотя бы один).
24.3.1.2 Каждое последующее значение UTF8String (если есть хотя бы одно) должно быть вставлено между завершающим тегом XML элемента и начальным тегом следующего XML элемента, начиная от первого элемента к последнему.
Примечание - Вышеупомянутое подразумевает, что в каждый из этих элементов не вставлено UTF8String значение, даже если они имеют дочерние элементы.
24.3.1.3 Последнее значение UTF8String (если есть одно) должно быть вставлено в конец результата частичного кодирования после завершающего тега последнего XML элемента.
24.3.1.4 Если XML элементы отсутствуют в результате частичного кодирования, и есть также окончательная команда кодирования DEFAULT-FOR-EMPTY (см. 22), примененная к типу последовательность, и значение первой (и только) UTF8String в последовательности-из идентично "значению" "Value", специфицированному в команде кодирования DEFAULT-FOR-EMPTY, то кодер может опционально закодировать UTF8String как пустую строку (но см. 24.3.1.6).
24.3.1.5 Если XML элементы отсутствуют в результате частичного кодирования и есть окончательная команда кодирования DEFAULT-FOR-EMPTY, примененная к типу последовательность, и результат кодирования - пуст, декодер должен интерпретировать это как результат кодирования для "значения" "Value", специфицированного в команде кодирования DEFAULT-FOR-EMPTY и назначить это абстрактное значение первой (и только) UTF8String в последовательности-из (но см. 24.3.1.6).
Примечание - Это означает, что значение без XML элементов и с единственным пустым значением UTF8String не может быть закодировано. Тип последовательность обязан быть ограниченным, чтобы запретить такие значения (см. 22.2.5).
24.3.1.6 Если тип также имеет окончательную команду кодирования USE-NIL и OPTIONAL компонент отсутствует, то команда кодирования EMBED-VALUES не оказывает действие на результат кодирования. Если тип также имеет окончательную команду кодирования USE-NIL и OPTIONAL компонент присутствует, тогда применяется условие 24.3.1.4. Если декодер определяет, что OPTIONAL компонент присутствует по отсутствию атрибута идентификации пустого множества (или его присутствию со значением false), тогда применяется условие 24.3.1.5.
25.1.1 "GlobalDefaultsInstruction":
25.1.2 Продукционное правило "TargetList" определено в 13.2 и должно быть "пустым" "empty".
25.1.3 "QuotedURI" и "Prefix" определены в 28.1.1.
25.1.4 Продукционное правило "ControlNamespace" определяет название управляющего пространства имен ("URI" в "QuotedURI") и рекомендуемый префикс для этого пространства имен. Если эта команда кодирования GLOBAL-DEFAULTS не представлена, управляющее пространство имен должно быть тем, какое определено в 15.9.
25.1.5 Использование MODIFIED-ENCODINGS продуцирует "ExtendedXMLValues", которые модифицированы в соответствии с 9.2.7 и 9.2.8.
25.2.1 Команда кодирования GLOBAL-DEFAULTS должна быть назначена только в разделе управления кодированием, и ей не должны предшествовать никакие команды кодирования, кроме других команд кодирования GLOBAL-DEFAULTS,.
25.2.2 Каждая из альтернатив GLOBAL-DEFAULTS должна использоваться только однажды в любом разделе управления кодированием.
25.2.3 GLOBAL-DEFAULTS MODIFIED-ENCODINGS, если присутствует, должна быть первой командой в разделе управления XER кодированием в модуле АСН.1.
25.3.1 Применение MODIFIED-ENCODINGS требует, чтобы кодирование было модифицировано, как определено в 9.2.7 и 9.2.8.
25.3.2 Управляющее пространство имен, используемое для полного документа XML, должно быть управляющим пространством имен, назначенным типу АСН.1, кодирование которого формирует корневой элемент этого XML документа.
26.1.1 "ListInstruction":
26.1.2 Продукционное правило "TargetList" определено в 13.2.
26.1.3 Эта команда кодирования требует, чтобы "ExtendedXMLSequenceOfValue" или "ExtendedXMLSetOfValue" типа последовательность-из или набор-из (см. 16.7) были "ExtendedXMLListValue", продуцирующие разделенный пробелами перечень значений компонента последовательность-из или набор-из.
Примечание - Обычно эту команду кодирования назначают SEQUENCE OF INTEGER, которой команда кодирование ATTRIBUTE (см. раздел 19) также назначается.
26.2.1 Тип, которому назначается эта команда кодирования, должен быть последовательность-из или набор-из.
26.2.2 Компонент последовательность-из или набор-из:
а) должен быть посимвольно кодируемого типа;
б) должен быть таким, чтобы для всех его абстрактных значений имелся, по крайней мере, один результат кодирования "ExtendedXMLValue" (принимая во внимание все опции кодера), не "пустой" "empty" не содержащий "пробел с переходом" (см. 7.1.5).
Примечание 1 - Вышеупомянутые ограничения подразумевают, что компонент не может самостоятельно быть типа последовательность-из или набор-из с командой кодирования LIST, или содержать вложенный тип последовательность-из или набор-из с командой кодированием LIST на любой глубине.
Примечание 2 - Вышеупомянутые ограничения будут удовлетворены, если тип компонента последовательность-из или набор-из является целочисленным, действительным, типом идентификатора объекта, типом относительного идентификатора объекта или такими полезными типами как GeneralizedTime и UTCTime. Они будут также удовлетворены, если это тип строка символов ограниченный так, чтобы всегда имелся, по крайней мере, один символ в строке символов и ни одно из его значений не содержало символ "пробел" "white-space".
Примечание 3 - Признано, что некоторые инструменты АСН.1 не в состоянии статически проверить, что вышеупомянутые правила удовлетворены, но кодер, соответствующий правилам, не должен производить кодирование, которое нарушает ограничение (б).
26.2.3 Тип с этой окончательной командой кодирования не должен иметь окончательной команды кодирования ANY-ATTRIBUTES.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не могут появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ELEMENT, BASE64, DECIMAL, EMBED-VALUES, TEXT, USE-NIL, USE-NUMBER, USEORDER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE.
26.2.4 В "TargetList" не должно быть уточняющей информации.
26.3.1 Эта команда кодирования действует только на результат кодирования типа, к которому применена.
26.3.2 Продукционные правила "ExtendedXMLSequenceOfValue" или "ExtendedXMLSetOfValue" (см. 16.7) должны быть альтернативой "ExtendedXMLListValue". "ExtendedXMLListValue" есть:
26.3.3 Должен быть "пробел с переходом" (см. 7.1.5) между каждой парой смежных "CharacterEncodableValue" в "ExtendedXMLListValue".
26.3.4 "CharacterEncodableValue" определен в 19.3.3. Каждый "CharacterEncodableValue" должен закодировать значение из компонента последовательность-из или набора-из.
26.3.5 Порядок, в котором значения "CharacterEncodableValue"s появляются в "ExtendedXMLListValue", должен быть тот же самый, в котором соответствующие значения "ExtendedXMLValue"s появились бы в "ExtendedXMLSequenceOfValue" или "ExtendedXMLSetOfValue", если окончательная команда кодирования LIST отсутствовала.
26.3.6 Значения "CharacterEncodableValue"s в "ExtendedXMLListValue" не должны быть "пустыми" "empty" и не должны содержать "пробел с переходом" (см. 7.1.5).
Примечание - Подраздел 26.2.2 (б) гарантирует, что это возможно, но 26.3.4 может ограничить опции кодера устройства.
27.1.1 "NameInstruction":
27.1.2 Продукционное правило "TargetList" определено в 13.2.
27.1.3 Эта команда кодирования имеет пять самостоятельных назначений:
а) изменять связанное имя тега, имя атрибута или значение атрибута возможной идентификации типа ("новое имя" "NewName" без "уточняющей информации" "QualifyingInformation" в "перечне целей" "TargetList") цели;
б) изменять регистр (или регистр первой буквы) имени связанного тега, имени атрибута, или значения атрибута возможной идентификации типа ("ключевое слово" "Keyword" без "уточняющей информации" "QualifyingInformation" в "перечне целей" "TargetList") цели(ей);
в) изменять имя элемента, применяемое в теге "пустой элемент" обычно (как определено в ИСО/МЭК 8824-1) получаемого из специфицированного идентификатора, используемого в определении типа ("новое имя" "NewName" с "уточняющей информацией" "QualifyingInformation" в "перечне целей" "TargetList", которая не является ALL) цели;
г) изменять регистр (или регистр первой буквы) имени элемента, применяемого в теге "пустого элемента", обычно получаемого из специфицированного идентификатора, используемого в определении типа ("ключевое слово" "Keyword" с "уточняющей информацией" "QualifyingInformation" в "перечне целей" "TargetList", которая не является ALL) цели(ей);
д) изменять регистр (или регистр первой буквы) имен элементов, применяемых при кодировании "ExtendedXMLValue", получаемом из любого идентификатора, используемого в определении типа ("ключевое слово" "Keyword" с "уточняющей информацией" "QualifyingInformation" в "перечне целей" "TargetList", которая является ALL) цели(ей).
Примечание 1 - "Новое имя" "NewName" может применяться для изменения имен, используемых при EXTENDED-XER кодировании, получаемых из идентификаторов или ссылок на типы, но является исключительно полезным, если новое имя может быть использовано, в первую очередь, как идентификатор АСН.1 или ссылка на тип. Таким образом, назначение команды кодирования NAME - это продуцирование требуемого XML элемента или имен атрибутов, когда они не разрешены из-за правил АСН.1 относительно регистра первой буквы идентификаторов или названий ссылки на тип, а также когда правила АСН.1 для различных идентификаторов в конструкциях последовательность, набор и выбор предотвращают желательное кодирование XML.
Примечание 2 - Использование ALL, IN ALL, AS, CAPITALIZED для изображения прописными буквами всех идентификаторов в модуле, может быть особенно полезным для обеспечения общего стиля использования начальных заглавных букв.
Примечание 3 - Если команда кодирования NAME назначена с использованием цели, идентифицированной "идентификатором" "identifier" или "ссылкой на тип" "typereference", это затрагивает имя, используемое в EXTENDED-XER кодировании, но не затрагивает имени, которое используется, чтобы идентифицировать ту же самую цель в последующих командах XER кодирования.
27.1.4 Значение "RestrictedCharacterStringValue" определено в ИСО/МЭК 8824-1, раздел 37.
27.2.1 "NewName" не должно использоваться, если "QualifyingInformation" будет ALL.
27.2.2 Команда кодирования NAME с "QualifyingInformation" должна назначаться только для следующих определений типа:
а) определение типа булевский;
б) определение типа строка битов с поименованными битами;
в) определение типа перечислимый;
г) определение типа целочисленный с поименованными значениями.
27.2.3 Значение "RestrictedCharacterStringValue" в "NewName" при использовании в команде кодирования NAME должно быть или "NCName", определенное в W3C XML Namespaces (раздел 2, продукционное правило 4), или пустая строка символов. Она не должна быть пустой строкой символов, если только команда кодирования NAME не применяется к альтернативе типа выбора с окончательной командой кодирования USE-UNION.
Примечание 1 - Это требование из "W3C XML Namespaces": "NCName" не начинается с символов, которые будучи заглавными, представляют собой "XML".
Примечание 2 - Продукционное правило "NewNameOrKeyword" (и, следовательно, продукционное правило "NewName") также используется в разделе 30. Вышеупомянутые ограничения на "RestrictedCharacterStringValue" не применяются к использованию в разделе 30.
27.2.4 Если есть команда кодирования GLOBAL-DEFAULTS с ключевым словом MODIFIED-ENCODINGS, то не должно быть никакой "QualifyingInformation" в "TargetList".
Примечание - это объясняется тем, что теги пустого элемента не используются в данном случае. Команда кодирования TEXT может использоваться вместо этого для изменения результатов кодирования индивидуальных значений типа.
27.2.5 Эта команда кодирования не должна использоваться в качестве команды кодирования, снабженной префиксом в комбинации ни с одной из следующих команд кодирования с префиксом: ANY-ATTRIBUTES, ANY-ELEMENT или UNTAGGED, чтобы избежать дезориентации считывателя.
27.3.1 Если тип, к которому применена эта команда кодирования, имеет окончательную команду кодирования ATTRIBUTE, "AttributeName" (который является в этом случае "IdentifierOrModifiedIdentifier") "атрибута" "Attribute" (см. 19.3.3) должно быть альтернативой "QualifiedOrUnqualifiedName", как определено в 27.3.3 - 27.3.6.
27.3.2 Если тип, к которому применена эта команда кодирования, не имеет окончательной команды кодирования ATTRIBUTE, тогда имя тега включающего элемента (который является "TagName" - см. 16.5.1) должно быть альтернативой "QualifiedOrUnqualifiedName", как определено в 27.3.3 - 27.3.6.
27.3.3 Альтернативы "IdentifierOrModifiedIdentifier" и "QualifiedOrUnqualifiedName" должны использоваться. "UnprefixedName" в "QualifiedOrUnqualifiedName" должен быть "идентификатором" "identifier" компонента, модифицированного в соответствии с "NewNameOrKeyword" как определено ниже.
27.3.4 Если альтернатива "NewName" будет использоваться, то "UnprefixedName" должен быть заменен "NewName".
27.3.5 Если альтернатива "Keyword" будет использоваться, то "UnprefixedName" должен быть модифицирован, как определено в подразделах 27.3.5.1 - 27.3.5.4.
27.3.5.1 Если "Keyword" - CAPITALIZED, то, если первый символ "UnprefixedName" - строчная буква, этот символ должен быть заменен прописным эквивалентом, иначе название не затронуто.
27.3.5.2 Если "Keyword" - UNCAPITALIZED, то, если первый символ "UnprefixedName" - прописная буква, этот символ должен быть заменен строчным эквивалентом, иначе название не затронуто.
27.3.5.3 Если "Keyword" - UPPERCASED, то все символы "UnprefixedName", которые являются строчными буквами, будут заменены их прописными эквивалентами. Другие символы неизменны.
27.3.5.4 Если "Keyword" - LOWERCASED, то все символы "UnprefixedName", которые являются прописными буквами, будут заменены их строчными эквивалентами. Другие символы неизменны.
27.3.6 "QualifiedOrUnqualifiedName" будет именем пространства уточненных имен только в случае, если "Type" имеет окончательную команду кодирования NAMESPACE.
28.1.2 Продукционное правило "TargetList" определено в 13.2.
Примечание - Самое общее использование этой инструкции кодирования - NAMESPACE ALL.
28.1.3 Эта команда кодирования позволяет имени пространства имен (namespace) и рекомендованному префиксу пространства имен (namespace) быть назначенными цели (целям).
28.1.4 Продукционное правило "URI" не определено в настоящем Международном стандарте, но оно состоит из символов, которые идентифицируют Унифицированный Идентификатор Ресурса (Uniform Resource Identifier - URI). Синтаксис (и семантика) URI определены в IETF RFC 2396, и начинаются с имени схемы URI. Для распределения имен пространства имен с командой кодирования NAMESPACE может использоваться любая схема URI.
28.1.5 Если "NamespaceSpecification" отсутствует, то значение по умолчанию с рекомендованным установленным "Prefix" назначается ссылочному модулю "modulereference" и "URI" устанавливается в следующем виде:
а) схема URI (см. IETF RFC 2396) должна быть urn;
б) идентификатор пространства имен URN (см. IETF RFC 2141) должен быть oid;
в) Специфическая Строка Пространства Имен URN (см. IETF RFC 2141) должна быть "Отличительным Идентификатором" "DefinitiveIdentifier" модуля, выраженного как "Значение Идентификатора XML Объекта" "XMLObjectIdentifierValue" (см. IETF RFC 3061).
28.1.6 Пример: При значении идентификатора объекта {iso standard 1564 modules(0) basic(1)} URI был бы строкой символов "urn:oid:1.0.1564.0.1".
28.1.7 Продукционное правило "NCName" определено в Пространстве имен W3C XML (W3C XML Namespaces), разделе 2, продукционное правило 4, и не будет начинаться с символов, которые являются заглавными "XML".
Примечание - Это требование, предписанное Рекомендацией W3C XML Пространство имен.
28.2.1 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
28.3.1 Имя уточненного пространства имен (Namespace-qualified) может потребоваться для имени связанного тега, для имени атрибута, или для значения атрибута идентификации типа. Имя уточненного пространства имен требуется, если тип, генерирующий название, является окончательной командой кодирования NAMESPACE.
28.3.3 Кодирование имени уточненного пространства имен требует:
а) использования альтернативы "ИмяСПрефиксом" "PrefixedName" для "УточненногоИмени" "QualifiedName" с дополнением к элементам XML добавочных признаков, обеспечивающих декларации пространства имен (как определено в W3C XML Namespaces);
б) использования альтернативы "ИмяБезПрефикса" "UnprefixedName" для "Уточненного Имени" "QualifiedName" с дополнением к элементам XML добавочных признаков, обеспечивающих декларации пространства имен по умолчанию (как определено в W3C XML Namespaces).
28.3.4 Выбор этих двух механизмов и элементов XML, к которым добавляются признаки декларации пространства имен, являются опцией кодера.
Примечание 1 - Рекомендация W3C XML Namespaces определяет, что объявленное по умолчанию пространство имен имеет в своей области действия только имя элемента, в котором оно объявлено (и имена дочерних элементов), но не атрибуты элементов или дочерних элементов.
Примечание 2 - Рекомендуется, но не требуется, использование рекомендованного префикса в команде кодирования NAMESPACE.
Примечание 3 - Использование рекомендованного префикса может быть неприемлемым, если команды кодирования NAMESPACE с другими именами пространства имен namespace, но с теми же самыми рекомендованными префиксами присутствуют в модуле.
29.1.1 "PIOrCommentInstruction":
29.1.2 Продукционное правило "TargetList" определено в 13.2.
29.1.3 Эта команда кодирования вызывает определенные команды обработки XML и/или комментарии, которые будут вставлены перед или после "ExtendedXMLValue" или перед или после связанных тегов.
Примечание - Подраздел 9.2.5 разрешает кодеру (как выбор кодера) вставлять дополнительные XML команды обработки и XML комментарии.
29.1.4 "RestrictedCharacterStringValue" определен в ИСО/МЭК 8824-1, 37.
29.2.1 Значение "RestrictedCharacterStringValue" должно быть связано с одной или более строками символов, каждая из которых соответствует синтаксису команд обработки XML (Processing Instruction), определенному в W3C XML 1.0, 2.6, или синтаксису комментариев XML (Comment), определенному в W3C XML 1.0, 2.5, и определяет команды обработки и/или комментарии, которые должны быть вставлены в XML документ.
29.2.3 Тип этой окончательной команды кодирования не должен иметь окончательных команд кодирования ANY-ATTRIBUTES, ANY-ELEMENT, ATTRIBUTE или UNTAGGED.
29.2.4 В "TargetList" не должно быть уточняющей информации.
29.3.1 Если позиция ("Position") - BEFORE-TAG, то команды обработки и/или комментарии должны быть вставлены перед связанным начальным тегом или тегом пустого элемента. Если начальный тег или тег пустого элемента - начало некоторого включающего "ExtendedXMLValue", тогда любые команды обработки и/или комментарии, вставленные перед этим "ExtendedXMLValue" (применение BEFORE-VALUE к соответствующему типу), будут предшествовать этим командам обработки и/или комментариям в XML документе.
29.3.2 Если позиция ("Position") - BEFORE-VALUE, то команды обработки и/или комментарии должны быть вставлены в начало "ExtendedXMLValue". Если "ExtendedXMLValue" начинается с тега, который является связанным начальным тегом некоторых вложенных "ExtendedXMLValue", тогда любые команды обработки и/или комментарии, вставленные прежде, чем этот связанный начальный тег (применение BEFORE-TAG к соответствующему типу), должны следовать за этими командами обработки и/или комментариями в XML документе.
Примечание - В этом случае содержание связанных тегов никогда не пусто, и атрибут пустого элемента не может использоваться.
29.3.3 Если позиция ("Position") - AFTER-VALUE, то команды обработки и/или комментарии должны быть вставлены в конец "ExtendedXMLValue". Если "ExtendedXMLValue" заканчивается тегом, который является связанным конечным тегом некоторых вложенных "ExtendedXMLValue", тогда любые команды обработки и/или комментарии, вставленные после связанного конечного тега (применение AFTER-TAG к соответствующему типу), будут предшествовать этим командам обработки и/или комментариям в XML документе.
Примечание - В этом случае содержание связанных тегов никогда не пусто, и тег пустого элемента не может использоваться.
29.3.4 Если позиция ("Position") - AFTER-TAG, то команды обработки и/или комментарии должны быть вставлены после связанного конечного тега или тега пустого элемента. Если конечный тег или тег пустого элемента завершает некоторое приложение "ExtendedXMLValue", тогда любые команды обработки и/или комментарии должны быть вставлены после этого "ExtendedXMLvalue" (применение AFTER-VALUE к соответствующему типу) и должны следовать за этими командами обработки и/или комментарии в XML документе.
30.1.1 "TextInstruction":
30.1.2 Продукционное правило "TargetList" определено в 13.2.
30.1.3 Цель этой команды кодирования:
а) в отсутствие GLOBAL-DEFAULTS MODIFIED-ENCODINGS позволить значениям булевского типа, перечислимого типа, типа строка битов с поименованными битами и целочисленных с поименованными числами, быть закодированными как строки символов, а не как теги пустого элемента;
б) в присутствии GLOBAL-DEFAULTS MODIFIED-ENCODINGS позволить изменять строки символов, которые используются для значений булевских типов, перечислимых типов, строк битов с поименованными битами и целочисленных с поименованными значениями.
30.1.4 "NewNameOrKeyword" определен в разделе 27. "NewName" в "NewNameOrKeyword" будет содержать, по крайней мере, один символ.
30.2.1 Эта команда кодирования должна быть назначена только на следующие типы с уточняющей информацией, определяющей один или более идентификаторов, используемых в определении типа (true или false для булевского типа):
а) определение булевского типа;
б) определение типа строка битов с поименованными битами;
в) определение перечислимого типа;
г) определение целочисленного типа с названными значениями.
30.2.2 Окончательные строки символов, используемые для значений типа, которому назначена эта команда кодирования, должны различаться.
30.2.3 "NewName" в "NewNameOrKeyword" не должен использоваться, если "QualifyingInformation" имеет значение ALL. Ограничение, приведенное в 27.2.3, не применимо к этому использованию "NewNameOrKeyword".
30.2.4 В отсутствие команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS набор окончательных команд кодирования TEXT для типа не должен производить кодирования текста для некоторых абстрактных значений и кодирования пустых элементов для других абстрактных значений.
Примечание - Если есть команда кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS, то все кодирования - кодирования текста.
30.2.5 Если команда кодирования TEXT применена к типу строка битов с поименованными битами и "NewName" используется, "NewName" не должно содержать "пробел с переходом" (см. 7.1.5) и не будет начинаться с "0" (DIGIT ZERO) или "1" (DIGIT ONE).
30.2.6 Тип с этой окончательной командой кодирования не должен иметь окончательной команды кодирования USE-NUMBER.
Примечание - Нижеперечисленные окончательные команды кодирования не должны сочетаться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, BASE64, DECIMAL, EMBED-VALUES, LIST, USE-NIL, USEORDER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE.
30.2.7 "QualifyingInformation" должна всегда присутствовать.
30.3.2 Если тип - не строка битов с поименованными битами и "TextToBeUsed" отсутствует, результатом кодирования "ExtendedXMLValue" каждого значения, на которую ссылается уточняющая информация для этой команды, должна быть строка символов, содержащая символы идентификатора (или будет true или false в случае булевских типов). Для целочисленных типов с поименованными значениями должны быть использованы идентификаторы или соответствующие значения (как выбор кодера).
30.3.3 Если тип - строка битов с поименованными битами и "TextToBeUsed" отсутствует, строка символов, идентичная идентификатору бита должна представлять бит, когда это установлено. Каждое абстрактное значение должно быть закодировано как сцепление (возможно пустое) этих строк символов для всех битов, которые установлены и разделены "пробелом с переходом" (см. 7.1.5).
30.3.4 Если тип - не строка битов с поименованными битами и "TextToBeUsed" присутствует, то следующие подразделы применяются (но см. 30.3.5).
30.3.4.1 Если применяется альтернатива "NewName", строка символов использованная для кодирования значения, идентифицированного "QualifyingInformation", - "NewName". Каждое появление символов "<", ">" и "&" в "NewName" будет заменено одной из управляющих последовательностей "<", ">", и "&" соответственно, или управляющей последовательностью формы "&#n;" или "&#xn;", определенной в ИСО/МЭК 8824-1, 11.15.8.
30.3.4.2 Если применяется альтернатива "Keyword", строка символов, использованная для кодирования значений типа, - имя идентификатора, модифицированное, как определено ниже.
30.3.4.3 Если "Keyword" - CAPITALIZED, то первый символ имени заменяется заглавным эквивалентом, иначе имя не меняется.
30.3.4.4 Если "Keyword" - UNCAPITALIZED, то имя неизменно.
30.3.4.5 Если "Keyword" - UPPERCASED, то все символы имени, которые являются строчными буквами, заменяются их прописными эквивалентами. Другие символы неизменны.
30.3.4.6 Если "Keyword" - LOWERCASED, то все символы имени, которые являются прописными буквами, заменяются их строчными эквивалентами. Другие символы неизменны.
30.3.5 Если тип - целочисленный тип с поименованными значениями, строки символов, созданные с применением подразделов 30.3.4.1 - 30.3.4.6, будут использоваться вместо идентификаторов. Строки символов или соответствующие значения должны использоваться (как выбор кодера).
30.3.6 Если тип - строка битов с поименованными битами и "TextToBeUsed" присутствует, подразделы 30.3.4.1 - 30.3.4.6 будут применены к каждому идентификатору бита, чтобы создать строку символов, которая представляет бит, когда он установлен. Значение строки битов должно быть закодировано как сцепление (возможно пустое) этих строк символов для всех битов, которые установлены и разделены "пробелом с переходом" (см. 7.1.5).
31.1.1 "UntaggedInstruction":
31.1.2 Продукционное правило "TargetList" определено в 13.2.
31.1.3 (Инструкция) неофициальное описание эффекта UNTAGGED на конструкторы АСН.1 приведено в приложении Б.
В этом разделе дано вводное руководство, иллюстрирующее некоторые эффекты использования UNTAGGED.
31.1.4 Использованная (возможно, неоднократно и во вложенном виде) в соединении с последовательностью, набором, выбором, последовательностью-из и набором-из позволяет определять почти произвольный образец элементов XML. В результате удаляется начальный тег XML, предшествующий значению "ExtendedXMLValue" в "Type", к которому это значение применено, и конечный тег XML, который следует за этим значением. Остаются элементы XML, обычно содержавшиеся между этими тегами, становящимися частичным XML содержанием.
31.1.5 Данная команда, примененная к типу выбора как компоненту последовательности или набора, определяет включение в месте последовательности (набора) точно одной из альтернатив типа выбора (или ни одной, если типом выбора является OPTIONAL компонент). Идентификатор типа выбора не появляется в кодировании. Некоторые альтернативы для типа выбора могут быть XML элементами, но другие могут быть частичным XML контентом, содержащим почти произвольный шаблон множественных элементов в результате использования UNTAGGED при определении тех альтернатив.
31.1.6 Примененная к типу последовательность-из как компоненту последовательности или набора, она определяет включение в месте последовательности (набора) указанного или произвольного числа повторений компонента последовательность-из (которые могут создать единичный XML элемент, или создать частичный XML контент, если он сам является UNTAGGED).
31.1.7 Примененная к типу последовательности (или набора) или к типу последовательность-из (или набор-из) как альтернатива типа выбора, она позволяет альтернативе состоять из частичного XML контента, который является "ExtendedXMLValue" последовательности, набора, последовательности-из или набора-из.
31.1.8 Отдельная функция UNTAGGED, будучи примененной к типу посимвольно-кодируемый, должна позволить символьному контенту появиться в кодировании последовательности без тегов вокруг этого контента. Это использование ограничено компонентами последовательности, которые сами не являются нетеговыми.
Примечание - Это ограничение необходимо, чтобы упростить правила, что обеспечит легкое и однозначное декодирование.
31.2.1 Во всех случаях использования включающий тип должен быть типом последовательности, набора, выбора, последовательности-из или набора-из.
31.2.2 Если тип будет посимвольно-кодируемым, то включающий тип должен быть типом последовательности без окончательной команды кодирования UNTAGGED. Тип не должен быть отмечен OPTIONAL или DEFAULT. Все другие компоненты включающего типа последовательности (если таковые существуют) должны иметь окончательные команды кодирования ATTRIBUTE или ANY-ATTRIBUTES.
31.2.3 Если тип не будет типом посимвольно-кодируемым, то это должен быть тип последовательности, набора, выбора, последовательности-из, набора-из, строки октетов или строки битов с содержащимся "Type" без ENCODED BY или открытого типа.
Примечание - Приложение Б содержит руководство, которое может гарантировать, что использование этой инструкции кодирования не приводит к двусмысленности.
31.2.4 Эта команда кодирования не должна быть применена к типу, который имеет пустой результат кодирования "ExtendedXMLValue" для одного из его абстрактных значений, если тип используется как:
а) компонент типа последовательности или набора с OPTIONAL или DEFAULT;
б) компонент типа последовательности-из или набора-из;
в) альтернатива для типа выбора, если другая альтернатива для того же самого типа выбора имеет пустой результат кодирования "ExtendedXMLValue" для одного из его абстрактных значений и имеет окончательную команду кодирования UNTAGGED.
Пример: тип, который является типом последовательности со всеми его OPTIONAL компонентами, имеет абстрактное значение с пустым результатом кодирования "ExtendedXMLValue", как и тип последовательность-из, где нулевые повторения разрешены.
31.2.5 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
31.2.6 Тип с этой окончательной командой кодирования не должен иметь ни одной из перечисленных окончательных команд кодирования ANY-ATTRIBUTE, ANY-ELEMENT, ATTRIBUTE, DEFAULT-FOR-EMPTY, EMBED-VALUES, PI-OR-COMMENT, USE-NIL, USEORDER или USE-TYPE.
31.2.7 В "TargetList" не должно быть никакой уточняющей информации.
31.3.1 Если тип закодирован как тип высшего уровня, то эта команда кодирования должна игнорироваться.
31.3.2 Если включающий тип - тип выбора, "ExtendedXMLChoiceValue" (см. 16.5.1) для этой альтернативы для вложенного типа должен быть "ExtendedXMLValue" альтернативы (вторая альтернатива в продукционных правилах "ExtendedXMLChoiceValue").
Примечание - "ExtendedXMLValue" для альтернативы может быть единственным XML элементом или может быть частичным XML контентом, состоящим из множественных XML элементов.
31.3.3 Если включающий тип - тип последовательности или набора, "ExtendedXMLNamedValue" (см. 16.6) для этого компонента вложенного типа будет заменен на "ExtendedXMLValue" компонента (вторая альтернатива в продукционных правилах "ExtendedXMLNamedValue").
Примечание - Этот "ExtendedXMLValue" может быть единственным XML элементом или может быть частичным XML контентом, состоящим из множественных XML элементов.
31.3.4 Если вложенный тип - тип последовательности-из или набора-из, "ExtendedXMLDelimitedItem" (если используется - см. 16.7) каждого повторения должно быть заменено "ExtendedXMLValue", вложенным в "ExtendedXMLDelimitedItem".
Примечание 1 - Невозможно использовать UNTAGGED, если только GLOBAL-DEFAULTS MODIFIED-ENCODINGS не была включена в раздел управления кодированием, когда "ExtendedXMLValueList" не разрешается (см. 17.7.2).
Примечание 2 - Этот "ExtendedXMLValue" может быть единственным XML элементом или может быть частичным XML контентом, состоящим из множественных XML элементов.
31.3.5 Если тип - строка октетов или строка битов с содержащимся "Type" без ENCODED BY, или открытым типом, "ExtendedXMLValue" должен быть "ExtendedXMLTypedValue" (не "xmlhstring" или "XMLBase64String").
Примечание - Такие типы не соответствуют определению посимвольно-кодируемого типа (см. 3.2.2.2). Подраздел 31.3.5 подразумевает, что когда они имеют окончательную команду кодирования UNTAGGED, они всегда кодируются как XML элементы.
32.1.1 "UseNilInstruction":
32.1.2 Продукционное правило "TargetList" определено в 13.2.
32.1.3 Эта команда кодирования обеспечивает оптимизированное EXTENDED-XER кодирование для последовательности с единственным OPTIONAL компонентом, все другие компоненты которого (если они существуют) имеют окончательную команду кодирования ATTRIBUTE или ANY-ATTRIBUTE, которой, возможно, предшествует начальный тип последовательности-из, поддерживающий USE-ORDER (см. 34).
32.1.4 В отсутствие этой команды кодирования опциональный компонент может быть закодирован следующим образом:
а) (вариант "не пропущенный, но пустой"), если компонент присутствует в абстрактном значении с абстрактным значением, которое имеет пустой результат кодирования "ExtendedXMLValue", тогда "ExtendedXMLNamedValue" для компонента присутствует в XML документе обычно как тег пустого элемента (или со смежными начальным и конечным тегами);
б) (вариант "пропущен"), если компонент отсутствует в абстрактном значении, "ExtendedXMLNamedValue" не представлен;
в) (вариант "не пропущенный и не пустой"), если компонент присутствует в абстрактном значении с абстрактным значением, которое не имеет пустого результата кодирования, тогда "ExtendedXMLNamedValue" для компонента представлен с непустым содержанием.
32.1.5 Использование USE-NIL требует, чтобы отсутствие дополнительного компонента (32.1.4 б) было сообщено включением нулевого идентификационного атрибута идентификации с именем "nil" и значением "true" или "1".
32.1.6 В случаях 32.1.4 а и б, нулевой признак идентификации может быть опущен (как выбор кодера) или он может присутствовать со значением "false" или "0". Опциональный компонент должен быть закодирован исключением связанных тегов.
32.2.1 Команда кодирования USE-NIL должна быть только назначена для типа последовательность, который имеет OPTIONAL компонент без окончательной команды кодирования ATTRIBUTE. Все другие компоненты типа последовательность, если таковые имеются, должны иметь окончательную команду кодирования ATTRIBUTE или ANY-ATTRIBUTE или должны быть компонентами последовательность-из, поддерживающими команды кодирования USE-ORDER или EMBED-VALUE, которые являются также окончательными командами кодирования для типа последовательность.
32.2.2 Тип последовательность не должен иметь окончательной команды кодирования UNTAGGED.
32.2.3 Компонент OPTIONAL не должен иметь ни одной окончательной команды кодирования ANY-ELEMENT, ANY-ATTRIBUTE, DEFAULT-FOR-EMPTY, EMBED-VALUE, PI-OR-COMMENT, UNTAGGED, USE-NIL, USE-ORDER или USETYPE.
Примечание - Кроме UNTAGGED, упомянутые выше команды кодирования не могут быть применены к типу, который имеет окончательную команду кодирования UNTAGGED.
32.2.4 Если компонент OPTIONAL не посимвольно кодируемого типа, то это должен быть тип последовательность, набор, выбор, последовательность-из, набор-из, открытый тип или тип строка октетов, или строка битов, содержащая тип "Type" и без ENCODED BY.
32.2.5 Если компонент OPTIONAL будет типом последовательность, то ни один из его компонентов не должен иметь окончательной команды кодирования ATTRIBUTE или ANY-ATTRIBUTE.
32.2.6 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
32.2.7 Тип с этой окончательной командой кодирования не должен иметь ни одной из окончательных команд кодирования UNTAGGED или USE-QNAME.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не должны появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, ATTRIBUTE, BASE64, DECIMAL, LIST, TEXT, USENUMBER, USE-TYPE, USE-UNION, WHITESPACE.
32.2.8 В "TargetList" не должно быть уточняющей информации.
32.3.1 Если компонент OPTIONAL отсутствует (32.1.4 б), то нулевой атрибут идентификации пустого множества с названием "nil" и значением "true" или "1" должен быть добавлен к "AttributeList" включающего элемента.
32.3.2 Если компонент OPTIONAL присутствует (32.1.4 а и в), атрибут идентификации пустого может быть опущен (как выбор кодера) или добавлен к "AttributeList" включающего элемента со значением "false" или "0". Опциональный компонент должен быть закодирован, опуская связанные теги.
33.1.1 "UseNumberInstruction":
33.1.2 Продукционное правило "TargetList" определено в 13.2.
33.1.3 Назначение этой команды кодирования состоит в том, чтобы модифицировать результат кодирования перечислимого типа так, чтобы числа в перечислениях "NamedNumber" использовались вместо имен.
33.2.1 Эта команда кодирования должна игнорироваться, если только она не применяется к перечислимому типу.
33.2.2 Тип с этой окончательной командой кодирования не должен также иметь окончательной команды кодирования TEXT.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не должны появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, BASE64, DECIMAL, EMBED-VALUES, LIST, USE-NIL, USEORDER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE
33.2.3 В "TargetList" не должно быть уточняющей информации.
33.3.1 "ExtendedXMLEnumeratedValue":
33.3.2 "EmptyElementEnumerated" и "TextEnumerated" определены в ИСО/МЭК 8824-1, 19.8 и 19.9.
33.3.3 "XMLSignedNumber" определено в ИСО/МЭК 8824-1, 18.9 и 18.12, и оно должно быть числом в перечислении "NamedNumber".
33.3.4 Альтернатива "XMLSignedNumber" должна использоваться, только и если только перечислимый тип имеет эту окончательную команду кодирования.
Примечание - Если GLOBAL-DEFAULTS MODIFIED-ENCODINGS присутствует в разделе управления кодированием XER, но перечислимый тип не имеет этой окончательной команды кодирования, то используется вторая альтернатива. Если в разделе управления кодированием XER нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS, то используется первая альтернатива.
34.1.1 "UseOrderInstruction":
34.1.2 Продукционное правило "TargetList" определено в 13.2.
34.1.3 Назначение этой команды кодирования состоит в том, чтобы позволить оптимизировать результат EXTENDED-XER кодирования типа последовательность, в котором есть компонент последовательность-из, определяющий семантический порядок значений следующих компонентов типа последовательность, которые кодируются как элементы. Это может также использоваться, если есть окончательная команда кодирования USE-NIL (см. раздел 32) и единичный компонент OPTIONAL, необходимый для использования USE-NIL в последовательности с целью определения семантического порядка компонентов той последовательности OPTIONAL.
34.1.4 Компонент последовательности-из, который определяет семантический порядок, это - первый компонент последовательности, если только нет также компонента последовательности-из, поддерживающего окончательную команду кодирования EMBED-VALUES, применяемую к типу последовательность. В этом случае компонент последовательности-из, поддерживающий команду кодирования EMBED-VALUES, предшествует компоненту последовательности-из, поддерживающему команду кодирования USE-ORDER.
34.1.5 Компонент, определяющий семантический порядок, обязан быть типа последовательность-из с компонентом перечислимого типа. Этот тип последовательности-из и его семантика зависят от присутствия или отсутствия команды кодирования USE-NIL, применяемой к типу последовательность, как описано в следующих подпунктах.
34.1.5.1 Если нет окончательной команды кодирования USE-NIL, имена перечислений тождественны идентификаторам компонентов АСН.1 типа последовательность. Порядок перечислений в каждом абстрактном значении определяет семантический порядок значений последующих компонентов типа последовательность, которые присутствуют в результате кодирования.
34.1.5.2 Если есть окончательная команда кодирования USE-NIL, то OPTIONAL компонент, необходимый при использовании USE-NIL, обязан быть типа последовательность (скажем, B), и имена перечислений тождественны идентификаторам компонентов АСН.1 типа B последовательность. Порядок перечислений в каждой абстрактном значении определяет семантический порядок значений компонентов типа B последовательность, которые присутствуют в результате кодирования.
34.2.1 Эта команда кодирования должна быть назначена только типу последовательность. Тип последовательность должен содержать компонент типа последовательность-из (скажем, тип A) с компонентом перечислимого типа. Если тип последовательность не имеет также окончательных команд кодирования EMBED-VALUES, тогда тип A должен быть первым компонентом, а в противном случае - вторым. Если нет окончательной команды кодирования USE-NIL, тип последовательность должен также иметь хотя бы один компонент без окончательных команд кодирования ATTRIBUTE или ANY-ATTRIBUTES (компонент, не являющийся атрибутом). Если есть окончательная команда кодирования USE-NIL, то OPTIONAL компонент, поддерживающий USE-NIL, будет типа последовательность, и должен иметь, по крайней мере, один компонент.
34.2.2 Перечислимый тип должен иметь идентификаторы, которые зависят от присутствия или отсутствия окончательной команды кодирования USE-NIL, применяемой к типу последовательность с командой кодирования USE-ORDER, как определено в следующих подпунктах.
34.2.2.1 Если нет окончательной команды кодирования USE-NIL, то перечислимый тип должен иметь идентификаторы для перечисления, которые находятся во взаимно-однозначном соответствии (и находятся в том же текстовом порядке) с идентификаторами следующих компонентов последовательности, не являющихся атрибутами (см. 34.2.1). Тип последовательность-из должен быть ограничен так, чтобы каждое абстрактное значение содержало точно один идентификатор для каждого компонента последовательности, не являющегося атрибутом, который присутствует в абстрактном значении.
34.2.2.2 Если есть окончательная команда кодирования USE-NIL, то перечислимый тип должен иметь идентификаторы для перечислений, которые находятся во взаимно-однозначном соответствии (и находятся в том же текстовом порядке) с идентификаторами компонентов компонента OPTIONAL в типе последовательность. Тип последовательность-из должен быть ограничен так, чтобы каждое абстрактное значение содержало точно один идентификатор для каждого OPTIONAL компонента последовательности, который присутствует в абстрактном значении.
Примечание - Рекомендуется ограничение на тип последовательность выражать как:
(CONSTRAINED BY {/* Должен соответствовать ИСО/МЭК 8825-4, часть 35 */})
34.2.2.3 "EnumerationItem"s в перечислениях все должны быть "Идентификаторами" или "ПоименованнымиЧислами" ("NamedNumber") со значения 0 для первой позиции "EnumerationItem", 1 - для второй, и так далее, до последней позиции "EnumerationItem".
34.2.3 Тип последовательность-из не должен быть отмечен OPTIONAL или DEFAULT.
34.2.4 Следующие компоненты последовательности (если нет окончательной команды кодирования USE-NIL) и компонент OPTIONAL последовательности (если есть окончательная команда кодирования USE-NIL) не должны быть отмечены DEFAULT, если только они не имеют окончательной команды кодирования ATTRIBUTE.
34.2.5 Никакой компонент любой последовательности с этой окончательной командой кодирования или OPTIONAL последовательности (когда есть окончательная команда кодирования USE-NIL), не должен иметь окончательной команды кодирования UNTAGGED, независимо от того, является ли тип этого компонента посимвольно кодируемым или нет.
34.2.6 Никакой компонент последовательности с этой окончательной командой кодирования не должен иметь окончательной команды кодирования ANY-ELEMENT.
34.2.7 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
34.2.8 Тип с этой окончательной командой кодирования не должен иметь окончательной команды кодирования UNTAGGED.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не могут появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, ATTRIBUTE, BASE64, DECIMAL, LIST, TEXT, USENUMBER, USE-QNAME, USE-TYPE, USE-UNION, WHITESPACE.
34.2.9 В "TargetList" не должно быть уточняющей информации.
34.3.1 Тип последовательность-из с перечислимым компонентом не должен кодироваться непосредственно.
34.3.2 Кодер должен закодировать семантику этого типа (семантический порядок компонентов последовательности или компонентов последовательности OPTIONAL), кодируя компоненты, которые кодируются как элементы в порядке, определенном типом последовательность-из с перечислимым компонентом. Декодер должен возвратить значение компонента последовательность-из, используя порядок кодируемых элементов.
35.1.1 "UseQNameInstruction":
35.1.2 Продукционное правило "TargetList" определено в 13.2.
35.1.3 Назначение этой команды кодирования состоит в том, чтобы модифицировать результат кодирования типа последовательность, каждое из значений которого определяет опциональное имя пространства имен (URI) и имя, не снабженное префиксом, так, что оно кодируется как имя XML, ограниченное пространством имен, или как неограниченное имя.
Примечание - Это обуславливается, поскольку такой вариант является доступным в других нотациях схемы. Пример типа последовательность, к которому это может быть применено - тип QName, определенный в ИСО/МЭК 8825-5.
35.1.4 Если опциональный компонент присутствует в абстрактном значении типа последовательность, то это абстрактное значение представляет имя, ограниченное пространством имен. Если дополнительный компонент отсутствует, тип последовательности представляет неограниченное имя.
35.2.1 Эта команда кодирования должна быть назначена последовательности с точно двумя компонентами, оба должны быть типа UTF8String. Первый компонент должен быть OPTIONAL.
35.2.2 Первый компонент должен быть ограничен, чтобы представить URI (см. IETF RFC 2396). Второй компонент должен быть ограничен, чтобы содержать "NCName", как определено в W3C XML Namespaces, разделе 2, продукционное правило 4, и не начинаться с символов, которые в верхнем регистре представляют собой "XML".
35.2.3 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
35.2.4 Тип с этой окончательной командой кодирования не должен иметь окончательной команды кодирования USE-NIL.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не должны появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, BASE64, DECIMAL, EMBED-VALUES, LIST, TEXT, USENUMBER, USE-ORDER, USE-TYPE, USE-UNION, WHITESPACE.
35.2.5 В "TargetList" не должно быть никакой уточняющей информации.
35.3.1 Эта команда кодирования, примененная к типу, если опциональный компонент присутствует, требует, чтобы декларация пространства имен (или декларация пространства имен по умолчанию) находилась в области применения для атрибута значения или контента элемента, который кодирует значение этого типа в соответствии с разделом 28. Значение атрибута или контент элемента тогда кодируются, как определено для имени, ограниченного пространством имен в разделе 28.
35.3.2 Если опциональный компонент отсутствует, то декларация пространства имен по умолчанию не должна быть в области применения для атрибута значения или контента элемента, который кодирует значение этого типа.
36.1.1 "UseTypeInstruction":
36.1.2 Продукционное правило "TargetList" определено в 13.2.
36.1.3 Эта команда кодирования оптимизирует EXTENDED-XER кодирование типа выбора. Атрибут идентификации типа должен быть закодирован в включающем элементе, чтобы идентифицировать альтернативу, которая была закодирована (если только это - не первая альтернатива), и удаление начального и конечного тегов результата кодирования альтернатив.
36.1.4 Атрибут идентификации типа идентифицирует тип XML элемента. Необходимо, чтобы имя атрибута было именем "типа" ("type") из управляющего пространства имен (см. 15.9) и его значение идентифицировало бы альтернативу типа выбора, к которому эта команда кодирования применена (это обеспечивает альтернативное определение для типа выбора).
36.2.1 Тип, которому назначена USE-TYPE, должен быть типом выбора без окончательной команды кодирования UNTAGGED.
36.2.2 Ни одна из альтернатив для типа выбора не должна иметь окончательную команду кодирования UNTAGGED.
36.2.3 Ни одна из альтернатив типа выбора не должна быть сама типом выбора с окончательной командой кодирования USE-TYPE.
Примечание - Одна или более альтернатив для типа выбора могут быть типами выбора с окончательной командой кодирования USE-UNION, кодирующим.
36.2.4 Эта команда кодирования не должна быть назначена, если нет команды кодирования GLOBAL-DEFAULTS MODIFIED-ENCODINGS в разделе управления кодированием.
36.2.5 Тип с этой окончательной командой кодирования не должен иметь ни одной из окончательных команд кодирования UNTAGGED или USE-UNION.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не должны появляться с этой окончательной командой кодирования, потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, ANY-ELEMENT, ATTRIBUTE, BASE64, DECIMAL, DEFAULT-FOR-EMPTY, EMBED-VALUES, LIST, TEXT, USE-NIL, USE-NUMBER, USE-ORDER, USE-QNAME, WHITESPACE.
36.2.6 В "TargetList" не должно быть уточняющей информации.
36.3.1 Если кодируемая альтернатива выбора не является первой альтернативой этого выбора, то атрибут идентификации типа (см. 36.3.3 и 36.3.4) должен быть добавлен к "AttributeList" включающего элемента, если 36.3.8 не применяется.
36.3.2 Если кодируемая альтернатива выбора является первой альтернативой этого выбора, атрибут идентификации типа может быть добавлен или опущен как опция кодера, если 36.3.8 не применяется.
36.3.3 Атрибут идентификации типа должен быть экземпляром продукционного правила "Attribute" (см. 19.3.3) с "ControlAttributeName" пространства имен ограниченного использования (см. 19.3.5) "типа" ("type") из управляющего пространства имен (см. 15.9).
36.3.4 Значение атрибута идентификации типа должно быть идентификатором выбранной альтернативы, возможно модифицированной в соответствии с любой окончательной командой кодирования NAME или NAMESPACE.
36.3.5 Если нет атрибута идентификации типа, представленного в результате кодирования типа с этой окончательной командой кодирования, декодер должен предположить, что представлена первая альтернатива выбора.
36.3.6 Присутствие атрибута идентификации типа с непредвиденным значением не должно приводить к ошибке декодирования. Сталкиваясь с таким атрибутом в результате кодирования, декодер должен предположить, что была идентифицирована первая альтернатива выбора, и может проигнорировать атрибут идентификации типа (или передать его приложению). Кроме того, в таких случаях декодер может проигнорировать (или передать приложению) любые другие непредвиденные атрибуты и любые непредвиденные дочерние элементы, встречающиеся после всех ожидаемых дочерних элементов в альтернативе "ExtendedXMLValue".
36.3.7 Все "Атрибуты" ("Attribute"s), которые были бы иначе в "AttributeList" "ExtendedXMLChoiceValue", должны быть добавлены к "AttributeList" включающего элемента и "ExtendedXMLChoiceValue" типа выбора должно быть заменено "ExtendedXMLValue" в "ExtendedXMLChoiceValue".
36.3.8 Если одна или более альтернатив типа выбора с окончательной командой кодирования USE-TYPE относятся к типу выбора с окончательной командой кодирования USE-UNION, атрибут идентификации типа как может опция кодера идентифицировать одну из альтернатив типа выбора с окончательной командой кодирования USE-UNION вместо альтернативы типа выбора с окончательной командой кодирования USE-TYPE.
37.1.1 "UseUnionInstruction":
37.1.2 Продукционное правило "TargetList" определено в 13.2.
37.1.3 Эта команда кодирования оптимизирует результат кодирования типа выбор в тех случаях, когда результат кодирования абстрактных значений каждой альтернативы существенно отличается от результата кодирования абстрактных значений других альтернатив для декодера, определяющего абстрактные значения, представленные анализом кодирования.
37.1.4 Если тип выбора с окончательной командой кодирования USE-UNION не имеет окончательных команд кодирования ATTRIBUTE или UNTAGGED, тогда эта команда кодирования может привести к вставке атрибута идентификации типа в включающий элемент, чтобы идентифицировать альтернативу, которая была закодирована. Если тип выбора имеет окончательную команду кодирования ATTRIBUTE или UNTAGGED, или является компонентом типа последовательность-из или набор-из type командой кодирования LIST, вставка атрибута идентификации типа невозможна.
37.1.5 Эта команда кодирования вызывает удаление начального и конечного тегов результата кодирования альтернативы.
37.2.1 Тип с окончательной командой кодирования USE-UNION должен быть типом выбора.
37.2.2 Все альтернативы типа выбора должны быть посимвольно кодируемыми типами, но не должны быть типами выбора с окончательной командой кодирования USE-UNION.
37.2.3 Если тип выбора имеет окончательную команду кодирования ATTRIBUTE или UNTAGGED или используется в определении типа как компонент типа последовательность-из или набор-из с окончательной командой кодирования LIST, альтернативы типа выбора должны быть ограничены так, чтобы для любой альтернативы все ее абстрактные значения имели, по крайней мере, один результат кодирования (ее "ExtendedXMLValue"), который отличается от всех разрешенных результатов кодирования всех предшествующих по тексту альтернатив.
Примечание - Это требование обусловлено невозможностью вставить атрибут идентификации типа, определяющий альтернативу, которая была выбрана. Без этого требования кодирование не было бы однозначным.
37.2.4 В следующих двух подразделах термин "identifier" означает: идентификатор (возможно модифицированный в соответствии с любой окончательной командой кодирования NAME and NAMESPACE) альтернативы (типа выбора).
37.2.5 Если тип выбора (скажем, тип U), кодируется как альтернатива включающего типа выбора (скажем, типа E), с окончательной командой кодирования USE-TYPE и идентификатор одной из альтернатив E тождествен идентификатору одной из альтернатив U, тогда каждое абстрактное значение этой альтернативы U должно иметь по крайней мере один результат кодирования, который отличается от всех результатов кодирования предшествующих по тексту альтернатив U.
Примечание - Это требование обусловлено невозможностью идентифицировать альтернативу U, так как идентификатор в атрибуте идентификации типа для E просто идентифицировал бы весь U.
37.2.6 Если тип выбора (скажем, U1) кодируется как альтернатива включающего типа выбора (скажем, типа E) с окончательной командой кодирования USE-TYPE и E содержит другой тип выбора (скажем, U2) с командой кодирования USE-UNION, которая следует по тексту за U1 в E, и идентификатор любой из альтернатив U2 тождествен одному из идентификаторов U1, тогда каждое абстрактное значение этой альтернативы U2 должно иметь, по крайней мере, один результат кодирования, который отличается от всех результатов кодирования предшествующих по тексту альтернатив U1.
Примечание - Это требование обусловлено невозможностью идентифицировать альтернативу U2, так как идентификатор в атрибуте идентификации типа для E идентифицировал бы альтернативу в 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.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 " ", никакой атрибут идентификации типа не должен быть добавлен для этой альтернативы.
38.1.1 "WhiteSpaceInstruction":
38.1.2 Продукционное правило "TargetList" определено в 13.2
38.1.3 Эта команда кодирования требует, чтобы декодеры приняли дополнительные опции при кодировании символа SPACE (32) и при использовании начальных и замыкающих "пробелов с переходом" (см. 7.1.5) для кодирования строки символов.
38.2.1 Эта команда кодирования может быть назначена только типу ограниченной строки символов, которая не содержит или вынуждена не содержать следующие символы:
а) ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ (9);
б) ПЕРЕВОД СТРОКИ (10);
в) ПЕРЕВОД КАРЕТКИ (13).
38.2.2 Если команда кодирования имеет опцию COLLAPSE, то она не должна применяться к типу ограниченной строки символов, если только этому типу не запрещено иметь ввод и отслеживание пробела или содержать множественные смежные пробелы для любого абстрактного значения.
Примечание - Признано, что некоторые инструменты АСН.1 не могут статически проверять, что вышеуказанное ограничение будет удовлетворяться для всех абстрактных значений, но соответствующие кодеры не могут генерировать результаты кодирования, в которых "ExtendedXMLValue" нарушает это ограничение.
38.2.3 Тип с этой окончательной командой кодирования не должен также иметь любую из двух окончательных команд кодирования ANY-ELEMENT или BASE64.
Примечание - Нижеперечисленные окончательные команды кодирования никогда не могут появляться с этой окончательной командой кодирования потому, что их применение к этому типу запрещено: ANY-ATTRIBUTES, DECIMAL, EMBED-VALUES, LIST, TEXT, USE-NIL, USE-NUMBER, USE-ORDER, USE-QNAME, USE-TYPE, USE-UNION.
38.2.4 В "TargetList" не должно быть уточняющей информации.
38.3.1 Если используется ключевое слово REPLACE, каждый SPACE (32) может быть заменен в качестве опции кодера единственным символом "пробел с переходом" (см. 7.1.5).
38.3.2 Если используется ключевое слово COLLAPSE, каждый SPACE (32) может быть заменен в качестве опции кодера любым количеством символов "пробел с переходом". Кроме того, один или более таких символов могут быть добавлены к началу или к концу результата кодирования "ExtendedXMLValue" в качестве опции кодера.
39.1 Правила кодирования, определенные в этом Международном стандарте могут использоваться для ссылки и применяться всегда, когда есть необходимость определить однозначное представление строки символов для значений единственного идентифицированного типа АСН.1.
39.2 Следующие значения идентификатора объекта и дескриптора объекта назначаются, чтобы идентифицировать правила кодирования, определенные в настоящем стандарте:
Для BASIC-XER:
{joint-iso-itu-t АСН1 (1) xml-encoding (5) basic (0)}
"Basic XML encoding of a single АСН.1 type"
Для CXER:
{joint-iso-itu-t АСН1 (1) xml-encoding (5) canonical (1)}
"Canonical XML encoding of a single АСН.1 type"
Для EXTENDED-XER:
{joint-iso-itu-t АСН1 (1) xml-encoding (5) extended (2)}
"Extended XML encoding of a single АСН.1 type"
39.3 Следующие значения идентификатора объекта и дескриптора объекта назначаются, чтобы идентифицировать пространство имен АСН.1 (см. 15.9):
(справочное)
Данное приложение иллюстрирует применение базовых и канонических правил XML кодирования, определенных в настоящем стандарте. Приложение содержит XML разметку представления (гипотетической) записи данных о персонале, которая определена с использованием АСН.1.
Структура гипотетической кадровой записи данных описана ниже с использованием АСН.1, определенной в ИСО/МЭК 8824-1. Приведенный пример идентичен описанному в приложении A ИСО/МЭК 8825-1.
Примечание - В этом примере используются теги только для сравнения с примером ранней версии ИСО/МЭК 8824-1. Они не влияют на BASIC-XER, CXER и EXTENDED-XER XML кодирование.
Значение кадровой записи данных John Smith's описано ниже, с использованием основной нотации значений АСН.1:
Представление значения записи, приведенное в А.2 (после применения базовых правил XML кодирования, определенных в настоящем стандарте), показано ниже, предполагается пустой пролог.
Длина этого кодирования в BASIC-XER - 653 октета, без всех разделителей. Для сравнения та же запись, кодированная с UNALIGNED вариантом PER (см. ИСО/МЭК 8825-1) - 84 октета, с ALIGNED вариантом PER - 94 октета, с BER (см. ИСО/МЭК 8825-2) с использованием формы определенной длины - минимум 136 октетов, и с BER с использованием формы неопределенной длины - минимум 161 октет.
А.4 Каноническое XML представление значения записи
Представление значения записи, приведенное в А.3 (после применения канонических правил XML кодирования, определенных в настоящем стандарте), показано ниже:
<PersonnelRecord><name><givenName>John</givenName><initial>P</initial><familyName>Smith</fam
ilyName></name><number>51</number><title>Director</title><dateOfHire>19710
917</dateOfHire><nameOfSpouse><givenName>Mary</givenName><initial>T</initial><familyName>Smith</
familyName></name
OfSpouse><children><ChildInformation><name><givenName>Ralph</givenName><initial>T</initia
l><familyName>Smith</familyName></name><dateOfBirth>19571111</dateOfBirth></ChildInformation
><ChildInformation><name><givenName>Susan</givenName><initial>B</initial><familyName>Jones</
familyName></name><dateOfBirth>19590717</dateOfBirth></ChildInformation></children></Personn
elRecord>
(справочное)
Б.1 Частичное XML содержание
Примечание - Это приложение описывает действия, когда используется MODIFIED-ENCODINGS.
Б.1.1 В следующих подпунктах описывается создание частичного содержания XML элемента. Частичное содержание XML элемента производится в качестве части кодировок, и Б.2 определяет ограничения на частичное содержание XML элемента, которые необходимы для удовлетворения требований 9.2.11. Если спецификация АСН.1 с кодировкой XER инструкций не нарушает эти ограничения, она является допустимой спецификацией и ее допустимость легко проверить. В случае нарушения ограничений спецификация может не нарушать нормативных требований 9.2.11, но проверить это трудно.
Примечание - Ограничения направлены на обеспечение того, чтобы декодер мог легко и однозначно восстановить абстрактные значения, которые были использованы кодером при кодировании.
Б.1.2 Частичное содержание XML элемента состоит из комбинации отдельных XML элементов, предоставляемых [ELEMENT] SEQUENCE, SET, SEQUENCE OF, SET OF или CHOICE, и другими частичными содержаниями XML элемента, предоставляемых [UNTAGGED] SEQUENCE, SET, SEQUENCE OF, SET OF или CHOICE.
Примечание - Граница между частичным содержанием XML элемента в рамках более крупного частичного содержания XML элемента не видна в той кодировке, но может быть определена из схемы АСН.1 и ограничений на имена элементов.
Б.1.3 Возможные варианты частичного содержания XML элемента:
а) единичный элемент XML;
б) группа конкатенации, состоящая из упорядоченной конкатенации нуля, одного или более частичных содержаний XML элементов, в которой некоторое частичное содержание XML элемента может отсутствовать в момент кодировки (представляя отсутствие опционального абстрактного значения);
Примечание - Кодирование типа [UNTAGGED] SEQUENCE или SET будет в общем случае продуцировать группу конкатенации.
в) группа повторений, состоящая из повторения (неограниченного или ограниченного) содержания частичного XML элемента (называемого повторяемый компонент) создаваемого из компонентов SEQUENCE OF или SET OF;
Примечание - Кодирование типа [UNTAGGED] SEQUENCE OF или SET OF будет в целом производить группу повторений.
г) группа альтернатив, включающая одно содержание частичного XML элемента, выбранного из множества альтернативных содержаний частичного XML элемента (из которых точно один присутствует в кодировании).
Примечание - Кодирование типа CHOICE производит альтернативы группы. Каждый альтернативный тип CHOICE производит один из альтернативных содержаний частичного XML элемента для этого типа.
Б.2.1 Только для целей настоящего пункта любые группы повторения рассматриваются как если бы они были факультативными, т.е. могли бы иметь нулевые повторения.
Примечание - Это ограничение не является строго необходимым, если существуют ограничения, которые требуют, по крайней мере, одного повторения соответствующего типа АСН.1.
Б.2.2 Только для целей настоящего пункта требование различия имен элементов можно интерпретировать следующим образом:
а) все сравнения сделаны после применения каких-либо окончательных команд кодирования NAME и NAMESPACE по типу, который генерирует имя;
б) имена уточненного пространства имен отличны от неквалифицированных имен;
в) имена уточненного пространства имен отличаются, если и только если отличаются их unprefixed имена, имена пространства имен или оба варианта одновременно.
Б.2.3 Для любого получающегося содержания частичного XML элемента есть возможные разночтения (и, следовательно, возможность нарушения 9.2.11) если условия, указанные в настоящем подпункте, не выполняются для всех возможных вариантов альтернатив в группе альтернатив, для всех возможных осуществлений выборочности в группе конкатенаций, для всех возможных повторений в группе повторений, и для всех возможных упорядочений кодировки компонентов набора.
Примечание - При чтении и реализации следующих пунктов текст уточнения "для всех возможных" очень важен. Создатели инструментов, определяющих, что является однозначной спецификацией, а что нет, придется анализировать все возможные комбинации вариантов, выборочности, повторений и порядков.
Б.2.4 Определение требования: не должно быть двух соседних содержаний частичных XML элементов с одинаковым именем элемента для первого элемента содержания второго частичного XML элемента и содержание последнего элемент содержание первого частичного XML элемента, если первый частичный XML элемента не требует саморазграничения.
Пример 1 - Содержание частичного XML элемента созданного [UNTAGGED] SEQUENCE, саморазграничено, если оно не заканчивается элементом OPTIONAL.
Пример 2 - Содержание частичного XML элемента созданного [UNTAGGED] SEQUENCE OF, саморазграничено, если оно имеет фиксированное число итераций, которые саморазграниченными. Это означает, в частности, что SEQUENCE OF [UNTAGGED] SEQUENCE OF INTEGER является неоднозначным и нарушает 9.2.11, если число повторений во второй SEQUENCE OF не будет фиксированным.
Пример 3 - Содержание частичного XML элемента, созданного [UNTAGGED] SET, никогда не саморазграничивается, если оно имеет любые дополнительные элементы.
Б.2.5 Альтернативное определение требований: первые XML элементы альтернативного содержания частичного XML элемента в группе альтернатив должны иметь различные имена элементов.
Примечание - Приведенный выше текст не учитывает возможного использования USE-TYPE и USE-UNION, которые выходят за рамки настоящего приложения.
Пример 4 - Кодировка:
на самом деле не неоднозначная EXTENDED-XER кодировка (для декодера человека), но она нарушает вышеуказанные требования, а также нарушает 9.2.11. Это неправильное использование команды кодирования.
Б.2.6 Вспомогательное определение требований: имена XML элементов первого элемента XML всех последовательностей опционального содержания частичного XML элемента плюс, что в следующем/следующих обязательных содержаниях частичного XML элемента должны отличаться.
Примечание - Это означает, в частности, что любое опциональное содержание частичного XML элемента в конце группы, которая повторяется, и опциональное содержание частичного XML элемента в ее начале должны иметь различные имена XML элемента, если количество повторений ограничено максимум 1. Если все содержание частичного XML элемента группы, которая повторяется, не является обязательным, то их имена XML элементов должны быть различны.
Пример 5 - Кодировка:
нарушает требования опционального определения и нарушает 9.2.11. Это неправильное использование команды кодирования.
Б.2.7 Требование определения числа повторений: все группы повторения, имеющие число повторений, которое не закреплено, должны сопровождаться содержанием частичного XML элемента, чей первый XML элемент имеет имя, отличное от имени первого XML элемента содержания частичного XML элемента, которое повторяется.
Пример 6 - Кодировка:
нарушает требование определения числа повторений, а также нарушает 9.2.11. Это неправильное использование команды кодирования. Альтернатива:
является правильным использованием команды кодирования.
Б.2.8 Требование определения набора компонентов: первый XML элемент в содержании частичного XML компонента группы конкатенаций, который кодируется как тип набора, должен иметь имя XML элемента, которое отличается от имени первого XML элемента в содержании частичного XML всех других компонентов.
Пример 7 - Кодировка:
нарушает требования определения компонентов, а также нарушает 9.2.11. Это неправильное использование команды кодирования.
Альтернатива:
является правильным использованием команды кодирования.
(справочное)
КОДИРОВАНИЯ XER
В.1 Введение
В.1.1 Это приложение содержит обучающую информацию и примеры применения команд кодирования XER.
Примечание - Все примеры АСН.1 в этом приложении предполагают использование среды AUTOMATIC TAGS.
В.1.2 Обычно команды кодирования требуется назначать спецификации АСН.1 только в том случае, когда разработчику требуется соответствие фактической формы XML кодирования форме, определенной другими спецификациями или приемлемой для других инструментов XML. В противном случае, может быть использована только АСН.1 (с кодированием BASIC-XER или CXER).
В.1.3 Если АСН.1 используется как нотация определения схемы, то дополнительное использование команд кодирования будет в общем случае обеспечивать более компактное XML кодирование, чем использование только АСН.1, но результаты кодирования будут представлять собой гораздо более длинные тексты, чем при использовании АСН.1 с Правилами Уплотненного Кодирования (PER).
Примечание - Примеры (а также идентификаторы и использованные имена типов), предназначены для иллюстрации особенностей EXTENDED-XER и, в общем, не представляют собой реальных спецификаций.
В.1.4 Команды кодирования XER делятся на две большие категории.
В.1.5 В первую категорию попадают команды кодирования, которые, обычно, полезны при разработке формы документа XML. Они, как правило, допустимы даже при отсутствии DEFAULTS GLOBAL MODIFIED-ENCODINGS. Двумя наиболее полезными из них являются ATTRIBUTE и LIST, и в п. В.2 представлены простые примеры их использования.
В.1.6 Во вторую категорию попадают команды кодирования, которые предназначены для поддержки отображения из W3C XML Schema, специфицированного в ИСО/МЭК 8825-5. Они обычно требуют наличия DEFAULTS GLOBAL MODIFIED-ENCODINGS в разделе управления кодированием, но это не показано в примерах. В этих примерах предполагается, что любой тип ссылки, начинающийся с "XSD.", будет импортирован из приложения A ИСО/МЭК 8825-5. В пункте В.3 приводятся примеры их использования. Эти примеры не являются полными модулями АСН.1 и полными XML-документами: модуль заголовков, как правило, опущен, а также предполагается, что любой XML атрибут, начинающийся с "asn1:", будет управляющим атрибутом, использующим пространство имен asn1 для управляющего атрибута, когда предполагается, что префикс "asn1" уже декларирован. (На практике, если источником результата кодирования является схема W3C XML Schema, более вероятно использование префикса "xsi" с пространством имен XSI).
В.1.7 Почти во всех случаях команды кодирования, снабженные префиксами, используются для ясности, хотя в реальной спецификации большая краткость (и более четкое отделение определения абстрактного синтаксиса от проблем кодировки) будет достигнута за счет использования Раздела Управления Кодированием.
В.2.1 Бейсбольная карточка:
Игнорируя команду кодирования (BASIC-XER), мы получим:
Результат кодирования EXTENDED-XER (с MODIFIED-ENCODINGS) того же значения будет:
В.2.2 Сотрудник
Игнорируя команду кодирования (BASIC-XER), мы получим:
Результат кодирования EXTENDED-XER того же же значения будет:
Используя Раздел Управления Кодированием XER, мы получим:
В.3.1 Использование объединения двух простых типов
Результаты кодирования будут:
В.3.2 Использование атрибута идентификации типов
Результаты кодирования будут:
В.3.3 Использование перечислимых значений
Результаты кодирования будут:
В.3.4 Использование пустого результата кодирования для значений по умолчанию
Результаты кодирования будут:
В.3.5 Использование встроенных значений для уведомления об обязательном платеже
Значения в основой нотации значений АСН.1 будут:
Результат EXTENDED-XER кодирования будет иметь вид:
(справочное)
ИЗМЕНЕНИЯ 1. EXTENDED-XER
Таблица ГА.1
(справочное)
ССЫЛОЧНЫМ НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ
Таблица ГБ.1
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/44/gost_86664.html
На правах рекламы:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||