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。