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 ”)”