15 支持引用ASN.1组件的标识
15.1 有需求来正式引用ASN.1类型、值等组件。为各种目的,一个实例需要在ASN.1模块中通过书写文本来定义一个特定的类型。本章定义了用于提供这类引用的的标识。
15.2 该标识可以识别任意set或sequence类型(不管是必选还是可选类型)组件。
15.3 ASN.1类型定义的任意部分可以通过使用AbsoluteReference句法结构引用:
AbsoluteReference ::=
“@”ModulueReference
“.”
ItemSpec
ItemSpec ::=
typereference
| ItemId “.” ComponentId
ItemId ::= ItemSpec
ComponentId ::=
identifier
| number
| “*”
注-AbsoluteReference表达式不在本规范的其他地方使用。它只用于15.1规定的目的。
15.4 ModuleIdentifier用于识别一个ASN.1模块(详见13.1)。
15.5 当DefinitiveIdentification的第一、二选项被用于作为ModuleIdentifier的一部分,DefinitiveIdentification通过被引用的名称唯一的识别模块。
15.6 typereference根据ModuleIdentifier引用模块中的任意ASN.1类型。
15.7 每个ItemSpec中的ComponentId根据ItemId来识别类型组件。如果它识别到的组件不是set、sequence、set-of、sequence-of或choice类型,那它应该是最后一个ComponentId。
15.8 如果父ItemId是set或sequence类型,那么可以使用由ComponentId构成的identifier,并且必须是在set或sequence中的ComponentTypeLists的NamedTyped中的一员。如果ItemId用于识别choice类型,它可以被使用,并且必须是choice类型的AlternativeTypeLists中的NamedTyped中的一员。它不可以使用在其他场景中。
15.9 如果ItemId是sequence-of或set-of类型,ComponentId可以是数字类型。该值用于识别sequence-of或set-of的实例数字,值1用于识别类型的第一个实例。值0识别虚拟的整型类型组件(不会在传输中显式出现),它包含了出现在sequence-of或set-of中包含实例的总数。
15.10 ComponentId由*构成只可以在ItemId是sequence-of或set-of的情况下使用。任何与由*构成的ComponentId的情况适用与sequence-of或set-of的任意组件。
注-如以下例子:
M DEFINITIONS ::= BEGIN
T ::= SEQUENCE {
a Boolean,
b SET OF INTEGER
}
END
组件T可以被其他模块(或注释)引用,例如:
-- if(@M.T.b.0 is odd) then:
-- (@M.T.b.*shall be an odd integer)
该注释用于说明如果在b中的组件数量是奇数,那么b的所有组件必须是奇数。