16 分配类型和值
16.1 typereference应该通过TypeAssignment表达式定义的标识分配类型:
TypeAssignment ::=
typereference
“::=”
Type
typereference不应该是ASN.1保留词(详见12.38)
16.2 vaaluereference应该通过ValueAssignment或XMLValueAssignment表达式定义的标识分配值:
ValueAssignment ::=
valuereference
Type
“::=”
Value
XMLValueAssignment ::=
valuereference
“::=”
XMLTypedValue
XMLTypedValue ::=
“<”&NonParameterizedTypeName”>”
XMLValue
“</”&NonParameterizedTypeName”>”
在ValueAssignment中分配给valuereference的值是Value,受控与Type,并且应该通过Type定义的类型的值的标识(详见16.3)。在XMLValueAssignment中分配给valuereference的值是XMLValue(详见17.7),并且应该通过NonParameterizedTypeName定义的类型的值的标识(详见16.4)。如果这是xmlasn1typename项,那么它用于识别ASN.1内嵌类型对照表4对应行(详见14.3)。
16.3 Value是某类型的值的标识,在17.7中定义。
16.4 如果XMLValue是类型的XMLBuiltinValue标识,那么它是某类型的值的标识(详见17.10)。
16.5 XMLTypedValue的第二个可选项 (使用XML empty-element标签)只可以在XMLValue表达式实例为空的时候使用。
注-如果XMLValue表达式是一个xmlstring,并且只包含空格,它并非是empty,第二可选项不能被使用。
16.6 typereference可以通过ValueSetTypeAssignment表达式定义的标识分配值集:
VauleSetTypeAssignment ::=
typereference
Type
“::=”
ValueSet
该标识给typereference分配了由Type指出的类型的子类型,并且包含由ValueSet指定的明确数量的值。typereference不应该使用ASN.1保留词(详见12.38),并可能作为一个类型被引用。ValueSet在16.7中定义。
16.7 受一些类型控制的值集应该使用ValueSet定义。
ValueSet ::= “{”ElementSetSpecs”}”
值集由值构成,并且其中至少一个由ElementSetSpecs表示(详见50章)。
16.8 将ValueSetTypeAssignment表达式扩充成如下:
typereference
Type
“::=”
“{” ElementSetSpecs ”}”
当使用同样的Type和ElementSetSpecs的规范的时候,为了实现包括应用编码规则的目标,以上表达式等同于以下表达式:
typereference
“::=”
Type
“(” ElementSetSpecs ”)”