19.1.1 В настоящем разделе описывается синтаксис для отображения значений (и номеров тегов), которые кодируются полями одной структуры кодирования (она может быть генерируемой структурой кодирования или любой другой структурой кодирования) в поля другой структуры кодирования.
Примечание - Возможности, которые обеспечиваются при отдельном использовании этой нотации, ограничены (во избежание усложнения). Более сложные отображения могут быть достигнуты с помощью нескольких экземпляров "EncodeByValueMapping" (см. 17.4 и пример в D.1.10.2). Эти механизмы отображения могут быть расширены и обобщены, но это не будет делаться, пока не определены дальнейшие требования пользователей.
19.1.2 В спецификации нотации "EncodeByValueMapping" (см. 17.4.1) структура, к которой разыменует "DefinedOrBuiltinEncodingClass" в "EncodingObjectAssignment" (см. 17.1.1), частью которого она является, называется руководителем источника или классом кодирования источника (в зависимости от контекста). Структура, к которой "DefinedOrBuiltinEncodingClass" в "EncodeByValueMapping" сам разыменуется, называется руководителем цели или классом кодирования цели (в зависимости от контекста).
19.1.3 Если руководитель источника имеет начальный класс в категории "тег", то руководитель цели должен иметь начальный класс в категории "тег", а номер тега класса в руководителе источника отображается в номер тега класса в категории "тег" в руководителе цели. Если класс в категории "тег" в руководителе цели имеет связанный номер тега, то будет ошибка спецификации ECN, когда он отличается от номера тега, отображенного из руководителя источника.
19.1.4 Если руководитель источника не имеет начального класса в категории "тег", то руководитель цели не должен иметь начального класса в категории "тег", но если он его имеет, то в определении руководителя цели должен быть номер тега, связанный с этим тегом.
19.1.5 Влияние наличия начального класса в категории "тег" в руководителях источника или цели полностью определяется в 19.1.3 и 19.1.4, а в последующем тексте возможное присутствие таких классов игнорируется.
19.1.6 Кодирования, определенные для значений, отображенных в класс кодирования цели, становятся кодированиями таких значений в классе кодирования источника.
Примечания
1 Если полная спецификация ECN отображает только некоторые из значений типа АСН.1 в кодирования, то это не будет ошибкой. Это является ограничением, наложенным ECN на значения, которые могут использоваться приложением. Такие ограничения обычно указываются в комментариях или в спецификации АСН.1 или в спецификации ECN (см. 17.4.7).
2 Если полная спецификация ECN отображает два значения в одно и тоже кодирование, образованное единичным объектом кодирования, то это будет ошибкой спецификации ECN. Такие ошибки могут обнаруживаться средствами ECN, но правила их избежания не завершены в настоящем стандарте, а ответственность остается за пользователем ECN.
19.1.7 Продукцией "ValueMapping" является:
ValueMapping ::=
MappingByExplicitValues
| MappingByMatchingFields
| MappingByTransformEncodingObjects
| MappingByAbstractValueOrdering
| MappingByValueDistribution
| MappinglntToBits
Примечание - Перед любым местоположением этого синтаксиса помещается зарезервированное слово MAPPING (в D.1.2.2, D.1.4.2, D.1.10.2, D.2.1.3 и в приложении А приведены примеры определения кодирований с использованием каждого из этих отображений значения).
19.1.8 Продукции "ValueMapping" определяются в следующих разделах:
MappingByExplicitValues | 19.2; |
MappingByMatchingFields | 19.3; |
MappingByTransformEncodingObjects | 19.4; |
MappingByAbstractValueOrdering | 19.5; |
MappingByValueDistribution | 19.6; |
MappinglntToBits | 19.7. |
Примечание - Часто случается, что несколько отображений значения могут использоваться для определения одного и того же кодирования, но некоторые будут давать более ясную и менее многословную спецификацию, чем другие. Разработчикам ECN следует осторожно выбирать форму отображения значений для использования.