26 Sequence-of类型标识
26.1 从其他类型定义一个sequence-of类型应该使用SequenceOfType标识。
SequenceOfType ::= SEQUENCE OF Type |SEQUENCE OF NamedType
注- SequenceOfType如果在XML值标识中使用的XML标签名称必须首字母大写,那么使用第一选项。(XML标签名称使用Type的名称构成)
26.2 所有sequence-of类型都包含universal类型标签,值16。
26.3 定义sequence-of类型的值应使用SequenceOfValue标识,或当使用XMLValue的时候,使用XMLSequenceOfValue。表达式如下:
SequenceOfValue ::=
“{” ValueList “}”
| “{” NamedValueList “}”
| “{” “}”
ValueList ::=
Value
| ValueList “,” Value
NamedValueList ::=
NamedValue
| NamedValueList “,” NamedValue
XMLSequenceOfValue ::=
XMLValueList
| XMLDelimitedItemList
| empty
XMLValueList ::=
XMLValueOrEmpty
| XMLValueOrEmpty XMLValueList
XMLValueOrEmpty ::=
XMLValue
| “<” &NonParameterizedTypeName “/>”
XMLDelimitedItemList ::=
XMLDelimitedItem
| XMLDelimitedItemXMLDelimitedItemList
XMLDelimitedItem ::=
“<”&NanParameterizedTypeName “>” XMLValue
“</” &NonParameterizedTypeName “>”
| “<”& identifier “>”XMLValue “</” & identifier “>”
“{””}”或empty标识是在SequenceOfValue或XMLSequenceOfValue为空列表的时候使用。
注- 这些值的顺序在语义学上可能有重大意义。
26.4 如果XMLValue的组件是empty,那么XMLValueOrEmpty的第二选项应该被选择来呈现该组件的值。
注- 这样的情况值存在与SEQUENCE OF NULL。
26.5 XMLValueList或XMLDelimitedItemList表达式的组件类型是表5的第一列的时候,表达式应该与表5的第二列一致。
ASN.1 type |
XML value natation |
BitStringType |
XMLDelimitedItemList |
BooleanType |
见26.6 |
CharacterStringType |
XMLDelimitedItemList |
ChoiceType |
XMLValueList |
EmbeddedPDVType |
XMLDelimitedItemList |
EnumeratedType |
见26.7 |
ExternalType |
XMLDelimitedItemList |
InstanceOfType |
X681 C.9 |
IntegerType |
XMLDelimitedItemList |
IRIType |
XMLDelimitedItemList |
NullType |
XMLValueList |
ObjectClassFieldType |
X681 14.10,14.11 |
ObjectIdentifierType |
XMLDelimitedItemList |
OctetStringType |
XMLDelimitedItemList |
RealType |
XMLDelimitedItemList |
RelativeIRIType |
XMLDelimitedItemList |
RelativeOIDType |
XMLDelimitedItemList |
SequenceType |
XMLDelimitedItemList |
SequenceOfType |
XMLDelimitedItemList |
SetType |
XMLDelimitedItemList |
SetOfType |
XMLDelimitedItemList |
PrefixedType |
见26.10.1 |
UsefulType(GeneralizedTime) |
XMLDelimitedItemList |
UsefulType(UTCTime) |
XMLDelimitedItemList |
UsefulType(ObjectDescriptor) |
XMLDelimitedItemList |
TypeFromObject |
X.681,15.6 |
ValueSetFromObjects |
X.681,15.6 |
26.6 如果EmptyElementBoolean用于表示boolean类型的值,那么XMLValueList应该被使用,否则XMLDelimitedItemList应该使用。
26.7 如果EmptyElementEnumerated用于表示enumerated类型的值,那么XMLValueList应该使用,否则XMLDelimitedItemList应该被使用。
26.8 如果Type的组件是DefinedType,那么决定XMLSequenceOfValue标识类型应该是DefinedType的引用类型。(见14.1)
26.9 XMLDelimitedItem的第二选项只有在SequenceOfType包含一个identifier,且应该是XMLDelimitedItem的identifier。
26.10 如果使用XMLDelimitedItem的第一选项,那么如果sequence-of类型组件(忽视TypePrefix)是typereference或ExternalTypeReference,那么NonParameterizedTypeName应该是typereference或ExternalTypeReference中的typereference;否则它应该是定义在表4中对应组件的内嵌类型的xmlasn1typename。
26.10.1 如果组件的Type是PrefixedType,那么决定XMLSequenceOfValue选项和xmlasn1typename(如果包含)的类型应该是PrefixedType(见31.1.5)的Type。如果它本身是一个PrefixedType,ConstraintedType或SelectionType,那么26.10节应递归调用。
26.10.2 如果组件类型是ConstraintedType,那么决定XMLSequenceOfValue选项和xmlasn1typename(如果包含)的类型的应该是ConstraintedType(见49.1)的类型。如果它本身是一个PrefixedType,ConstraintedType或SelectionType,那么26.10节应递归调用。
26.10.3 如果组件类型是SelectionType,那么决定XMLSequenceOfValue选项和xmlasn1typename(如果包含)标识类型的应该是SelectionType(见30)引用的类型。如果它本身是一个PrefixedType,ConstraintedType,或SelectionType,那么26.10节应递归调用。
26.11 如果使用SequenceOfType的第一选项,那么SequenceOfValue也应该使用第一选项。如果SequenceOfValue的ValueList的每个Value和XMLSequenceOfValue的每个选项的XMLValue应该是SequenceOfType指定的类型。
26.12如果使用SequenceOfType的第二选项,那么SequenceOfValue也应使用第二选型,NamedValueList中的每个NamedValue应该包含值类型由SequenceOfType中的NamedType指定的值。NamedValue中包含的identifier应该是SequenceOfType中的NamedType的identifier。