Network Working Group                                            S. Legg
Request for Comments: 4912                                       eB2Bcom
Category: Experimental                                         July 2007
        
Network Working Group                                            S. Legg
Request for Comments: 4912                                       eB2Bcom
Category: Experimental                                         July 2007
        

Abstract Syntax Notation X (ASN.X)

抽象语法符号X(ASN.X)

Status of This Memo

关于下段备忘

This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.

这份备忘录为互联网社区定义了一个实验性协议。它没有规定任何类型的互联网标准。要求进行讨论并提出改进建议。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The IETF Trust (2007).

版权所有(C)IETF信托基金(2007年)。

Abstract

摘要

Abstract Syntax Notation X (ASN.X) is a semantically equivalent Extensible Markup Language (XML) representation for Abstract Syntax Notation One (ASN.1) specifications. ASN.X completely avoids the numerous ambiguities inherent in the ASN.1 language; therefore, specifications written in ASN.X are much easier to parse and manage than original ASN.1 specifications. ASN.X, together with the Robust XML Encoding Rules (RXER), constitutes a schema language for XML documents that offers, through other ASN.1 encoding rules, alternative compact binary encodings for XML instance documents.

抽象语法符号X(ASN.X)是抽象语法符号1(ASN.1)规范的语义等价的可扩展标记语言(XML)表示。ASN.X完全避免了ASN.1语言中固有的大量歧义;因此,用ASN.X编写的规范比原始ASN.1规范更容易解析和管理。ASN.X与健壮的XML编码规则(RXER)一起构成了XML文档的模式语言,它通过其他ASN.1编码规则为XML实例文档提供替代的紧凑二进制编码。

Table of Contents

目录

   1. Introduction ....................................................4
   2. Conventions .....................................................5
   3. General Considerations ..........................................6
      3.1. Annotations ................................................7
   4. ModuleDefinition Translation ....................................8
   5. Translation of Assignments .....................................11
      5.1. Referencing Named Constructs ..............................11
      5.2. Importing Namespaces ......................................12
      5.3. TypeAssignment Translation ................................14
      5.4. ValueAssignment and XMLValueAssignment Translation ........14
      5.5. ValueSetTypeAssignment Translation ........................15
      5.6. ObjectClassAssignment Translation .........................15
      5.7. ObjectAssignment Translation ..............................16
      5.8. ObjectSetAssignment Translation ...........................16
      5.9. ParameterizedAssignment Translation .......................17
   6. Translation of Types ...........................................17
      6.1. Identifier Replacement ....................................17
      6.2. DefinedType Translation ...................................18
      6.3. Translation of Built-in Types .............................20
      6.4. BitStringType Translation .................................21
      6.5. IntegerType Translation ...................................22
      6.6. EnumeratedType Translation ................................24
      6.7. PrefixedType Translation ..................................25
           6.7.1. Short Form TaggedType Translation ..................28
           6.7.2. Long Form TaggedType Translation ...................29
      6.8. SelectionType Translation .................................30
      6.9. InstanceOfType Translation ................................31
      6.10. ObjectClassFieldType Translation .........................31
      6.11. TypeFromObject and ValueSetFromObjects Translation .......32
      6.12. Translation of Combining Types ...........................32
           6.12.1. NamedType Translation .............................32
           6.12.2. SequenceType Translation ..........................36
           6.12.3. SetType Translation ...............................38
           6.12.4. ChoiceType Translation ............................39
           6.12.5. Translation of UNION Types ........................40
           6.12.6. SequenceOfType Translation ........................41
           6.12.7. Translation of LIST Types .........................42
           6.12.8. SetOfType Translation .............................42
           6.12.9. Effect of Insertion Encoding Instructions .........43
      6.13. Translation of Constrained Types .........................43
           6.13.1. Constraint Translation ............................46
           6.13.2. UserDefinedConstraint Translation .................46
           6.13.3. TableConstraint Translation .......................47
           6.13.4. ContentsConstraint Translation ....................49
           6.13.5. ExceptionSpec Translation .........................50
        
   1. Introduction ....................................................4
   2. Conventions .....................................................5
   3. General Considerations ..........................................6
      3.1. Annotations ................................................7
   4. ModuleDefinition Translation ....................................8
   5. Translation of Assignments .....................................11
      5.1. Referencing Named Constructs ..............................11
      5.2. Importing Namespaces ......................................12
      5.3. TypeAssignment Translation ................................14
      5.4. ValueAssignment and XMLValueAssignment Translation ........14
      5.5. ValueSetTypeAssignment Translation ........................15
      5.6. ObjectClassAssignment Translation .........................15
      5.7. ObjectAssignment Translation ..............................16
      5.8. ObjectSetAssignment Translation ...........................16
      5.9. ParameterizedAssignment Translation .......................17
   6. Translation of Types ...........................................17
      6.1. Identifier Replacement ....................................17
      6.2. DefinedType Translation ...................................18
      6.3. Translation of Built-in Types .............................20
      6.4. BitStringType Translation .................................21
      6.5. IntegerType Translation ...................................22
      6.6. EnumeratedType Translation ................................24
      6.7. PrefixedType Translation ..................................25
           6.7.1. Short Form TaggedType Translation ..................28
           6.7.2. Long Form TaggedType Translation ...................29
      6.8. SelectionType Translation .................................30
      6.9. InstanceOfType Translation ................................31
      6.10. ObjectClassFieldType Translation .........................31
      6.11. TypeFromObject and ValueSetFromObjects Translation .......32
      6.12. Translation of Combining Types ...........................32
           6.12.1. NamedType Translation .............................32
           6.12.2. SequenceType Translation ..........................36
           6.12.3. SetType Translation ...............................38
           6.12.4. ChoiceType Translation ............................39
           6.12.5. Translation of UNION Types ........................40
           6.12.6. SequenceOfType Translation ........................41
           6.12.7. Translation of LIST Types .........................42
           6.12.8. SetOfType Translation .............................42
           6.12.9. Effect of Insertion Encoding Instructions .........43
      6.13. Translation of Constrained Types .........................43
           6.13.1. Constraint Translation ............................46
           6.13.2. UserDefinedConstraint Translation .................46
           6.13.3. TableConstraint Translation .......................47
           6.13.4. ContentsConstraint Translation ....................49
           6.13.5. ExceptionSpec Translation .........................50
        
   7. Translation of Values ..........................................51
      7.1. Translation of Literal Values .............................53
      7.2. Translation of Notational Values ..........................54
           7.2.1. DefinedValue Translation ...........................56
           7.2.2. BuiltinValue Translation ...........................57
           7.2.3. ValueFromObject Translation ........................60
           7.2.4. ObjectClassFieldValue Translation ..................60
   8. Translation of Value Sets ......................................61
      8.1. ElementSetSpecs Translation ...............................62
      8.2. ElementSetSpec Translation ................................62
      8.3. SubtypeElements Translation ...............................63
           8.3.1. ValueRange Translation .............................64
           8.3.2. InnerTypeConstraints Translation ...................65
   9. Translation of Object Classes ..................................66
      9.1. DefinedObjectClass Translation ............................66
      9.2. ObjectClassDefn Translation ...............................68
           9.2.1. TypeFieldSpec Translation ..........................68
           9.2.2. FixedTypeValueFieldSpec Translation ................69
           9.2.3. FixedTypeValueSetFieldSpec Translation .............70
           9.2.4. VariableTypeValueFieldSpec Translation .............71
           9.2.5. VariableTypeValueSetFieldSpec Translation ..........73
           9.2.6. FieldName Translation ..............................74
           9.2.7. ObjectFieldSpec Translation ........................75
           9.2.8. ObjectSetFieldSpec Translation .....................76
   10. Translation of Objects ........................................77
      10.1. DefinedObject Translation ................................77
      10.2. ObjectDefn Translation ...................................78
      10.3. ObjectFromObject Translation .............................80
   11. Translation of Object Sets ....................................80
      11.1. DefinedObjectSet Translation .............................81
      11.2. ObjectSetElements Translation ............................82
           11.2.1. ObjectSetFromObjects Translation ..................83
   12. Translation of Information From Objects .......................83
   13. Translation of Parameterized Definitions ......................83
   14. EncodingControlSections Translation ...........................93
   15. Security Considerations .......................................94
   16. Acknowledgements ..............................................94
   17. References ....................................................95
      17.1. Normative References .....................................95
      17.2. Informative References ...................................97
   Appendix A. ASN.1 for ASN.X .......................................95
   Appendix B. ASN.X for ASN.X ......................................115
        
   7. Translation of Values ..........................................51
      7.1. Translation of Literal Values .............................53
      7.2. Translation of Notational Values ..........................54
           7.2.1. DefinedValue Translation ...........................56
           7.2.2. BuiltinValue Translation ...........................57
           7.2.3. ValueFromObject Translation ........................60
           7.2.4. ObjectClassFieldValue Translation ..................60
   8. Translation of Value Sets ......................................61
      8.1. ElementSetSpecs Translation ...............................62
      8.2. ElementSetSpec Translation ................................62
      8.3. SubtypeElements Translation ...............................63
           8.3.1. ValueRange Translation .............................64
           8.3.2. InnerTypeConstraints Translation ...................65
   9. Translation of Object Classes ..................................66
      9.1. DefinedObjectClass Translation ............................66
      9.2. ObjectClassDefn Translation ...............................68
           9.2.1. TypeFieldSpec Translation ..........................68
           9.2.2. FixedTypeValueFieldSpec Translation ................69
           9.2.3. FixedTypeValueSetFieldSpec Translation .............70
           9.2.4. VariableTypeValueFieldSpec Translation .............71
           9.2.5. VariableTypeValueSetFieldSpec Translation ..........73
           9.2.6. FieldName Translation ..............................74
           9.2.7. ObjectFieldSpec Translation ........................75
           9.2.8. ObjectSetFieldSpec Translation .....................76
   10. Translation of Objects ........................................77
      10.1. DefinedObject Translation ................................77
      10.2. ObjectDefn Translation ...................................78
      10.3. ObjectFromObject Translation .............................80
   11. Translation of Object Sets ....................................80
      11.1. DefinedObjectSet Translation .............................81
      11.2. ObjectSetElements Translation ............................82
           11.2.1. ObjectSetFromObjects Translation ..................83
   12. Translation of Information From Objects .......................83
   13. Translation of Parameterized Definitions ......................83
   14. EncodingControlSections Translation ...........................93
   15. Security Considerations .......................................94
   16. Acknowledgements ..............................................94
   17. References ....................................................95
      17.1. Normative References .....................................95
      17.2. Informative References ...................................97
   Appendix A. ASN.1 for ASN.X .......................................95
   Appendix B. ASN.X for ASN.X ......................................115
        
1. Introduction
1. 介绍

A full parser for the Abstract Syntax Notation One (ASN.1) language [X.680][X.680-1][X.681][X.682][X.683] is difficult to implement due to numerous ambiguities in the notation. For example, certain notations for a Value are syntactically indistinguishable from notation for a ValueSet, Object, ObjectSet, DummyReference, or SimpleTableConstraint. An ObjectClassAssignment, ObjectAssignment, or ObjectSetAssignment resembles respectively a TypeAssignment, ValueAssignment, or ValueSetTypeAssignment. A FixedTypeValueFieldSpec or FixedTypeValueSetFieldSpec resembles respectively an ObjectFieldSpec or ObjectSetFieldSpec, and an ObjectClassFieldType resembles InformationFromObjects notation. In general, such ambiguities can only be resolved once the entire specification has been parsed. There are other notations that are not mutually ambiguous but still require several lexical tokens to be scanned before they can be distinguished from each other. The difficulty of parsing ASN.1 is an impediment to its wider adoption.

抽象语法符号一(ASN.1)语言[X.680][X.680-1][X.681][X.682][X.683]的完整解析器很难实现,因为符号中存在许多歧义。例如,值的某些符号在语法上与值集、对象、对象集、DummyReference或SimpleTableConstraint的符号无法区分。ObjectClassAssignment、ObjectAssignment或ObjectSetAssignment分别类似于TypeAssignment、ValueAssignment或ValueSetTypeAssignment。FromValueSpec和FieldSpec ValueSetObjectType表示法分别类似于FieldSpec和FieldSpec ObjectInformation表示法。通常,只有在解析了整个规范之后,才能解决这种歧义。还有其他一些符号并不相互含糊,但仍然需要扫描几个词汇标记,然后才能将它们彼此区分开来。解析ASN.1的困难是其广泛采用的障碍。

This document defines a semantically equivalent Extensible Markup Language (XML) [XML10][XML11] representation for ASN.1 specifications called Abstract Syntax Notation X (ASN.X). An ASN.X module is a well-formed and valid XML document conforming to XML namespaces [XMLNS10][XMLNS11]. ASN.X completely avoids the inherent ambiguities of the ASN.1 language; therefore, specifications written in ASN.X are much easier to parse and manage than original ASN.1 specifications. For example, any conformant XML processor forms the basis of an ASN.1 toolkit.

本文档为ASN.1规范定义了语义等价的可扩展标记语言(XML)[XML10][XML11]表示形式,称为抽象语法符号X(ASN.X)。ASN.X模块是一个格式良好且有效的XML文档,符合XML名称空间[XMLNS10][XMLNS11]。ASN.X完全避免了ASN.1语言固有的歧义;因此,用ASN.X编写的规范比原始ASN.1规范更容易解析和管理。例如,任何一致的XML处理器都构成ASN.1工具包的基础。

ASN.X, together with the Robust XML Encoding Rules (RXER) [RXER], constitutes a schema language for XML documents that offers, through other ASN.1 encoding rules, alternative compact binary encodings for XML instance documents conforming to an ASN.X specification. ASN.X definitions can also incorporate type, element, and attribute definitions from XML Schema [XSD1] documents, RELAX NG [RNG] documents, or Document Type Definitions (DTDs) [XML10][XML11].

ASN.X与健壮的XML编码规则(RXER)[RXER]一起构成了XML文档的模式语言,它通过其他ASN.1编码规则为符合ASN.X规范的XML实例文档提供替代的紧凑二进制编码。ASN.X定义还可以合并XML模式[XSD1]文档、RELAXNG[RNG]文档或文档类型定义(DTD)[XML10][XML11]中的类型、元素和属性定义。

ASN.X is defined in terms of rules for translating from an ASN.1 specification. This does not preclude an ASN.X module being written directly without a pre-existing ASN.1 module; however, such an ASN.X module is considered valid if and only if there exists, in principle, an ASN.1 module that when translated would yield the ASN.X module.

ASN.X是根据ASN.1规范的翻译规则定义的。这并不排除在没有预先存在的ASN.1模块的情况下直接编写ASN.X模块;然而,这样一个ASN.X模块被认为是有效的,当且仅当原则上存在一个ASN.1模块,当转换后将产生ASN.X模块。

The format for ASN.X has also been designed so that the content of an ASN.X module conforms to the RXER encoding of an abstract value of an ASN.1 type, the ModuleDefinition type, presented in Appendix A. This means that it is possible to decode an ASN.X module using an RXER decoder and then re-encode the abstract value (for storage or

ASN.X格式的设计也使得ASN.X模块的内容符合附录A中ASN.1类型(ModuleDefinition类型)抽象值的RXER编码。这意味着可以使用RXER解码器解码ASN.X模块,然后重新编码抽象值(用于存储或存储)

transmission) using any of the other encoding rules for ASN.1. Thus, the "X" in ASN.X can be regarded as standing for either XML or RXER, or more generally, for any set of ASN.1 encoding rules.

传输)使用ASN.1的任何其他编码规则。因此,ASN.X中的“X”可以被视为代表XML或RXER,或者更一般地说,代表任何ASN.1编码规则集。

The ASN.X translation of the ASN.1 module in Appendix A is presented in Appendix B.

附录A中ASN.1模块的ASN.X翻译见附录B。

2. Conventions
2. 习俗

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are to be interpreted as described in BCP 14, RFC 2119 [BCP14]. The key word "OPTIONAL" is exclusively used with its ASN.1 meaning.

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不得”、“应”、“不应”、“建议”和“可”应按照BCP 14、RFC 2119[BCP14]中的说明进行解释。关键词“可选”仅用于其ASN.1含义。

Throughout this document "type" shall be taken to mean an ASN.1 type, and "value" shall be taken to mean an ASN.1 abstract value.

在本文件中,“类型”应指ASN.1类型,“值”应指ASN.1抽象值。

A reference to an ASN.1 production [X.680] (e.g., Type, NamedType) is a reference to the text in an ASN.1 specification corresponding to that production.

对ASN.1产品[X.680](例如,Type,NamedType)的引用是对ASN.1规范中与该产品对应的文本的引用。

The description of the translation of an ASN.1 module into an ASN.X module makes use of definitions from the XML Information Set (Infoset) [INFOSET]. In particular, information item property names follow the Infoset convention of being shown in square brackets, e.g., [local name]. Literal values of Infoset properties are enclosed in double quotes; however, the double quotes are not part of the property values. In the sections that follow, "information item" will be abbreviated to "item", e.g., "element information item" is abbreviated to "element item". Element items will be referred to by their [local name] in angle brackets, e.g., "the <type> element item" means the element item with the [local name] "type". Attribute items will be referred to by their [local name], e.g., "the type attribute item" means the attribute item with the [local name] "type".

将ASN.1模块转换为ASN.X模块的描述使用了XML信息集(Infoset)[Infoset]中的定义。特别是,信息项属性名称遵循信息集惯例,即显示在方括号中,例如[local name]。信息集属性的文字值用双引号括起来;但是,双引号不是属性值的一部分。在接下来的章节中,“信息项”将缩写为“项”,例如,“要素信息项”缩写为“要素项”。元素项将通过尖括号中的[local name]引用,例如,“the<type>Element item”指具有[local name]“type”的元素项。属性项将由其[本地名称]引用,例如,“类型属性项”指具有[本地名称]“类型”的属性项。

This document uses the namespace prefix "asnx:" to stand for the namespace name "urn:ietf:params:xml:ns:asnx", though in practice any valid namespace prefix is permitted in ASN.X.

本文档使用名称空间前缀“asnx:”来表示名称空间名称“urn:ietf:params:xml:ns:asnx”,尽管实际上ASN.X中允许使用任何有效的名称空间前缀。

Encoding instructions [X.680-1] referenced by name in this specification are encoding instructions for RXER [RXEREI]. The associated provisions do not apply to encoding instructions for other encoding rules that happen to have the same name.

本规范中名称引用的编码指令[X.680-1]是RXER[RXEREI]的编码指令。相关规定不适用于碰巧具有相同名称的其他编码规则的编码指令。

Code points for characters [UNICODE] are expressed using the Unicode convention U+n, where n is four to six hexadecimal digits, e.g., the space character is U+0020.

字符[UNICODE]的代码点使用UNICODE约定U+n表示,其中n是四到六个十六进制数字,例如,空格字符是U+0020。

3. General Considerations
3. 一般考虑

ASN.X is defined in terms of rules for translating an ASN.1 module into a synthetic Infoset. This synthetic Infoset is then serialized into a well-formed and valid XML document (the ASN.X module) in the same manner that the synthetic Infoset for a non-canonical RXER encoding is serialized into an XML document (see Section 6.12 of the specification for RXER [RXER]).

ASN.X是根据将ASN.1模块转换为合成信息集的规则定义的。然后,将此合成信息集序列化为格式良好且有效的XML文档(ASN.X模块),其方式与将非规范RXER编码的合成信息集序列化为XML文档的方式相同(参见RXER[RXER]规范第6.12节)。

Aside: The serialization permits CDATA sections, character references, and parsed entity references. However, note that an ASN.X module may be transferred as data in a protocol and that some protocols disallow entity references.

旁白:序列化允许CDATA节、字符引用和解析的实体引用。但是,请注意,ASN.X模块可以在协议中作为数据传输,并且某些协议不允许实体引用。

Apart from the [document element] of the document item for an ASN.X module, the translation of some ASN.1 construct belongs to the [children] or [attributes] of an enclosing element item.

除了ASN.X模块的文档项的[document element]之外,某些ASN.1构造的翻译属于封闭元素项的[children]或[attributes]。

Where the translation of the construct is an element item, it is appended to the [children] of the enclosing element item. Elements MUST be appended to the [children] of the enclosing element item in the order described. Translators MAY add white space character items (i.e., U+0020, U+0009, U+000D and U+000A) to the [children] of any element item (to improve the layout) except element items with the [local name] "literalValue", "fieldName", or "restrictBy".

如果构造的翻译是一个元素项,则将其附加到封闭元素项的[children]。元素必须按所述顺序附加到封闭元素项的[子项]。翻译人员可以将空白字符项(即U+0020、U+0009、U+000D和U+000A)添加到任何元素项的[子项](以改进布局),但带有[本地名称]“literalValue”、“fieldName”或“restrictBy”的元素项除外。

Aside: White space in the [children] of <fieldName> and <restrictBy> element items is explicitly covered under their respective descriptions.

旁白:<fieldName>和<restrictBy>元素项的[children]中的空白在其各自的描述中被明确涵盖。

Where the translation of the construct is an attribute item, it is added to the [attributes] of the enclosing element item. The order of attribute items is not significant. Translators MAY add leading and trailing white space characters to the [normalized value] of any attribute item except an attribute item with the [local name] "literalValue".

如果构造的转换是属性项,则将其添加到封闭元素项的[attributes]。属性项的顺序不重要。翻译人员可以将前导和尾随空格字符添加到任何属性项的[normalized value],但具有[local name]“literalValue”的属性项除外。

Aside: An attribute or element item with the [local name] "literalValue" holds an RXER Infoset translation of an abstract value, and white space characters may be significant in that abstract value. In most cases, RXER itself permits optional leading and trailing white space characters in the Infoset translation.

旁白:带有[local name]“literalValue”的属性或元素项保存抽象值的RXER信息集翻译,并且该抽象值中的空格字符可能很重要。在大多数情况下,RXER本身允许在信息集翻译中使用可选的前导和尾随空格字符。

Translators MAY add comment and processing instruction (PI) items to the [children] of any element item except an element item with the [local name] "literalValue".

翻译人员可以将注释和处理指令(PI)项添加到任何元素项的[子项],但具有[本地名称]“literalValue”的元素项除外。

Aside: In most cases, RXER itself permits comment and PI items in the [children] of the element items with the [local name] "literalValue".

旁白:在大多数情况下,RXER本身允许元素项的[children]中带有[local name]“literalValue”的注释和PI项。

Aside: Note that an ASN.X module may be transferred as data in a protocol and that some protocols disallow processing instructions.

旁白:请注意,ASN.X模块可以在协议中作为数据传输,并且某些协议不允许处理指令。

The [in-scope namespaces] and [namespace attributes] for <literalValue> and <restrictBy> element items are determined according to Section 6.10 of the specification for RXER [RXER]. The [in-scope namespaces] and [namespace attributes] for other element items in the translation are determined according to Section 6.2.2.1 of the specification for RXER.

<literalValue>和<restrictBy>元素项的[in-scope namespaces]和[namespace attributes]根据RXER[RXER]规范第6.10节确定。翻译中其他元素项的[范围内名称空间]和[名称空间属性]根据RXER规范第6.2.2.1节确定。

The [namespace name] of any element item or attribute item generated by the translation from an ASN.1 specification has no value unless specified otherwise. In those cases where the [namespace name] of an element item has a value, the [prefix] of the element item is determined according to Section 6.2.2.2 of the specification for RXER. In those cases where the [namespace name] of an attribute item has a value, the [prefix] of the attribute item is determined according to Section 6.2.3.1 of the specification for RXER.

除非另有规定,否则由ASN.1规范的转换生成的任何元素项或属性项的[namespace name]都没有值。在元素项的[名称空间名称]具有值的情况下,元素项的[前缀]根据RXER规范第6.2.2.2节确定。在属性项的[名称空间名称]具有值的情况下,根据RXER规范第6.2.3.1节确定属性项的[前缀]。

Aside: Non-canonical RXER allows all valid namespace prefixes and all valid placements for their corresponding namespace declaration attributes.

旁白:非规范RXER允许所有有效的名称空间前缀及其对应名称空间声明属性的所有有效位置。

Whenever an element item is added to the [children] of an enclosing element item, the enclosing element item becomes the [parent] of the element item.

每当元素项添加到封闭元素项的[子项]时,封闭元素项将成为元素项的[父项]。

Whenever an attribute item is added to the [attributes] of an element item, the element item becomes the [owner element] of the attribute item. For each attribute item, the [specified] property is set to true, the [attribute type] has no value, and the value of the [references] property is set to unknown.

每当将属性项添加到元素项的[attributes]中时,元素项将成为属性项的[owner element]。对于每个属性项,[specified]属性设置为true,[attribute type]没有值,[references]属性的值设置为unknown。

3.1. Annotations
3.1. 注释

In a number of places, as indicated in subsequent sections, the translator is permitted to add an element item with the [local name] "annotation". The [children] and [attributes] of the <annotation> element item are at the discretion of the translator.

在许多地方,如后续章节所示,允许翻译人员添加带有[本地名称]“注释”的元素项。<annotation>元素项的[children]和[attributes]由翻译人员决定。

Typical uses of the <annotation> element item would be to hold comments from the ASN.1 specification that are normative in nature, e.g., a comment in a user-defined constraint, or to hold directives for an ASN.1 compiler.

<annotation>元素项的典型用途是保存ASN.1规范中具有规范性的注释,例如用户定义约束中的注释,或者保存ASN.1编译器的指令。

Free text or XML comments in an <annotation> element will be preserved in a Canonical RXER (CRXER) encoding [RXER] (because the corresponding ASN.1 type for the <annotation> element item is the Markup type [RXER]), while XML comments outside <annotation> elements will not be preserved.

<annotation>元素中的自由文本或XML注释将保留在规范RXER(CRXER)编码[RXER](因为<annotation>元素项对应的ASN.1类型是标记类型[RXER]),而<annotation>元素之外的XML注释将不被保留。

Vendors using the <annotation> element items to hold ASN.1 compiler directives (as attributes or child elements of the <annotation> element) SHOULD use element or attribute names that are qualified with a namespace name specific to the vendor.

使用<annotation>元素项来保存ASN.1编译器指令(作为<annotation>元素的属性或子元素)的供应商应使用元素或属性名称,这些名称应使用特定于供应商的命名空间名称限定。

4. ModuleDefinition Translation
4. 模块定义翻译

The translation of a ModuleDefinition [X.680] (an ASN.1 module) is an element item with the [local name] "module" and the [namespace name] "urn:ietf:params:xml:ns:asnx" (i.e., an <asnx:module> element item). The element item is typically the [document element] of a document item.

ModuleDefinition[X.680](ASN.1模块)的翻译是一个元素项,具有[本地名称]“模块”和[命名空间名称]“urn:ietf:params:xml:ns:asnx”(即<asnx:module>元素项)。元素项通常是文档项的[文档元素]。

An attribute item with the [local name] "format" and [normalized value] "1.0" MAY be added to the [attributes] of the <asnx:module> element item.

可以将具有[本地名称]“格式”和[规范化值]“1.0”的属性项添加到<asnx:module>元素项的[属性]中。

An ASN.1 module has a schema identity URI if it contains a SCHEMA-IDENTITY encoding instruction, in which case the schema identity URI is the character string specified by the AnyURIValue of the SCHEMA-IDENTITY encoding instruction.

如果ASN.1模块包含schema-identity编码指令,则该模块具有schema-identity URI,在这种情况下,schema-identity URI是schema-identity编码指令的anyuri值指定的字符串。

If the ASN.1 module being translated has a schema identity URI, then an attribute item with the [local name] "schemaIdentity" SHALL be added to the [attributes] of the <asnx:module> element item. The [normalized value] of this attribute item is the schema identity URI of the module.

如果正在翻译的ASN.1模块具有模式标识URI,则应将带有[local name]“schemaIdentity”的属性项添加到<asnx:module>元素项的[attributes]中。此属性项的[normalized value]是模块的模式标识URI。

If the target namespace [RXEREI] for the ASN.1 module is not absent, then an attribute item with the [local name] "targetNamespace" SHALL be added to the [attributes] of the <asnx:module> element item. The [normalized value] of this attribute item is the target namespace of the module.

如果ASN.1模块的目标命名空间[RXEREI]不存在,则应将带有[local name]“targetNamespace”的属性项添加到<asnx:module>元素项的[attributes]中。此属性项的[normalized value]是模块的目标命名空间。

Aside: An ASN.1 module has a target namespace if it contains a TARGET-NAMESPACE encoding instruction.

旁白:如果ASN.1模块包含目标命名空间编码指令,则它具有目标命名空间。

If the ASN.1 module contains a TARGET-NAMESPACE encoding instruction that specifies a Prefix, then an attribute item with the [local name] "targetPrefix" SHALL be added to the [attributes] of the

如果ASN.1模块包含指定前缀的目标名称空间编码指令,则应将带有[本地名称]“targetPrefix”的属性项添加到模块的[属性]中

<asnx:module> element item. The [normalized value] of this attribute item is the character string specified by the NCNameValue in the Prefix.

<asnx:module>元素项。此属性项的[normalized value]是前缀中NCNameValue指定的字符串。

In examples in the remainder of this document, the namespace prefix "tns:" is used to stand for the target namespace of the module being translated.

在本文档其余部分的示例中,名称空间前缀“tns:”用于表示正在翻译的模块的目标名称空间。

An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <asnx:module> element item. The [normalized value] of this attribute item is the modulereference in the ModuleIdentifier in the ModuleDefinition.

带有[本地名称]“名称”的属性项应添加到<asnx:module>元素项的[属性]中。此属性项的[normalized value]是ModuleDefinition中ModuleIdentifier中的modulereference。

If the DefinitiveIdentifier in the ModuleIdentifier in the ModuleDefinition is not empty, then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <asnx:module> element item. The [normalized value] of this attribute item is the RXER character data translation [RXER] of the DefinitiveIdentifier.

如果ModuleDefinition中ModuleIdentifier中的定义标识符不为空,则带有[本地名称]“标识符”的属性项应添加到<asnx:module>元素项的[属性]中。此属性项的[normalized value]是定义标识符的RXER字符数据转换[RXER]。

If the TagDefault in the ModuleDefinition is empty, then an attribute item with the [local name] "tagDefault" and [normalized value] "explicit" SHALL be added to the [attributes] of the <asnx:module> element item.

如果ModuleDefinition中的TagDefault为空,则应将带有[local name]“TagDefault”和[normalized value]“explicit”的属性项添加到<asnx:module>元素项的[attributes]中。

If the TagDefault in the ModuleDefinition is not empty and the first keyword in the TagDefault is not "AUTOMATIC", then an attribute item with the [local name] "tagDefault" SHALL be added to the [attributes] of the <asnx:module> element item. The [normalized value] of this attribute item is the first keyword in the TagDefault with all letters downcased, i.e., "explicit" or "implicit".

如果ModuleDefinition中的TagDefault不为空且TagDefault中的第一个关键字不是“自动”,则应将带有[本地名称]“TagDefault”的属性项添加到<asnx:module>元素项的[属性]中。此属性项的[normalized value]是标记default中的第一个关键字,所有字母都小写,即“explicit”或“implicit”。

If the TagDefault in the ModuleDefinition is not empty and the first keyword in the TagDefault is "AUTOMATIC", then an attribute item with the [local name] "tagDefault" and [normalized value] "automatic" MAY be added to the [attributes] of the <asnx:module> element item.

如果ModuleDefinition中的TagDefault不为空,且TagDefault中的第一个关键字为“自动”,则可将带有[local name]“TagDefault”和[normalized value]“AUTOMATIC”的属性项添加到<asnx:module>元素项的[attributes]中。

If the ExtensionDefault in the ModuleDefinition is not empty, then an attribute item with the [local name] "extensibilityImplied" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <asnx:module> element item.

如果ModuleDefinition中的ExtensionDefault不是空的,则应将具有[local name]“extensibilityImplied”和[normalized value]“true”或“1”的属性项添加到<asnx:module>元素项的[attributes]中。

If the ExtensionDefault in the ModuleDefinition is empty, then an attribute item with the [local name] "extensibilityImplied" and [normalized value] "false" or "0" MAY be added to the [attributes] of the <asnx:module> element item.

如果ModuleDefinition中的ExtensionDefault为空,则可将具有[local name]“extensibilityImplied”和[normalized value]“false”或“0”的属性项添加到<asnx:module>元素项的[attributes]中。

An element item with the [local name] "annotation" MAY be added to the [children] of the <asnx:module> element item.

带有[本地名称]“注释”的元素项可以添加到<asnx:module>元素项的[子项]中。

The translation of each Assignment in the AssignmentList in the ModuleBody in the ModuleDefinition of the module being translated SHALL be appended to the [children] of the <asnx:module> element item.

模块定义中模块正文中AssignmentList中每个任务的翻译应附加到<asnx:module>元素项的[子项]中。

If the EncodingControlSections instance in the ModuleDefinition contains an EncodingControlSection for RXER, then the translation of each NamedType in a TopLevelComponent [RXEREI] nested in the EncodingInstructionAssignmentList SHALL be added to the [children] of the <asnx:module> element item. The relative order of the top-level components [RXEREI] SHOULD be preserved in the translation; however, the translations of the top-level components MAY be interspersed with the translations of the assignments in the AssignmentList.

如果ModuleDefinition中的EncodingControlSections实例包含RXER的EncodingControlSection,则嵌套在EncodingInstructionAssignmentList中的TopLevelComponent[RXEREI]中每个命名类型的翻译应添加到<asnx:module>元素项的[children]中。翻译时应保持顶层组件[RXEREI]的相对顺序;但是,顶级组件的翻译可能与AssignmentList中的工作分配的翻译相互交错。

The translation of the EncodingControlSections instance in the ModuleDefinition of the module being translated SHALL be appended to the [children] of the <asnx:module> element item.

模块定义中EncodingControlSections实例的翻译应附加到<asnx:module>元素项的[子项]中。

Example

实例

      MyModule DEFINITIONS
      IMPLICIT TAGS
      EXTENSIBILITY IMPLIED ::=
      BEGIN
        
      MyModule DEFINITIONS
      IMPLICIT TAGS
      EXTENSIBILITY IMPLIED ::=
      BEGIN
        
      MyType ::= INTEGER
        
      MyType ::= INTEGER
        

ENCODING-CONTROL RXER

编码控制RXER

          SCHEMA-IDENTITY  "http://example.com/id/MyModule"
          TARGET-NAMESPACE "http://example.com/ns/MyModule"
        
          SCHEMA-IDENTITY  "http://example.com/id/MyModule"
          TARGET-NAMESPACE "http://example.com/ns/MyModule"
        

COMPONENT myElement INTEGER

组件myElement整数

END

终止

      <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                   name="MyModule"
                   schemaIdentity="http://example.com/id/MyModule"
                   targetNamespace="http://example.com/ns/MyModule"
                   tagDefault="implicit"
                   extensibilityImplied="true">
        
      <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                   name="MyModule"
                   schemaIdentity="http://example.com/id/MyModule"
                   targetNamespace="http://example.com/ns/MyModule"
                   tagDefault="implicit"
                   extensibilityImplied="true">
        
       <namedType name="MyType" type="asnx:INTEGER"/>
        
       <namedType name="MyType" type="asnx:INTEGER"/>
        
       <element name="myElement" type="asnx:INTEGER"/>
        
       <element name="myElement" type="asnx:INTEGER"/>
        
      </asnx:module>
        
      </asnx:module>
        
5. Translation of Assignments
5. 作业的翻译
5.1. Referencing Named Constructs
5.1. 引用命名构造

An Assignment in ASN.1 associates a reference name with a Type, Value, ValueSet, ObjectClass, Object, or ObjectSet. For ASN.X, an Assignment is also regarded as associating an expanded name [XMLNS10][XMLNS11] with the Type, Value, ValueSet, ObjectClass, Object, or ObjectSet. ASN.X uses these expanded names, rendered as qualified names [XMLNS10][XMLNS11], in place of the references in an ASN.1 specification.

ASN.1中的赋值将引用名称与类型、值、值集、对象类、对象或对象集相关联。对于ASN.X,赋值也被视为将扩展名[XMLNS10][XMLNS11]与类型、值、值集、对象类、对象或对象集相关联。ASN.X使用这些扩展名,作为限定名[XMLNS10][XMLNS11]呈现,以代替ASN.1规范中的引用。

In every case, the local name of the expanded name is the typereference, valuereference, objectclassreference, objectreference, or objectsetreference in the Assignment (i.e., the [normalized value] of the name attribute item in the translation of the Assignment, ignoring white space characters). If the target namespace of the ASN.1 module in which the Assignment is defined is not absent, then the namespace name of the expanded name is that target namespace; otherwise, the namespace name of the expanded name has no value. When the expanded name is rendered as a qualified name, the namespace prefix is determined according to Section 6.7.11.1 of the specification for RXER [RXER].

在每种情况下,扩展名称的本地名称都是赋值中的typereference、valuereference、objectclassreference、objectreference或objectsetreference(即,赋值转换中名称属性项的[normalized value],忽略空白字符)。如果定义赋值的ASN.1模块的目标名称空间不存在,则扩展名称的名称空间名称就是该目标名称空间;否则,扩展名称的命名空间名称没有值。当扩展名呈现为限定名时,根据RXER[RXER]规范第6.7.11.1节确定名称空间前缀。

If an ASN.1 specification contains two or more modules where the target namespace is absent, then there exists the possibility that the expanded names defined by the ASN.X translations of those modules are not distinct. The expanded names are not distinct if:

如果ASN.1规范包含两个或多个没有目标名称空间的模块,那么这些模块的ASN.X翻译所定义的扩展名称可能不明确。在以下情况下,展开的名称不区分:

(1) two or more type or value set assignments define the same typereference, or

(1) 两个或多个类型或值集指定定义相同的typereference,或

(2) two or more value assignments define the same valuereference, or

(2) 两个或多个值指定定义相同的valuereference,或

(3) two or more object class assignments define the same objectclassreference, or

(3) 两个或多个对象类指定定义相同的objectclassreference,或

(4) two or more object assignments define the same objectreference, or

(4) 两个或多个对象指定定义相同的objectreference,或

(5) two or more object set assignments define the same objectsetreference, or

(5) 定义同一对象集或多个对象集的指定

(6) two or more top-level element components [RXEREI] have the same local name, or

(6) 两个或多个顶级元素组件[RXEREI]具有相同的本地名称,或

(7) two or more top-level attribute components [RXEREI] have the same local name.

(7) 两个或多个顶级属性组件[RXEREI]具有相同的本地名称。

If the expanded names are not distinct, then an unambiguous translation into ASN.X does not exist unless each of the modules has a SCHEMA-IDENTITY encoding instruction. Consequently, if two or more modules where the target namespace is absent are being translated into ASN.X and the reference names defined in those modules will not be distinct, then as a local action prior to the translation, a SCHEMA-IDENTITY encoding instruction MUST be added to each of the modules that defines one or more of the indistinct expanded names and that does not already have a SCHEMA-IDENTITY encoding instruction. The character string (a URI) specified by the AnyURIValue of each added SCHEMA-IDENTITY encoding instruction is freely chosen by the translator, subject to the condition that these character strings are distinct [RXEREI].

如果扩展名称不明确,则不存在到ASN.X的明确翻译,除非每个模块都有模式标识编码指令。因此,如果缺少目标名称空间的两个或多个模块正在转换为ASN.X,并且这些模块中定义的引用名称将不明显,那么在转换之前,作为本地操作,必须将模式标识编码指令添加到定义一个或多个模糊扩展名称且尚未具有模式标识编码指令的每个模块中。由每个添加的SCHEMA-IDENTITY编码指令的anyuri值指定的字符串(URI)由转换器自由选择,条件是这些字符串是不同的[RXEREI]。

Aside: Although this means that different translators might produce ASN.X modules that are syntactically different for any given ASN.1 module, those ASN.X modules will be semantically equivalent to each other and to the original ASN.1 module.

旁白:尽管这意味着不同的翻译人员可能会生成任何给定ASN.1模块在语法上不同的ASN.X模块,但这些ASN.X模块在语义上彼此等效,并且与原始ASN.1模块相同。

TARGET-NAMESPACE and SCHEMA-IDENTITY encoding instructions are RECOMMENDED for every ASN.1 module.

对于每个ASN.1模块,建议使用TARGET-NAMESPACE和SCHEMA-IDENTITY编码指令。

5.2. Importing Namespaces
5.2. 导入名称空间

An Assignment is referenced from an ASN.X module if its associated expanded name appears as a qualified name in the [normalized value] of an attribute item with the [local name] "type", "value", "class", "object", or "objectSet". These references are categorized as direct references. An Assignment or top-level component is also referenced from an ASN.X module if its expanded name appears as a qualified name in the [normalized value] of an attribute item with the [local name] "ref". This reference is only categorized as direct if the ref attribute is not the result of the translation of a DefinedType subject to a TYPE-REF encoding instruction or a NamedType subject to an ATTRIBUTE-REF or ELEMENT-REF encoding instruction.

如果分配的相关扩展名在属性项的[normalized value]中以限定名的形式出现,并且带有[local name]“type”、“value”、“class”、“object”或“objectSet”,则从ASN.X模块引用分配。这些引用被归类为直接引用。如果ASN.X模块的扩展名在具有[local name]“ref”的属性项的[normalized value]中显示为限定名,则分配或顶级组件也会从ASN.X模块中引用。如果ref属性不是将DefinedType主题转换为TYPE-ref编码指令的结果,或将NamedType主题转换为attribute-ref或ELEMENT-ref编码指令的结果,则此引用仅被归类为直接引用。

Aside: In the case of an indirect reference, an attribute item with the [local name] "embedded" and [normalized value] "true" or "1" will also be present.

旁白:在间接引用的情况下,还将出现一个具有[local name]“embedded”和[normalized value]“true”或“1”的属性项。

Definition (external module): An external module is any module other than the module being translated and the AdditionalBasicDefinitions module [RXER].

定义(外部模块):外部模块是除正在翻译的模块和AdditionalBasicDefinitions模块[RXER]之外的任何模块。

Aside: The AdditionalBasicDefinitions module is always assumed to be imported, as are all the built-in types and object classes of ASN.1.

旁白:AdditionalBasicDefinitions模块总是假定为导入的,ASN.1的所有内置类型和对象类也是如此。

An element item with the [local name] "import" SHALL be added to the [children] of the <asnx:module> element item for each external module containing Assignments or top-level components that are directly referenced from the ASN.X module. An <import> element item MAY be added to the [children] of the <asnx:module> element item for any other external module.

对于包含ASN.X模块直接引用的分配或顶级组件的每个外部模块,应将带有[本地名称]“导入”的元素项添加到<asnx:module>元素项的[子项]中。对于任何其他外部模块,<import>元素项可以添加到<asnx:module>元素项的[children]。

An attribute item with the [local name] "name" SHOULD be added to the [attributes] of the <import> element item. The [normalized value] of this attribute item is the modulereference in the ModuleIdentifier in the ModuleDefinition of the external module.

应将带有[本地名称]“名称”的属性项添加到<import>元素项的[属性]中。此属性项的[normalized value]是外部模块的ModuleDefinition中ModuleIdentifier中的modulereference。

If the DefinitiveIdentifier in the ModuleIdentifier in the ModuleDefinition of the external module is not empty, then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <import> element item. The [normalized value] of this attribute item is the RXER character data translation of the DefinitiveIdentifier.

如果外部模块ModuleDefinition中ModuleIdentifier中的定义标识符不为空,则应将带有[本地名称]“标识符”的属性项添加到<import>元素项的[属性]中。此属性项的[normalized value]是定义标识符的RXER字符数据转换。

If the external module has a schema identity URI, then an attribute item with the [local name] "schemaIdentity" SHALL be added to the [attributes] of the <import> element item. The [normalized value] of this attribute item is the schema identity URI of the external module.

如果外部模块具有模式标识URI,则应将带有[本地名称]“schemaIdentity”的属性项添加到<import>元素项的[属性]中。此属性项的[normalized value]是外部模块的模式标识URI。

If the target namespace of the external module is not absent, then an attribute item with the [local name] "namespace" SHALL be added to the [attributes] of the <import> element item. The [normalized value] of this attribute item is the target namespace of the external module.

如果外部模块的目标名称空间不存在,则应将带有[本地名称]“名称空间”的属性项添加到<import>元素项的[属性]中。此属性项的[normalized value]是外部模块的目标命名空间。

An attribute item with the [local name] "schemaLocation" MAY be added to the [attributes] of the <import> element item. The [normalized value] of this attribute item is a URI [URI] indicating the physical location of the ASN.X translation of the external module.

带有[local name]“schemaLocation”的属性项可以添加到<import>元素项的[attributes]中。此属性项的[normalized value]是一个URI[URI],指示外部模块的ASN.X转换的物理位置。

The <import> element items MUST follow an <annotation> element item (if present) and MUST precede any other element items in the [children] of the <asnx:module> element item.

<import>元素项必须位于<annotation>元素项(如果存在)之后,并且必须位于<asnx:module>元素项的[children]中的任何其他元素项之前。

Note that because of the way parameterized references are expanded in ASN.X (see Section 13), the modules in the Imports in the ModuleBody in the ModuleDefinition may not correspond exactly to the <import> element items.

请注意,由于参数化引用在ASN.X中展开的方式(参见第13节),ModuleDefinition中ModuleBody中的导入中的模块可能与<import>元素项不完全对应。

5.3. TypeAssignment Translation
5.3. 排版翻译

The translation of a TypeAssignment is an element item with the [local name] "namedType". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedType> element item. The [normalized value] of this attribute item is the typereference on the left-hand side of the assignment.

TypeAssignment的翻译是具有[local name]“namedType”的元素项。带有[本地名称]“名称”的属性项应添加到<namedType>元素项的[属性]中。此属性项的[normalized value]是赋值左侧的typereference。

An element item with the [local name] "annotation" MAY be added to the [children] of the <namedType> element item. The translation of the Type on the right-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedType> element item.

带有[local name]“annotation”的元素项可以添加到<namedType>元素项的[children]。作业右侧类型的翻译应添加到<namedType>元素项的[子项]或[属性]中。

Example

实例

      MyType ::= INTEGER
        
      MyType ::= INTEGER
        
      <namedType name="MyType" type="asnx:INTEGER"/>
        
      <namedType name="MyType" type="asnx:INTEGER"/>
        
5.4. ValueAssignment and XMLValueAssignment Translation
5.4. ValueAssignment和XMLValueAssignment转换

The translation of a ValueAssignment is an element item with the [local name] "namedValue". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedValue> element item. The [normalized value] of this attribute item is the valuereference on the left-hand side of the assignment.

ValueAssignment的翻译是具有[本地名称]“namedValue”的元素项。带有[本地名称]“名称”的属性项应添加到<namedValue>元素项的[属性]中。此属性项的[normalized value]是赋值左侧的valuereference。

An element item with the [local name] "annotation" MAY be added to the [children] of the <namedValue> element item. The translation of the Type on the left-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedValue> element item. The translation of the Value on the right-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedValue> element item.

带有[local name]“annotation”的元素项可以添加到<namedValue>元素项的[children]。作业左侧类型的翻译应添加到<namedValue>元素项的[children]或[attributes]中。赋值右侧值的翻译应添加到<namedValue>元素项的[子项]或[属性]中。

Example

实例

      myValue INTEGER ::= 10
        
      myValue INTEGER ::= 10
        
      <namedValue name="myValue" type="asnx:INTEGER" literalValue="10"/>
        
      <namedValue name="myValue" type="asnx:INTEGER" literalValue="10"/>
        

An XMLValueAssignment is converted into the equivalent ValueAssignment and then translated as a ValueAssignment. Note that the ASN.X representation for a Value is unrelated to XMLTypedValue.

XMLValueAssignment转换为等效的ValueAssignment,然后转换为ValueAssignment。请注意,值的ASN.X表示形式与XMLTypedValue无关。

5.5. ValueSetTypeAssignment Translation
5.5. ValueSetTypeAssignment转换

The translation of a ValueSetTypeAssignment is an element item with the [local name] "namedValueSet". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedValueSet> element item. The [normalized value] of this attribute item is the typereference on the left-hand side of the assignment.

ValueSetTypeAssignment的翻译是具有[本地名称]“namedValueSet”的元素项。带有[本地名称]“名称”的属性项应添加到<namedValueSet>元素项的[属性]中。此属性项的[normalized value]是赋值左侧的typereference。

An element item with the [local name] "annotation" MAY be added to the [children] of the <namedValueSet> element item. The translation of the Type on the left-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedValueSet> element item. The translation of the ValueSet on the right-hand side of the assignment SHALL be added to the [children] of the <namedValueSet> element item.

带有[local name]“annotation”的元素项可以添加到<namedValueSet>元素项的[children]。作业左侧类型的翻译应添加到<namedValueSet>元素项的[children]或[attributes]中。赋值右侧的值集翻译应添加到<namedValueSet>元素项的[子项]中。

Example

实例

      MyValueSet INTEGER ::= { 10 }
        
      MyValueSet INTEGER ::= { 10 }
        
      <namedValueSet name="MyValueSet" type="asnx:INTEGER">
       <valueSet>
        <literalValue>10</literalValue>
       </valueSet>
      </namedValueSet>
        
      <namedValueSet name="MyValueSet" type="asnx:INTEGER">
       <valueSet>
        <literalValue>10</literalValue>
       </valueSet>
      </namedValueSet>
        
5.6. ObjectClassAssignment Translation
5.6. ObjectClassAssignment转换

The translation of an ObjectClassAssignment is an element item with the [local name] "namedClass". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedClass> element item. The [normalized value] of this attribute item is the objectclassreference on the left-hand side of the assignment.

ObjectClassAssignment的转换是具有[本地名称]“namedClass”的元素项。带有[本地名称]“名称”的属性项应添加到<namedClass>元素项的[属性]中。此属性项的[normalized value]是赋值左侧的objectclassreference。

An element item with the [local name] "annotation" MAY be added to the [children] of the <namedClass> element item. The translation of the ObjectClass on the right-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedClass> element item.

带有[local name]“annotation”的元素项可以添加到<namedClass>元素项的[children]。作业右侧的ObjectClass翻译应添加到<namedClass>元素项的[children]或[attributes]中。

Example

实例

      MY-CLASS ::= TYPE-IDENTIFIER
        
      MY-CLASS ::= TYPE-IDENTIFIER
        
      <namedClass name="MY-CLASS" class="asnx:TYPE-IDENTIFIER"/>
        
      <namedClass name="MY-CLASS" class="asnx:TYPE-IDENTIFIER"/>
        
5.7. ObjectAssignment Translation
5.7. 对象赋值转换

The translation of an ObjectAssignment is an element item with the [local name] "namedObject". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedObject> element item. The [normalized value] of this attribute item is the objectreference on the left-hand side of the assignment.

ObjectAssignment的翻译是具有[本地名称]“namedObject”的元素项。带有[本地名称]“名称”的属性项应添加到<namedObject>元素项的[属性]中。此属性项的[normalized value]是赋值左侧的objectreference。

An element item with the [local name] "annotation" MAY be added to the [children] of the <namedObject> element item. The translation of the DefinedObjectClass on the left-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedObject> element item. The translation of the Object on the right-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedObject> element item.

带有[local name]“annotation”的元素项可以添加到<namedObject>元素项的[children]。作业左侧定义对象类的翻译应添加到<namedObject>元素项的[子项]或[属性]中。作业右侧对象的翻译应添加到<namedObject>元素项的[子项]或[属性]中。

Example

实例

      myObject TYPE-IDENTIFIER ::=
          { NULL IDENTIFIED BY { 1 3 14 3 2 26 } }
        
      myObject TYPE-IDENTIFIER ::=
          { NULL IDENTIFIED BY { 1 3 14 3 2 26 } }
        
      <namedObject name="myObject" class="asnx:TYPE-IDENTIFIER">
       <object>
        <field name="id" literalValue="1.3.14.3.2.26"/>
        <field name="Type" type="asnx:NULL"/>
       </object>
      </namedObject>
        
      <namedObject name="myObject" class="asnx:TYPE-IDENTIFIER">
       <object>
        <field name="id" literalValue="1.3.14.3.2.26"/>
        <field name="Type" type="asnx:NULL"/>
       </object>
      </namedObject>
        
5.8. ObjectSetAssignment Translation
5.8. ObjectSetAssignment转换

The translation of an ObjectSetAssignment is an element item with the [local name] "namedObjectSet". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedObjectSet> element item. The [normalized value] of this attribute item is the objectsetreference on the left-hand side of the assignment.

ObjectSetAssignment的转换是具有[本地名称]“namedObjectSet”的元素项。带有[本地名称]“名称”的属性项应添加到<namedObjectSet>元素项的[属性]中。此属性项的[normalized value]是赋值左侧的objectsetreference。

An element item with the [local name] "annotation" MAY be added to the [children] of the <namedObjectSet> element item. The translation of the DefinedObjectClass on the left-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedObjectSet> element item. The translation of the ObjectSet on

带有[本地名称]“注释”的元素项可以添加到<namedObjectSet>元素项的[子项]中。作业左侧的DefinedObjectClass的翻译应添加到<namedObjectSet>元素项的[children]或[attributes]中。上对象集的转换

the right-hand side of the assignment SHALL be added to the [children] or [attributes] of the <namedObjectSet> element item.

赋值的右侧应添加到<namedObjectSet>元素项的[子项]或[属性]中。

Example

实例

      MyObjectSet TYPE-IDENTIFIER ::= { myObject }
        
      MyObjectSet TYPE-IDENTIFIER ::= { myObject }
        
      <namedObjectSet name="MyObjectSet" class="asnx:TYPE-IDENTIFIER">
       <objectSet>
        <object ref="tns:myObject"/>
       </objectSet>
      </namedObjectSet>
        
      <namedObjectSet name="MyObjectSet" class="asnx:TYPE-IDENTIFIER">
       <objectSet>
        <object ref="tns:myObject"/>
       </objectSet>
      </namedObjectSet>
        
5.9. ParameterizedAssignment Translation
5.9. 参数化分配转换

The translation of an ASN.1 specification into ASN.X replaces any reference to a parameterized definition [X.683] with the definition expanded in-line. Consequently, there is no direct translation for a ParameterizedAssignment, though its definition may come into play in the translation of references to the parameterized definition (see Section 13).

将ASN.1规范转换为ASN.X,将任何对参数化定义[X.683]的引用替换为在线扩展的定义。因此,参数化分配没有直接的翻译,尽管其定义可能在参数化定义引用的翻译中起作用(见第13节)。

6. Translation of Types
6. 类型翻译

The rules for translating the different varieties of Type are detailed in this section.

本节详细介绍了不同类型字体的翻译规则。

Note that the notation of ASN.1 is ambiguous where a Type is both prefixed [X.680-1] (e.g., tagged) and constrained. For example, the notation "[0] INTEGER (0..10)" could be interpreted as either a tagged ConstrainedType or a constrained TaggedType. For the purposes of the translation into ASN.X, the constraint is assumed to have higher precedence than the prefix, so the above notation would be taken to be a tagged ConstrainedType.

请注意,ASN.1的表示法是不明确的,其中类型既有前缀[X.680-1](例如,标记)又有约束。例如,符号“[0]整数(0..10)”可以解释为标记的ConstrainedType或约束的TaggedType。为了转换为ASN.X,假设约束的优先级高于前缀,因此上述符号将被视为标记的ConstrainedType。

6.1. Identifier Replacement
6.1. 标识符替换

Various RXER encoding instructions can be used to override an identifier in an ASN.1 specification with an NCName [XMLNS10]. The NCName is given preeminence in the ASN.X representation, and the identifier is not explicitly given if it is algorithmically related to the NCName. The cases where an NCName overrides an identifier are covered individually in other parts of this specification and make use of the following definition.

各种RXER编码指令可用于用NCName[XMLNS10]覆盖ASN.1规范中的标识符。NCName在ASN.X表示中具有优先权,如果标识符在算法上与NCName相关,则不会显式给出。NCName覆盖标识符的情况在本规范的其他部分中单独介绍,并使用以下定义。

Definition (reduction): The reduction of an NCName is the string of characters resulting from the following operations performed in order on the NCName:

定义(缩减):NCName的缩减是按顺序对NCName执行的以下操作所产生的字符串:

(1) replace each full stop ('.', U+002E) and low line ('_', U+005F) character with a hyphen character ('-', U+002D),

(1) 用连字符('-',U+002D)替换每一个句号('',U+002E)和换行符('',U+005F),

(2) remove every character except Latin letters (U+0041-U+005A, U+0061-U+007A), decimal digits (U+0030-U+0039), and hyphens (U+002D),

(2) 删除除拉丁字母(U+0041-U+005A、U+0061-U+007A)、十进制数字(U+0030-U+0039)和连字符(U+002D)以外的所有字符,

(3) remove leading and trailing hyphen characters,

(3) 删除前导和尾随连字符,

(4) replace sequences of two or more hyphen characters with a single hyphen, and

(4) 用一个连字符替换两个或多个连字符的序列,以及

(5) convert the first character to lowercase if it is an uppercase letter.

(5) 如果第一个字符是大写字母,请将其转换为小写。

Aside: If the reduction of an NCName is not the same as the identifier that the NCName replaces, then the identifier will be explicitly given in the translation into ASN.X.

旁白:如果NCName的缩减与NCName替换的标识符不同,那么将在转换为ASN.X时显式给出该标识符。

6.2. DefinedType Translation
6.2. 定义类型翻译

If a Type is a DefinedType in a ReferencedType, then the translation of the Type is the translation of the DefinedType.

如果某个类型是ReferencedType中的DefinedType,则该类型的翻译就是DefinedType的翻译。

If a DefinedType is not a ParameterizedType, ParameterizedValueSetType, or DummyReference and is not subject to a TYPE-REF or REF-AS-TYPE encoding instruction, then the translation of the DefinedType is either the attribute form translation of a type reference, or the element form translation of a type reference.

如果DefinedType不是ParameterizedType、ParameterizedValueSetType或DummyReference,并且不受TYPE-REF或REF-AS-TYPE编码指令的约束,则DefinedType的转换为类型引用的属性形式转换或类型引用的元素形式转换。

The attribute form translation of a type reference is an attribute item with the [local name] "type". The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced type definition (see Section 5.1). The attribute form translation SHALL NOT be used if this expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items (see Section 5.1).

类型引用的属性形式转换是具有[本地名称]“类型”的属性项。该属性项的[normalized value]是引用类型定义的扩展名的限定名(参见第5.1节)。如果此扩展名称与当前模块及其<import>元素项所引用的模块没有区别,则不应使用属性形式转换(参见第5.1节)。

The element form translation of a type reference is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced type definition. If this expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items, then an attribute item with the [local name] "context" SHALL be added to the

类型引用的元素形式转换是具有[本地名称]“类型”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“ref”的属性项应添加到<type>元素项的[属性]中。此属性项的[normalized value]是引用类型定义的扩展名的限定名。如果此扩展名称与当前模块及其<import>元素项引用的模块不明显,则应将带有[本地名称]“context”的属性项添加到

[attributes] of the <type> element item; otherwise, if the module containing the referenced type definition has a schema identity URI, then an attribute item with the [local name] "context" MAY be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is the schema identity URI of the module containing the type definition referenced by the DefinedType.

<type>元素项的[属性];否则,如果包含引用类型定义的模块具有模式标识URI,则可以将具有[local name]“context”的属性项添加到<type>元素项的[attributes]中。此属性项的[normalized value]是包含DefinedType引用的类型定义的模块的架构标识URI。

Aside: If a reference name is not distinct, then the module containing the referenced definition must have a schema identity URI (see Section 5.1).

旁白:如果引用名称不明确,则包含引用定义的模块必须具有模式标识URI(参见第5.1节)。

An attribute item with the [local name] "embedded" and [normalized value] "false" or "0" MAY be added to the [attributes] of the <type> element item.

可以将具有[本地名称]“嵌入”和[标准化值]“假”或“0”的属性项添加到<type>元素项的[属性]中。

The translation of the DefinedType is the same whether the type definition is referenced by a typereference or an ExternalTypeReference.

无论类型定义由typereference还是ExternalTypeReference引用,DefinedType的翻译都是相同的。

If a DefinedType is subject to a TYPE-REF encoding instruction, then the translation of the DefinedType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is the RXER character data translation of the QNameValue in the TYPE-REF encoding instruction. If a ContextParameter is present in the RefParameters in the TYPE-REF encoding instruction, then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is the string value of the AnyURIValue in the ContextParameter. An attribute item with the [local name] "embedded" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <type> element item.

如果DefinedType受TYPE-REF编码指令的约束,则DefinedType的翻译是具有[本地名称]“TYPE”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“ref”的属性项应添加到<type>元素项的[属性]中。此属性项的[normalized value]是TYPE-REF编码指令中QNameValue的RXER字符数据转换。如果TYPE-REF编码指令中的RefParameters中存在ContextParameter,则应将带有[local name]“context”的属性项添加到<TYPE>元素项的[attributes]中。此属性项的[normalized value]是ContextParameter中AnyURIValue的字符串值。具有[本地名称]“嵌入”和[标准化值]“真”或“1”的属性项应添加到<type>元素项的[属性]中。

Aside: The embedded attribute item indicates whether a type is directly referenced as a DefinedType or indirectly referenced through a TYPE-REF encoding instruction. An ASN.1 type can be referenced either way. Type definitions in other schema languages cannot be directly referenced.

旁白:嵌入的属性项指示类型是直接引用为DefinedType还是通过type-REF编码指令间接引用。ASN.1类型可以以任何方式引用。不能直接引用其他架构语言中的类型定义。

If a DefinedType is subject to a REF-AS-TYPE encoding instruction, then the translation of the DefinedType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An attribute item with the [local name] "elementType" SHALL be added to the [attributes] of the <type> element item. The

如果DefinedType受REF-AS-TYPE编码指令的约束,则DefinedType的翻译是带有[local name]“TYPE”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“elementType”的属性项应添加到<type>元素项的[属性]中。这个

[normalized value] of this attribute item is the RXER character data translation of the NameValue in the REF-AS-TYPE encoding instruction. If a ContextParameter is present in the RefParameters in the REF-AS-TYPE encoding instruction, then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is the string value of the AnyURIValue in the ContextParameter.

此属性项的[normalized value]是REF-AS-TYPE编码指令中NameValue的RXER字符数据转换。如果REF-AS-TYPE编码指令中的REF参数中存在ContextParameter,则应将带有[local name]“context”的属性项添加到<TYPE>元素项的[attributes]中。此属性项的[normalized value]是ContextParameter中AnyURIValue的字符串值。

Example

实例

      CHOICE {
          one    Foo,
          two    [RXER:TYPE-REF
                     { namespace-name "http://www.example.com/PO1",
                       local-name "PurchaseOrderType" }]
                 Markup,
          three  [RXER:REF-AS-TYPE "product"
                     CONTEXT "http://www.example.com/inventory"]
                 Markup
      }
        
      CHOICE {
          one    Foo,
          two    [RXER:TYPE-REF
                     { namespace-name "http://www.example.com/PO1",
                       local-name "PurchaseOrderType" }]
                 Markup,
          three  [RXER:REF-AS-TYPE "product"
                     CONTEXT "http://www.example.com/inventory"]
                 Markup
      }
        
      <type>
       <choice>
        <element name="one" type="tns:Foo"/>
        <element name="two" xmlns:po="http://www.example.com/PO1">
         <type ref="po:PurchaseOrderType" embedded="true"/>
        </element>
        <element name="three">
         <type elementType="product"
               context="http://www.example.com/inventory"/>
        </element>
       </choice>
      </type>
        
      <type>
       <choice>
        <element name="one" type="tns:Foo"/>
        <element name="two" xmlns:po="http://www.example.com/PO1">
         <type ref="po:PurchaseOrderType" embedded="true"/>
        </element>
        <element name="three">
         <type elementType="product"
               context="http://www.example.com/inventory"/>
        </element>
       </choice>
      </type>
        

If a DefinedType is a DummyReference, ParameterizedType, or ParameterizedValueSetType, then the translation of the Type is the translation of that DummyReference, ParameterizedType, or ParameterizedValueSetType (see Section 13).

如果定义的类型是DummyReference、ParameterizedType或ParameterizedValueSetType,则该类型的转换是该DummyReference、ParameterizedType或ParameterizedValueSetType的转换(请参阅第13节)。

6.3. Translation of Built-in Types
6.3. 内置类型的翻译

If a Type is a BuiltinType or ReferencedType that is one of the productions in Table 1 in Section 5 of the specification for RXER [RXER], then the translation of the Type is either the attribute form or element form translation of that type.

如果类型是RXER[RXER]规范第5节表1中的产品之一的内置类型或引用类型,则类型的转换为该类型的属性形式或元素形式转换。

The attribute form translation of a Type that is a BuiltinType or ReferencedType that is one of the productions in Table 1 is an attribute item with the [local name] "type". The [normalized value] of this attribute item is a qualified name for the expanded name of the built-in type (see Section 5 of the specification for RXER [RXER]).

作为表1中产品之一的内置类型或ReferencedType的类型的属性形式转换是具有[local name]“Type”的属性项。此属性项的[normalized value]是内置类型扩展名的限定名(请参见RXER[RXER]规范的第5节)。

The element form translation of a Type that is a BuiltinType or ReferencedType that is one of the productions in Table 1 is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is a qualified name for the expanded name of the built-in type.

作为表1中的产品之一的内置类型或ReferencedType的类型的元素形式转换是具有[local name]“Type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“ref”的属性项应添加到<type>元素项的[属性]中。此属性项的[normalized value]是内置类型扩展名的限定名。

Example

实例

BOOLEAN

布尔值

      <type ref="asnx:BOOLEAN"/>
        
      <type ref="asnx:BOOLEAN"/>
        

Usually the translator is free to choose either the attribute form or element form translation for a Type; however, in some contexts attribute forms for a Type are explicitly disallowed.

通常,翻译人员可以自由选择类型的属性形式或元素形式翻译;但是,在某些上下文中,类型的属性形式是明确不允许的。

6.4. BitStringType Translation
6.4. 位字符串类型转换

The translation of a BitStringType with a NamedBitList is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "namedBitList" SHALL be appended to the [children] of the <type> element item. The translation of each NamedBit in the NamedBitList SHALL be appended to the [children] of the <namedBitList> element item.

具有NamedBitList的BitStringType的翻译是具有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“namedBitList”的元素项应附加到<type>元素项的[子项]中。NamedBitList中每个NamedBit的翻译应附加到<NamedBitList>元素项的[子项]中。

The translation of a NamedBit is an element item with the [local name] "namedBit". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <namedBit> element item. If the BitStringType is subject to a VALUES encoding instruction, then the [normalized value] of this attribute item is the replacement name [RXEREI] for the identifier in the NamedBit; otherwise, it is the identifier in the NamedBit. If the BitStringType is subject to a VALUES encoding instruction and the reduction of the replacement name (see Section 6.1) is not the same as the identifier, then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <namedBit>

NamedBit的翻译是一个元素项,其[local name]“NamedBit”。带有[本地名称]“名称”的属性项应添加到<namedBit>元素项的[属性]中。如果BitStringType接受值编码指令,则该属性项的[normalized value]是NamedBit中标识符的替换名[RXEREI];否则,它是NamedBit中的标识符。如果BitStringType接受值编码指令,且替换名称的缩减(见第6.1节)与标识符不同,则应将带有[本地名称]“标识符”的属性项添加到<namedBit>的[属性]中

element item; otherwise, an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <namedBit> element item. The [normalized value] of this attribute item is the identifier in the NamedBit. An attribute item with the [local name] "bit" SHALL be added to the [attributes] of the <namedBit> element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the number or DefinedValue in the NamedBit.

元素项;否则,可以将带有[本地名称]“标识符”的属性项添加到<namedBit>元素项的[属性]中。此属性项的[normalized value]是NamedBit中的标识符。带有[本地名称]“位”的属性项应添加到<namedBit>元素项的[属性]中。此属性项的[normalized value]是NamedBit中数字或DefinedValue的整数值的数字字符串表示形式。

Examples

例子

      BIT STRING { zero(0), one(1), two(2) }
        
      BIT STRING { zero(0), one(1), two(2) }
        
      <type>
       <namedBitList>
        <namedBit name="zero" bit="0"/>
        <namedBit name="one" bit="1"/>
        <namedBit name="two" bit="2"/>
       </namedBitList>
      </type>
        
      <type>
       <namedBitList>
        <namedBit name="zero" bit="0"/>
        <namedBit name="one" bit="1"/>
        <namedBit name="two" bit="2"/>
       </namedBitList>
      </type>
        
      [RXER:VALUES ALL CAPITALIZED, wednesday AS "Midweek"]
          BIT STRING {
              monday(0), tuesday(1), wednesday(2),
              thursday(3), friday(4)
          }
        
      [RXER:VALUES ALL CAPITALIZED, wednesday AS "Midweek"]
          BIT STRING {
              monday(0), tuesday(1), wednesday(2),
              thursday(3), friday(4)
          }
        
      <type>
       <namedBitList>
        <namedBit name="Monday" bit="0"/>
        <namedBit name="Tuesday" bit="1"/>
        <namedBit name="Midweek" identifier="wednesday" bit="2"/>
        <namedBit name="Thursday" bit="3"/>
        <namedBit name="Friday" bit="4"/>
       </namedBitList>
      </type>
        
      <type>
       <namedBitList>
        <namedBit name="Monday" bit="0"/>
        <namedBit name="Tuesday" bit="1"/>
        <namedBit name="Midweek" identifier="wednesday" bit="2"/>
        <namedBit name="Thursday" bit="3"/>
        <namedBit name="Friday" bit="4"/>
       </namedBitList>
      </type>
        
6.5. IntegerType Translation
6.5. 整型翻译

The translation of an IntegerType with a NamedNumberList is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "namedNumberList" SHALL be appended to the [children] of the <type> element item. The translation of each NamedNumber in the NamedNumberList SHALL be appended to the [children] of the <namedNumberList> element item.

具有NamedNumber列表的IntegerType的翻译是具有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“NamedNumber列表”的元素项应附加到<type>元素项的[子项]中。NamedNumber列表中每个NamedNumber的翻译应附加到<NamedNumber列表>元素项的[子项]中。

   The translation of a NamedNumber is an element item with the
   [local name] "namedNumber".  An attribute item with the [local name]
   "name" SHALL be added to the [attributes] of the <namedNumber>
   element item.  If the IntegerType is subject to a VALUES encoding
   instruction, then the [normalized value] of this attribute item is
   the replacement name [RXEREI] for the identifier in the NamedNumber;
   otherwise, it is the identifier in the NamedNumber.  If the
   IntegerType is subject to a VALUES encoding instruction and the
   reduction of the replacement name (see Section 6.1) is not the same
   as the identifier, then an attribute item with the [local name]
   "identifier" SHALL be added to the [attributes] of the <namedNumber>
   element item; otherwise, an attribute item with the [local name]
   "identifier" MAY be added to the [attributes] of the <namedNumber>
   element item.  The [normalized value] of this attribute item is the
   identifier in the NamedNumber.  An attribute item with the
   [local name] "number" SHALL be added to the [attributes] of the
   <namedNumber> element item.  The [normalized value] of this attribute
   item is the digit string representation of the integer value of the
   SignedNumber or DefinedValue in the NamedNumber.
        
   The translation of a NamedNumber is an element item with the
   [local name] "namedNumber".  An attribute item with the [local name]
   "name" SHALL be added to the [attributes] of the <namedNumber>
   element item.  If the IntegerType is subject to a VALUES encoding
   instruction, then the [normalized value] of this attribute item is
   the replacement name [RXEREI] for the identifier in the NamedNumber;
   otherwise, it is the identifier in the NamedNumber.  If the
   IntegerType is subject to a VALUES encoding instruction and the
   reduction of the replacement name (see Section 6.1) is not the same
   as the identifier, then an attribute item with the [local name]
   "identifier" SHALL be added to the [attributes] of the <namedNumber>
   element item; otherwise, an attribute item with the [local name]
   "identifier" MAY be added to the [attributes] of the <namedNumber>
   element item.  The [normalized value] of this attribute item is the
   identifier in the NamedNumber.  An attribute item with the
   [local name] "number" SHALL be added to the [attributes] of the
   <namedNumber> element item.  The [normalized value] of this attribute
   item is the digit string representation of the integer value of the
   SignedNumber or DefinedValue in the NamedNumber.
        

Examples

例子

      INTEGER { nothing(0), a-little(1), a-lot(100) }
        
      INTEGER { nothing(0), a-little(1), a-lot(100) }
        
      <type>
       <namedNumberList>
        <namedNumber name="nothing" number="0"/>
        <namedNumber name="a-little" number="1"/>
        <namedNumber name="a-lot" number="100"/>
       </namedNumberList>
      </type>
        
      <type>
       <namedNumberList>
        <namedNumber name="nothing" number="0"/>
        <namedNumber name="a-little" number="1"/>
        <namedNumber name="a-lot" number="100"/>
       </namedNumberList>
      </type>
        
      [RXER:VALUES ALL CAPITALIZED, very-high AS "DANGEROUS"]
          INTEGER { low(25), medium(50), high(75), very-high(100) }
        
      [RXER:VALUES ALL CAPITALIZED, very-high AS "DANGEROUS"]
          INTEGER { low(25), medium(50), high(75), very-high(100) }
        
      <type>
       <namedNumberList>
        <namedNumber name="Low" number="25"/>
        <namedNumber name="Medium" number="50"/>
        <namedNumber name="High" number="75"/>
        <namedNumber name="DANGEROUS" identifier="very-high"
                     number="100"/>
       </namedNumberList>
      </type>
        
      <type>
       <namedNumberList>
        <namedNumber name="Low" number="25"/>
        <namedNumber name="Medium" number="50"/>
        <namedNumber name="High" number="75"/>
        <namedNumber name="DANGEROUS" identifier="very-high"
                     number="100"/>
       </namedNumberList>
      </type>
        
6.6. EnumeratedType Translation
6.6. 枚举类型翻译

The translation of an EnumeratedType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "enumerated" SHALL be appended to the [children] of the <type> element item. The translation of each EnumerationItem nested in the RootEnumeration in the Enumerations instance in the EnumeratedType SHALL be appended to the [children] of the <enumerated> element item.

EnumeratedType的翻译是具有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“枚举”的元素项应附加到<type>元素项的[子项]中。EnumeratedType中Enumerations实例中RootEnumeration中嵌套的每个EnumerationItem的翻译应附加到<enumerated>元素项的[子项]中。

If an ellipsis ("...") is present in the Enumerations instance, then an element item with the [local name] "extension" SHALL be appended to the [children] of the <enumerated> element item and the translation of the ExceptionSpec (possibly empty) SHALL be added to the [children] of the <extension> element item. If an AdditionalEnumeration is present in the Enumerations instance, then the translation of each EnumerationItem nested in the AdditionalEnumeration SHALL be appended to the [children] of the <extension> element item.

如果枚举实例中存在省略号(“…”),则带有[local name]“extension”的元素项应附加到<enumerated>元素项的[children],并且ExceptionSpec的翻译(可能为空)应添加到<extension>元素项的[children]。如果Enumerations实例中存在AdditionalEnumeration,则AdditionalEnumeration中嵌套的每个EnumerationItem的翻译应附加到<extension>元素项的[子项]中。

The translation of an EnumerationItem is an element item with the [local name] "enumeration".

EnumerationItem的翻译是具有[本地名称]“enumeration”的元素项。

If the EnumerationItem is of the "identifier" form, then an attribute item with the [local name] "name" SHALL be added to the [attributes] of the <enumeration> element item. If the EnumeratedType is subject to a VALUES encoding instruction, then the [normalized value] of this attribute item is the replacement name [RXEREI] for the identifier; otherwise, it is the identifier. If the EnumeratedType is subject to a VALUES encoding instruction and the reduction of the replacement name (see Section 6.1) is not the same as the identifier, then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <enumeration> element item; otherwise, an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <enumeration> element item. The [normalized value] of this attribute item is the identifier.

如果EnumerationItem是“标识符”形式,则带有[本地名称]“名称”的属性项应添加到<enumeration>元素项的[属性]中。如果EnumeratedType服从值编码指令,则该属性项的[normalized value]是标识符的替换名称[RXEREI];否则,它就是标识符。如果EnumeratedType接受值编码指令,且替换名称的缩减(见第6.1节)与标识符不同,则应将带有[本地名称]“标识符”的属性项添加到<enumeration>元素项的[属性]中;否则,可将具有[本地名称]“标识符”的属性项添加到<enumeration>元素项的[属性]中。此属性项的[normalized value]是标识符。

   If the EnumerationItem is of the "NamedNumber" form, then an
   attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <enumeration> element item.  If the
   EnumeratedType is subject to a VALUES encoding instruction, then the
   [normalized value] of this attribute item is the replacement name
   [RXEREI] for the identifier in the NamedNumber; otherwise, it is the
   identifier in the NamedNumber.  If the EnumeratedType is subject to a
   VALUES encoding instruction and the reduction of the replacement name
   is not the same as the identifier, then an attribute item with the
   [local name] "identifier" SHALL be added to the [attributes] of the
        
   If the EnumerationItem is of the "NamedNumber" form, then an
   attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <enumeration> element item.  If the
   EnumeratedType is subject to a VALUES encoding instruction, then the
   [normalized value] of this attribute item is the replacement name
   [RXEREI] for the identifier in the NamedNumber; otherwise, it is the
   identifier in the NamedNumber.  If the EnumeratedType is subject to a
   VALUES encoding instruction and the reduction of the replacement name
   is not the same as the identifier, then an attribute item with the
   [local name] "identifier" SHALL be added to the [attributes] of the
        

<enumeration> element item; otherwise, an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <enumeration> element item. The [normalized value] of this attribute item is the identifier in the NamedNumber. An attribute item with the [local name] "number" SHALL be added to the [attributes] of the <enumeration> element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the SignedNumber or DefinedValue in the NamedNumber.

<枚举>元素项;否则,可将具有[本地名称]“标识符”的属性项添加到<enumeration>元素项的[属性]中。此属性项的[normalized value]是NamedNumber中的标识符。带有[本地名称]“编号”的属性项应添加到<enumeration>元素项的[属性]中。此属性项的[normalized value]是NamedNumber中SignedNumber或DefinedValue的整数值的数字字符串表示形式。

Examples

例子

      ENUMERATED { red(0), green(1), ..., blue(2) }
        
      ENUMERATED { red(0), green(1), ..., blue(2) }
        
      <type>
       <enumerated>
        <enumeration name="red" number="0"/>
        <enumeration name="green" number="1"/>
        <extension>
         <enumeration name="blue" number="2"/>
        </extension>
       </enumerated>
      </type>
        
      <type>
       <enumerated>
        <enumeration name="red" number="0"/>
        <enumeration name="green" number="1"/>
        <extension>
         <enumeration name="blue" number="2"/>
        </extension>
       </enumerated>
      </type>
        

[RXER:VALUES ALL CAPITALIZED, red AS "Crimson"] ENUMERATED { red, yellow, green, blue }

[RXER:值全部大写,红色为“深红色”]枚举{红、黄、绿、蓝}

      <type>
       <enumerated>
        <enumeration name="Crimson" identifier="red"/>
        <enumeration name="Yellow"/>
        <enumeration name="Green"/>
        <enumeration name="Blue"/>
       </enumerated>
      </type>
        
      <type>
       <enumerated>
        <enumeration name="Crimson" identifier="red"/>
        <enumeration name="Yellow"/>
        <enumeration name="Green"/>
        <enumeration name="Blue"/>
       </enumerated>
      </type>
        
6.7. PrefixedType Translation
6.7. 前缀类型翻译

The translation of a PrefixedType [X.680-1] that is a TaggedType is either the short form translation (Section 6.7.1) or long form translation (Section 6.7.2) of the TaggedType.

作为标记类型的前缀类型[X.680-1]的翻译是标记类型的短格式翻译(第6.7.1节)或长格式翻译(第6.7.2节)。

Aside: The short form translation is provided because TaggedType notation is heavily used in existing ASN.1 specifications. The long form translation has the same structure as the translation of an EncodingPrefixedType and can be simplified where there is a series of nested PrefixedType instances.

旁白:之所以提供简体翻译,是因为在现有ASN.1规范中大量使用TaggedType符号。长格式转换与EncodingPrefixedType的转换具有相同的结构,并且可以在存在一系列嵌套的PrefixedType实例的情况下进行简化。

If a PrefixedType is an EncodingPrefixedType and the EncodingReference is RXER, or the EncodingReference is empty and the default encoding reference [X.680-1] for the module is RXER, then the translation of the PrefixedType is the translation of the Type in the EncodingPrefixedType.

如果PrefixedType为EncodingPrefixedType且EncodingReference为RXER,或者EncodingReference为空且模块的默认编码引用[X.680-1]为RXER,则PrefixedType的翻译为EncodingPrefixedType中类型的翻译。

Aside: This is not suggesting that RXER encoding instructions are ignored. Encoding instructions for RXER are not explicitly represented in ASN.X, but rather affect how an ASN.1 module is translated into an ASN.X module (since the content of an ASN.X module is also the RXER encoding of an abstract value of the ModuleDefinition ASN.1 type in Appendix A). The individual effects of RXER encoding instructions on the translation are addressed in other parts of this specification. Encoding instructions for other encoding rules have explicit representations in ASN.X.

旁白:这并不意味着RXER编码指令被忽略。RXER的编码指令在ASN.X中没有明确表示,而是影响ASN.1模块转换为ASN.X模块的方式(因为ASN.X模块的内容也是附录A中模块定义ASN.1类型的抽象值的RXER编码)。RXER编码指令对翻译的个别影响在本规范的其他部分中进行了说明。其他编码规则的编码指令在ASN.X中有显式表示。

If a PrefixedType is an EncodingPrefixedType and the EncodingReference is not RXER, or the EncodingReference is empty and the default encoding reference for the module is not RXER, then the translation of the PrefixedType is an element item with the [local name] "prefixed". The translation of the EncodingPrefix in the EncodingPrefixedType SHALL be added to the [children] of the <prefixed> element item.

如果PrefixedType是EncodingPrefixedType且EncodingReference不是RXER,或者EncodingReference为空且模块的默认编码引用不是RXER,则PrefixedType的翻译是带有[本地名称]“prefixed”的元素项。EncodingPrefixedType中EncodingPrefix的翻译应添加到<prefixed>元素项的[子项]中。

If the EncodingReference of an EncodingPrefix is not empty, then the translation of the EncodingPrefix is an element item with the encodingreference in the EncodingReference as the [local name]. The translation of the EncodingInstruction in the EncodingPrefix SHALL be added to the [children] of this element item.

如果EncodingPrefix的EncodingReference不为空,则EncodingPrefix的翻译是一个元素项,EncodingReference中的EncodingReference作为[local name]。编码前缀中编码指令的翻译应添加到此元素项的[子项]中。

If the EncodingReference of an EncodingPrefix is empty, then the translation of the EncodingPrefix is an element item with the default encoding reference for the module as the [local name]. The translation of the EncodingInstruction in the EncodingPrefix SHALL be added to the [children] of this element item.

如果EncodingPrefix的EncodingReference为空,则EncodingPrefix的翻译是一个元素项,模块的默认编码引用为[local name]。编码前缀中编码指令的翻译应添加到此元素项的[子项]中。

The EncodingInstruction notation is different for each set of encoding instructions, and their translations into ASN.X are specified in separate documents [GSEREIT][XEREIT]. At the time of writing, only three sets of encoding instructions have been defined (for RXER [RXEREI], GSER [GSEREI], and EXTENDED-XER [X.693-1]).

每一组编码指令的编码指令表示法不同,它们到ASN.X的翻译在单独的文档[GSEREIT][XREEIT]中指定。在编写本文时,仅定义了三组编码指令(用于RXER[RXEREI]、GSER[GSEREI]和EXTENDED-XER[X.693-1])。

   If the child <type> element item of a <prefixed> element item has no
   attribute items and has a child <prefixed> element item, then that
   child <type> element item MAY be replaced by the [children] and
   [attributes] of the inner <prefixed> element item.  Note that the
   long form translation of a TaggedType is also eligible for this
        
   If the child <type> element item of a <prefixed> element item has no
   attribute items and has a child <prefixed> element item, then that
   child <type> element item MAY be replaced by the [children] and
   [attributes] of the inner <prefixed> element item.  Note that the
   long form translation of a TaggedType is also eligible for this
        

rewriting step. This rewriting step MAY be applied to the result of a previous rewriting step if the necessary condition still holds.

重写步骤。如果必要条件仍然成立,则此重写步骤可应用于先前重写步骤的结果。

Example

实例

These three definitions are equivalent.

这三个定义是等价的。

      [XER:ATTRIBUTE] [XER:USE-UNION] [GSER:CHOICE-OF-STRINGS] CHOICE {
          one  PrintableString,
          two  UTF8String
      }
        
      [XER:ATTRIBUTE] [XER:USE-UNION] [GSER:CHOICE-OF-STRINGS] CHOICE {
          one  PrintableString,
          two  UTF8String
      }
        
      <type>
       <prefixed>
        <XER><attribute/></XER>
        <type>
         <prefixed>
          <XER><useUnion/></XER>
          <type>
           <prefixed>
            <GSER><choiceOfStrings/></GSER>
            <type>
             <choice>
              <element name="one" type="asnx:PrintableString"/>
              <element name="two" type="asnx:UTF8String"/>
             </choice>
            </type>
           </prefixed>
          </type>
         </prefixed>
        </type>
       </prefixed>
      </type>
        
      <type>
       <prefixed>
        <XER><attribute/></XER>
        <type>
         <prefixed>
          <XER><useUnion/></XER>
          <type>
           <prefixed>
            <GSER><choiceOfStrings/></GSER>
            <type>
             <choice>
              <element name="one" type="asnx:PrintableString"/>
              <element name="two" type="asnx:UTF8String"/>
             </choice>
            </type>
           </prefixed>
          </type>
         </prefixed>
        </type>
       </prefixed>
      </type>
        
      <type>
       <prefixed>
        <XER><attribute/></XER>
        <XER><useUnion/></XER>
        <GSER><choiceOfStrings/></GSER>
        <type>
         <choice>
          <element name="one" type="asnx:PrintableString"/>
          <element name="two" type="asnx:UTF8String"/>
         </choice>
        </type>
       </prefixed>
      </type>
        
      <type>
       <prefixed>
        <XER><attribute/></XER>
        <XER><useUnion/></XER>
        <GSER><choiceOfStrings/></GSER>
        <type>
         <choice>
          <element name="one" type="asnx:PrintableString"/>
          <element name="two" type="asnx:UTF8String"/>
         </choice>
        </type>
       </prefixed>
      </type>
        
6.7.1. Short Form TaggedType Translation
6.7.1. 短格式标记类型翻译

The short form translation of a TaggedType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "tagged" SHALL be appended to the [children] of the <type> element item.

TaggedType的简写形式翻译是一个元素项,带有[本地名称]“type”。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“标记”的元素项应附加到<type>元素项的[子项]中。

If the Class in the Tag in the TaggedType is not empty, then an attribute item with the [local name] "tagClass" SHALL be added to the [attributes] of the <tagged> element item. The [normalized value] of this attribute item is the Class of the Tag with all letters downcased, i.e., either "universal", "application", or "private".

如果TaggedType中标记中的类不是空的,则应将带有[本地名称]“tagClass”的属性项添加到<taged>元素项的[属性]中。此属性项的[normalized value]是标记的类,其所有字母均为小写,即“universal”、“application”或“private”。

An attribute item with the [local name] "number" SHALL be added to the [attributes] of the <tagged> element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the number or DefinedValue in the ClassNumber in the Tag.

带有[本地名称]“编号”的属性项应添加到<taged>元素项的[属性]中。此属性项的[normalized value]是标记中ClassNumber中数字或DefinedValue的整数值的数字字符串表示形式。

If the Tag is immediately followed by the "IMPLICIT" keyword, then an attribute item with the [local name] "tagging" and [normalized value] "implicit" SHALL be added to the [attributes] of the <tagged> element item.

如果标记后面紧跟着“IMPLICIT”关键字,则带有[本地名称]“标记”和[标准化值]“IMPLICIT”的属性项应添加到<taged>元素项的[属性]中。

If the Tag is immediately followed by the "EXPLICIT" keyword, then an attribute item with the [local name] "tagging" and [normalized value] "explicit" SHALL be added to the [attributes] of the <tagged> element item.

如果标记后面紧跟着“EXPLICIT”关键字,则带有[本地名称]“tagging”和[标准化值]“EXPLICIT”的属性项应添加到<taged>元素项的[属性]中。

The translation of the Type in the TaggedType SHALL be added to the [children] or [attributes] of the <tagged> element item.

TaggedType中类型的翻译应添加到<taged>元素项的[子项]或[属性]中。

Examples

例子

[0] INTEGER

[0] 整数

      <type>
       <tagged number="0" type="asnx:INTEGER"/>
      </type>
        
      <type>
       <tagged number="0" type="asnx:INTEGER"/>
      </type>
        

[APPLICATION 10] IMPLICIT BOOLEAN

[APPLICATION 10]隐式布尔值

      <type>
       <tagged tagClass="application" number="10" tagging="implicit"
               type="asnx:BOOLEAN"/>
      </type>
        
      <type>
       <tagged tagClass="application" number="10" tagging="implicit"
               type="asnx:BOOLEAN"/>
      </type>
        
6.7.2. Long Form TaggedType Translation
6.7.2. 长格式标记类型翻译

The long form translation of a TaggedType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "prefixed" SHALL be appended to the [children] of the <type> element item. The translation of the Tag in the TaggedType SHALL be added to the [children] of the <prefixed> element item.

TaggedType的长格式翻译是一个元素项,具有[local name]“type”。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“前缀”的元素项应附加到<type>元素项的[子项]中。TaggedType中标记的翻译应添加到<prefixed>元素项的[子项]中。

The translation of a Tag is an element item with the [local name] "TAG".

标记的翻译是带有[本地名称]“标记”的元素项。

If the Class of the Tag is not empty, then an attribute item with the [local name] "tagClass" SHALL be added to the [attributes] of the <TAG> element item. The [normalized value] of this attribute item is the Class of the Tag with all letters downcased, i.e., either "universal", "application", or "private".

如果标记的类不是空的,则应将带有[本地名称]“tagClass”的属性项添加到<Tag>元素项的[属性]中。此属性项的[normalized value]是标记的类,其所有字母均为小写,即“universal”、“application”或“private”。

An attribute item with the [local name] "number" SHALL be added to the [attributes] of the <TAG> element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the number or DefinedValue in the ClassNumber in the Tag.

带有[本地名称]“编号”的属性项应添加到<TAG>元素项的[属性]中。此属性项的[normalized value]是标记中ClassNumber中数字或DefinedValue的整数值的数字字符串表示形式。

If the Tag is immediately followed by the "IMPLICIT" keyword, then an attribute item with the [local name] "tagging" and [normalized value] "implicit" SHALL be added to the [attributes] of the <TAG> element item.

如果标记后面紧跟着“IMPLICIT”关键字,则带有[本地名称]“标记”和[标准化值]“IMPLICIT”的属性项应添加到<Tag>元素项的[属性]中。

If the Tag is immediately followed by the "EXPLICIT" keyword, then an attribute item with the [local name] "tagging" and [normalized value] "explicit" SHALL be added to the [attributes] of the <TAG> element item.

如果标签后面紧跟着“EXPLICIT”关键字,则带有[本地名称]“tagging”和[标准化值]“EXPLICIT”的属性项应添加到<Tag>元素项的[属性]中。

The translation of the Type in the TaggedType SHALL be added to the [children] or [attributes] of the <prefixed> element item.

TaggedType中类型的翻译应添加到<prefixed>元素项的[children]或[attributes]中。

Examples

例子

[0] INTEGER

[0] 整数

      <type>
       <prefixed type="asnx:INTEGER">
        <TAG number="0"/>
       </prefixed>
      </type>
        
      <type>
       <prefixed type="asnx:INTEGER">
        <TAG number="0"/>
       </prefixed>
      </type>
        

[APPLICATION 10] IMPLICIT BOOLEAN

[APPLICATION 10]隐式布尔值

      <type>
       <prefixed type="asnx:BOOLEAN">
        <TAG tagClass="application" number="10" tagging="implicit"/>
       </prefixed>
      </type>
        
      <type>
       <prefixed type="asnx:BOOLEAN">
        <TAG tagClass="application" number="10" tagging="implicit"/>
       </prefixed>
      </type>
        
6.8. SelectionType Translation
6.8. 选择类型翻译

The translation of a SelectionType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "selection" SHALL be appended to the [children] of the <type> element item.

SelectionType的翻译是具有[本地名称]“类型”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“选择”的元素项应附加到<type>元素项的[子项]中。

The identifier in a SelectionType identifies a NamedType in the definition of the Type in the SelectionType. The translation of that NamedType will be an element item with the [local name] either "attribute", "element", "component", "group", or "member". An attribute item with the same [local name] as the translation of the NamedType SHALL be added to the [attributes] of the <selection> element item. The [normalized value] of this attribute item is a qualified name for the expanded name of the NamedType [RXEREI].

SelectionType中的标识符标识SelectionType中类型定义中的NamedType。该NamedType的翻译将是一个元素项,其[本地名称]为“属性”、“元素”、“组件”、“组”或“成员”。应将与NamedType翻译相同的[本地名称]属性项添加到<selection>元素项的[属性]中。此属性项的[normalized value]是NamedType[RXEREI]扩展名的限定名。

The translation of the Type in the SelectionType SHALL be added to the [children] or [attributes] of the <selection> element item.

SelectionType中类型的翻译应添加到<selection>元素项的[children]或[attributes]中。

Examples

例子

field1 < MyChoiceType

字段1<MyChoiceType

      <type>
       <selection element="field1" type="tns:MyChoiceType"/>
      </type>
        
      <type>
       <selection element="field1" type="tns:MyChoiceType"/>
      </type>
        
      field2 < CHOICE {
          field2  [RXER:ATTRIBUTE][RXER:NAME AS "field-two"] INTEGER
      }
        
      field2 < CHOICE {
          field2  [RXER:ATTRIBUTE][RXER:NAME AS "field-two"] INTEGER
      }
        
      <type>
       <selection attribute="field-two">
        <type>
         <choice>
          <attribute name="field-two" identifier="field2"
                     type="asnx:INTEGER"/>
         </choice>
        </type>
        
      <type>
       <selection attribute="field-two">
        <type>
         <choice>
          <attribute name="field-two" identifier="field2"
                     type="asnx:INTEGER"/>
         </choice>
        </type>
        
       </selection>
      </type>
        
       </selection>
      </type>
        
6.9. InstanceOfType Translation
6.9. 实例类型转换

The translation of an InstanceOfType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "instanceOf" SHALL be appended to the [children] of the <type> element item. The translation of the DefinedObjectClass in the InstanceOfType SHALL be added to the [children] or [attributes] of the <instanceOf> element item.

InstanceOfType的翻译是具有[本地名称]“类型”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“instanceOf”的元素项应附加到<type>元素项的[子项]中。InstanceOfType中DefinedObjectClass的翻译应添加到<instanceOf>元素项的[children]或[attributes]中。

Example

实例

INSTANCE OF TYPE-IDENTIFIER

类型标识符的实例

      <type>
       <instanceOf class="asnx:TYPE-IDENTIFIER"/>
      </type>
        
      <type>
       <instanceOf class="asnx:TYPE-IDENTIFIER"/>
      </type>
        
6.10. ObjectClassFieldType Translation
6.10. ObjectClassFieldType转换

The translation of an ObjectClassFieldType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "fromClass" SHALL be appended to the [children] of the <type> element item. The translation of the DefinedObjectClass in the ObjectClassFieldType SHALL be added to the [children] or [attributes] of the <fromClass> element item. The translation of the FieldName (see Section 9.2.6) in the ObjectClassFieldType SHALL be added to the [children] or [attributes] of the <fromClass> element item.

ObjectClassFieldType的翻译是具有[本地名称]“类型”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“fromClass”的元素项应附加到<type>元素项的[子项]中。ObjectClassFieldType中定义的Object类的翻译应添加到<fromClass>元素项的[children]或[attributes]中。ObjectClassFieldType中字段名的翻译(见第9.2.6节)应添加到<fromClass>元素项的[children]或[attributes]中。

Example

实例

OPERATION.&Linked.&ArgumentType

操作类型。&链接类型。&参数类型

      <type>
       <fromClass class="tns:OPERATION"
                  fieldName="Linked/ArgumentType"/>
      </type>
        
      <type>
       <fromClass class="tns:OPERATION"
                  fieldName="Linked/ArgumentType"/>
      </type>
        
6.11. TypeFromObject and ValueSetFromObjects Translation
6.11. TypeFromObject和ValueSetFromObjects转换

The translation of a TypeFromObject or ValueSetFromObjects is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "fromObjects" SHALL be appended to the [children] of the <type> element item.

TypeFromObject或ValueSetFromObjects的翻译是带有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“fromObjects”的元素项应附加到<type>元素项的[子项]中。

The translation of the ReferencedObjects instance in the TypeFromObject or ValueSetFromObjects SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

TypeFromObject或ValueSetFromObjects中ReferencedObjects实例的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

The translation of the FieldName in the TypeFromObject or ValueSetFromObjects SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

TypeFromObject或ValueSetFromObjects中字段名的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

Example

实例

invertMatrix.&Errors.&errorCode

反转矩阵、错误和错误代码

      <type>
       <fromObjects object="tns:invertMatrix"
                    fieldName="Errors/errorCode"/>
      </type>
        
      <type>
       <fromObjects object="tns:invertMatrix"
                    fieldName="Errors/errorCode"/>
      </type>
        
6.12. Translation of Combining Types
6.12. 组合类型的翻译

This section details the translation of the ASN.1 combining types: SET, SEQUENCE, CHOICE, SET OF, and SEQUENCE OF. The combining type definitions all make use of the NamedType notation.

本节详细介绍了ASN.1组合类型的翻译:SET、SEQUENCE、CHOICE、SET of和SEQUENCE of。组合类型定义都使用NamedType表示法。

6.12.1. NamedType Translation
6.12.1. 命名类型翻译

A NamedType is translated in one of three ways depending on the context. These are the normal translation, the member translation, and the item translation. These translations are not interchangeable. One of the three will be explicitly invoked as part of the translation of an enclosing combining type.

NamedType根据上下文以三种方式之一进行翻译。这些是正常翻译、成员翻译和项目翻译。这些译文不能互换。三者之一将作为封闭组合类型转换的一部分被显式调用。

The normal translation of a NamedType is an element item with the [local name] determined as follows:

NamedType的正常翻译是一个元素项,其[local name]确定如下:

(1) if the NamedType is subject to an ATTRIBUTE or ATTRIBUTE-REF encoding instruction, or subject to a COMPONENT-REF encoding instruction that references a top-level NamedType that is subject to an ATTRIBUTE encoding instruction, then the [local name] is "attribute",

(1) 如果NamedType受属性或属性-REF编码指令约束,或受引用受属性编码指令约束的顶级NamedType的COMPONENT-REF编码指令约束,则[本地名称]为“属性”,

(2) else if the NamedType is subject to a GROUP encoding instruction, then the [local name] is "group",

(2) 否则,如果NamedType受组编码指令的约束,则[本地名称]为“组”,

(3) else if the NamedType is subject to a SIMPLE-CONTENT encoding instruction, then the [local name] is "simpleContent",

(3) 否则,如果NamedType服从简单内容编码指令,则[local name]为“simpleContent”,

(4) otherwise, the [local name] is "element" or "component" (translator's choice).

(4) 否则,[本地名称]为“元素”或“组件”(译者选择)。

Aside: The local names "element" and "component" are synonymous. The "component" alternative is offered for specifying applications that don't use RXER (except for the ASN.X specification itself, of course), where referring to parts of an encoding as elements would seem incongruous.

旁白:本地名称“元素”和“组件”是同义的。“组件”替代方案用于指定不使用RXER的应用程序(当然ASN.X规范本身除外),其中将部分编码称为元素似乎不一致。

The member translation of a NamedType is an element item with the [local name] "member".

NamedType的成员翻译是具有[本地名称]“成员”的元素项。

The item translation of a NamedType is an element item with the [local name] "item".

NamedType的项翻译是具有[本地名称]“项”的元素项。

Aside: A Namedtype for which the member or item translation is invoked will never be subject to an ATTRIBUTE, ATTRIBUTE-REF, COMPONENT-REF, GROUP, SIMPLE-CONTENT, or TYPE-AS-VERSION encoding instruction. These encoding instructions are also mutually exclusive [RXEREI].

旁白:为其调用成员或项转换的Namedtype永远不会受属性、属性-REF、组件-REF、组、简单内容或类型为版本编码指令的约束。这些编码指令也是互斥的[RXEREI]。

An element item with the [local name] "annotation" MAY be added to the [children] of the <attribute>, <element>, <component>, <group>, <item>, <member>, or <simpleContent> element item.

带有[本地名称]“注释”的元素项可以添加到<attribute>、<element>、<component>、<group>、<item>、<member>或<simpleContent>元素项的[子项]中。

If a NamedType is subject to a TYPE-AS-VERSION encoding instruction, then an attribute item with the [local name] "typeAsVersion" and [normalized value] "true" or "1" SHALL be added to the <element> or <component> element item. For the normal translation, if a NamedType is not subject to an ATTRIBUTE, ATTRIBUTE-REF, COMPONENT-REF, GROUP, SIMPLE-CONTENT, or TYPE-AS-VERSION encoding instruction, then an attribute item with the [local name] "typeAsVersion" and [normalized value] "false" or "0" MAY be added to the <element> or <component> element item.

如果NamedType受TYPE-AS-VERSION编码指令的约束,则应将具有[本地名称]“typeAsVersion”和[规范化值]“true”或“1”的属性项添加到<element>或<component>元素项中。对于正常翻译,如果NamedType不受属性、属性-REF、组件-REF、组、简单内容或类型-版本编码指令的约束,则可将具有[本地名称]“typeAsVersion”和[规范化值]“false”或“0”的属性项添加到<element>或<COMPONENT>元素项中。

   For the normal, member, and item translations, if a NamedType is not
   subject to an ATTRIBUTE-REF, COMPONENT-REF, ELEMENT-REF, or
   REF-AS-ELEMENT encoding instruction, then an attribute item with the
   [local name] "name" SHALL be added to the [attributes] of the
   <attribute>, <element>, <component>, <group>, <item>, <member>, or
        
   For the normal, member, and item translations, if a NamedType is not
   subject to an ATTRIBUTE-REF, COMPONENT-REF, ELEMENT-REF, or
   REF-AS-ELEMENT encoding instruction, then an attribute item with the
   [local name] "name" SHALL be added to the [attributes] of the
   <attribute>, <element>, <component>, <group>, <item>, <member>, or
        

<simpleContent> element item. The [normalized value] of this attribute item is the local name of the expanded name of the NamedType [RXEREI].

<simpleContent>元素项。此属性项的[normalized value]是NamedType[RXEREI]的扩展名称的本地名称。

Aside: If there are no NAME, ATTRIBUTE-REF, COMPONENT_REF, ELEMENT-REF or REF-AS-ELEMENT encoding instructions, then the local name of the expanded name of a NamedType is the same as the identifier in the NamedType.

旁白:如果没有名称、ATTRIBUTE-REF、COMPONENT_-REF、ELEMENT-REF或REF-AS-ELEMENT编码指令,则NamedType扩展名称的本地名称与NamedType中的标识符相同。

If the reduction of the local name (an NCName) of the expanded name of a NamedType is not the same as the identifier in the NamedType, then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <attribute>, <element>, <component>, <group>, <item>, <member>, or <simpleContent> element item; otherwise, an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the aforementioned element item. The [normalized value] of this attribute item is the identifier in the NamedType.

如果NamedType扩展名的本地名(NCName)的缩减与NamedType中的标识符不同,则应将带有[本地名]“标识符”的属性项添加到<attribute>、<element>、<component>、<group>、<item>、<member>或<simpleContent>元素项的[属性]中;否则,可将具有[本地名称]“标识符”的属性项添加到前述元素项的[属性]中。此属性项的[normalized value]是NamedType中的标识符。

Aside: The identifier attribute is not contingent on there being a name attribute. That is, an element item can have an identifier attribute item without having a name attribute item.

旁白:identifier属性并不取决于是否存在name属性。也就是说,元素项可以具有标识符属性项,而不具有名称属性项。

   If a NamedType is subject to a COMPONENT-REF encoding instruction,
   then an attribute item with the [local name] "ref" SHALL be added to
   the [attributes] of the <attribute>, <element>, or <component>
   element item.  The [normalized value] of this attribute item is a
   qualified name for the expanded name of the top-level NamedType
   referenced by the encoding instruction.  If the expanded name is not
   distinct with respect to the current module and the modules
   referenced by its <import> element items (see Section 5.1), then an
   attribute item with the [local name] "context" SHALL be added to the
   [attributes] of the <attribute>, <element>, or <component> element
   item; otherwise, if the module containing the referenced top-level
   NamedType has a schema identity URI, then an attribute item with the
   [local name] "context" MAY be added to the [attributes] of the
   <attribute>, <element>, or <component> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the referenced top-level NamedType.
        
   If a NamedType is subject to a COMPONENT-REF encoding instruction,
   then an attribute item with the [local name] "ref" SHALL be added to
   the [attributes] of the <attribute>, <element>, or <component>
   element item.  The [normalized value] of this attribute item is a
   qualified name for the expanded name of the top-level NamedType
   referenced by the encoding instruction.  If the expanded name is not
   distinct with respect to the current module and the modules
   referenced by its <import> element items (see Section 5.1), then an
   attribute item with the [local name] "context" SHALL be added to the
   [attributes] of the <attribute>, <element>, or <component> element
   item; otherwise, if the module containing the referenced top-level
   NamedType has a schema identity URI, then an attribute item with the
   [local name] "context" MAY be added to the [attributes] of the
   <attribute>, <element>, or <component> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the referenced top-level NamedType.
        

Aside: If an expanded name is not distinct, then the module containing the referenced top-level NamedType must have a schema identity URI (see Section 5.1).

旁白:如果扩展名称不明确,则包含引用的顶级NamedType的模块必须具有架构标识URI(请参阅第5.1节)。

If a NamedType is subject to a COMPONENT-REF encoding instruction, then an attribute item with the [local name] "embedded" and [normalized value] "false" or "0" MAY be added to the [attributes] of the <attribute>, <element>, or <component> element item.

如果NamedType受COMPONENT-REF编码指令的约束,则具有[local name]“embedded”和[normalized value]“false”或“0”的属性项可以添加到<attribute>、<element>或<COMPONENT>元素项的[attributes]中。

If a NamedType is subject to an ATTRIBUTE-REF or ELEMENT-REF encoding instruction, then an attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <attribute>, <element>, or <component> element item. The [normalized value] of this attribute item is the RXER character data translation of the QNameValue in the encoding instruction. An attribute item with the [local name] "embedded" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <attribute>, <element>, or <component> element item.

如果命名类型受ATTRIBUTE-REF或ELEMENT-REF编码指令的约束,则带有[本地名称]“REF”的属性项应添加到<ATTRIBUTE>、<ELEMENT>或<component>元素项的[属性]中。此属性项的[normalized value]是编码指令中QNameValue的RXER字符数据转换。应在<attribute>、<element>或<component>元素项的[attributes]中添加具有[本地名称]“嵌入式”和[标准化值]“true”或“1”的属性项。

If a NamedType is subject to a REF-AS-ELEMENT encoding instruction, then an attribute item with the [local name] "elementType" SHALL be added to the [attributes] of the <element> or <component> element item. The [normalized value] of this attribute item is the RXER character data translation of the NameValue in the REF-AS-ELEMENT encoding instruction. If a Namespace is present in the REF-AS-ELEMENT encoding instruction, then an attribute item with the [local name] "namespace" SHALL be added to the [attributes] of the <element> or <component> element item. The [normalized value] of this attribute item is the string value of the AnyURIValue in the Namespace.

如果NamedType受REF-AS-ELEMENT编码指令的约束,则带有[本地名称]“elementType”的属性项应添加到<ELEMENT>或<component>元素项的[属性]中。此属性项的[normalized value]是REF-AS-ELEMENT编码指令中NameValue的RXER字符数据转换。如果REF-AS-ELEMENT编码指令中存在名称空间,则应将带有[本地名称]“名称空间”的属性项添加到<ELEMENT>或<component>元素项的[属性]中。此属性项的[normalized value]是命名空间中AnyURIValue的字符串值。

If a ContextParameter is present in the RefParameters in the ATTRIBUTE-REF, ELEMENT-REF, or REF-AS-ELEMENT encoding instruction, then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <attribute>, <element>, or <component> element item. The [normalized value] of this attribute item is the string value of the AnyURIValue in the ContextParameter.

如果ATTRIBUTE-REF、ELEMENT-REF或REF-AS-ELEMENT编码指令中的REF参数中存在ContextParameter,则应将带有[本地名称]“上下文”的属性项添加到<ATTRIBUTE>、<ELEMENT>或<component>元素项的[属性]中。此属性项的[normalized value]是ContextParameter中AnyURIValue的字符串值。

If a NamedType is subject to both an ATTRIBUTE encoding instruction and a VERSION-INDICATOR encoding instruction, then an attribute item with the [local name] "versionIndicator" and [normalized value] "true" or "1" SHALL be added to the <attribute> element item. If a NamedType is subject to an ATTRIBUTE encoding instruction and not subject to a VERSION-INDICATOR encoding instruction, then an attribute item with the [local name] "versionIndicator" and [normalized value] "false" or "0" MAY be added to the <attribute> element item.

如果NamedType同时受属性编码指令和版本指示符编码指令的约束,则应将带有[本地名称]“versionIndicator”和[规范化值]“true”或“1”的属性项添加到<ATTRIBUTE>元素项中。如果NamedType受属性编码指令约束,而不受版本指示符编码指令约束,则可将具有[local name]“versionIndicator”和[normalized value]“false”或“0”的属性项添加到<ATTRIBUTE>元素项中。

If a NamedType is not subject to an ATTRIBUTE-REF, COMPONENT-REF, ELEMENT-REF, or REF-AS-ELEMENT encoding instruction, then the translation of the Type in the NamedType SHALL be added to the [children] or [attributes] of the <attribute>, <element>, <component>, <group>, <item>, <member>, or <simpleContent> element item.

如果NamedType不受ATTRIBUTE-REF、COMPONENT-REF、ELEMENT-REF或REF-AS-ELEMENT编码指令的约束,则NamedType中类型的翻译应添加到<ATTRIBUTE>、<ELEMENT>、<COMPONENT>、<group>、<item>、<member>或<simpleContent>元素项的[children]或[attributes]中。

If a NamedType is subject to an ATTRIBUTE-REF, COMPONENT-REF, ELEMENT-REF, or REF-AS-ELEMENT encoding instruction, then the translation of each EncodingPrefix (Section 6.7) and Tag (Section 6.7.2) textually within the NamedType SHALL be added in order to the [children] of the <attribute>, <element>, or <component> element item.

如果命名类型受ATTRIBUTE-REF、COMPONENT-REF、ELEMENT-REF或REF-AS-ELEMENT编码指令的约束,则应将命名类型中每个编码前缀(第6.7节)和标记(第6.7.2节)的文本翻译添加到<ATTRIBUTE>、<ELEMENT>或<COMPONENT>元素项的[子项]中。

Example

实例

      CHOICE {
          one    INTEGER,
          two    [RXER:ATTRIBUTE] BOOLEAN,
          three  [RXER:ATTRIBUTE-REF
                     { namespace-name "http://www.example.com/schema",
                       local-name "foo" }]
                 UTF8String,
          bar    [RXER:ELEMENT-REF
                     { namespace-name "http://www.example.com/schema",
                       local-name "bar" }]
                 Markup,
          five   [0] [RXER:REF-AS-ELEMENT "product"
                     CONTEXT "http://www.example.com/inventory"]
                 Markup,
          six    [RXER:GROUP] MySequence
      }
        
      CHOICE {
          one    INTEGER,
          two    [RXER:ATTRIBUTE] BOOLEAN,
          three  [RXER:ATTRIBUTE-REF
                     { namespace-name "http://www.example.com/schema",
                       local-name "foo" }]
                 UTF8String,
          bar    [RXER:ELEMENT-REF
                     { namespace-name "http://www.example.com/schema",
                       local-name "bar" }]
                 Markup,
          five   [0] [RXER:REF-AS-ELEMENT "product"
                     CONTEXT "http://www.example.com/inventory"]
                 Markup,
          six    [RXER:GROUP] MySequence
      }
        
      <type>
       <choice xmlns:ex="http://www.example.com/schema">
        <element name="one" type="asnx:INTEGER"/>
        <attribute name="two" type="asnx:BOOLEAN"/>
        <attribute ref="ex:foo" identifier="three" embedded="true"/>
        <element ref="ex:bar" embedded="true"/>
        <element elementType="product"
                 context="http://www.example.com/inventory"
                 identifier="five">
         <TAG number="0"/>
        </element>
        <group name="six" type="tns:MySequence"/>
       </choice>
      </type>
        
      <type>
       <choice xmlns:ex="http://www.example.com/schema">
        <element name="one" type="asnx:INTEGER"/>
        <attribute name="two" type="asnx:BOOLEAN"/>
        <attribute ref="ex:foo" identifier="three" embedded="true"/>
        <element ref="ex:bar" embedded="true"/>
        <element elementType="product"
                 context="http://www.example.com/inventory"
                 identifier="five">
         <TAG number="0"/>
        </element>
        <group name="six" type="tns:MySequence"/>
       </choice>
      </type>
        
6.12.2. SequenceType Translation
6.12.2. 序列类型转换

The translation of a SequenceType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "sequence" SHALL be appended to the [children] of the <type> element item. The

SequenceType的翻译是具有[本地名称]“类型”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“序列”的元素项应附加到<type>元素项的[子项]中。这个

translation of each ComponentType nested in the ComponentTypeList in the initial RootComponentTypeList, if present, SHALL be appended to the [children] of the <sequence> element item.

嵌套在初始根ComponentTypeList的ComponentTypeList中的每个ComponentType的翻译(如果存在)应附加到<sequence>元素项的[子项]中。

If an ExtensionAndException is present, then an element item with the [local name] "extension" SHALL be appended to the [children] of the <sequence> element item. If an ExceptionSpec is present in the ExtensionAndException, then the translation of the ExceptionSpec (possibly empty) SHALL be added to the [children] of the <extension> element item.

如果存在ExtensionAndException,则带有[local name]“extension”的元素项应附加到<sequence>元素项的[children]。如果ExtensionAndException中存在ExceptionSpec,则ExceptionSpec的翻译(可能为空)应添加到<extension>元素项的[子项]中。

If an ExtensionAdditions instance is present, then the translation of each ExtensionAdditionGroup or ComponentType nested in the ExtensionAdditions (if any) SHALL be appended to the [children] of the <extension> element item.

如果存在ExtensionAdditions实例,则ExtensionAdditions(如果有)中嵌套的每个ExtensionAdditionGroup或ComponentType的翻译应附加到<extension>元素项的[子项]中。

If an ExtensionEndMarker is present, then the translation of each ComponentType nested in the ComponentTypeList in the final RootComponentTypeList SHALL be appended to the [children] of the <sequence> element item.

如果存在ExtensiondMarker,则嵌套在最终根ComponentTypeList中的ComponentTypeList中的每个ComponentType的翻译应附加到<sequence>元素项的[子项]中。

The translation of an ExtensionAdditionGroup is an element item with the [local name] "extensionGroup". If the VersionNumber in the ExtensionAdditionGroup is not empty, then an attribute item with the [local name] "version" SHALL be added to the [attributes] of the <extensionGroup> element item. The [normalized value] of this attribute item is the number in the VersionNumber. The translation of each ComponentType nested in the ExtensionAdditionGroup SHALL be appended to the [children] of the <extensionGroup> element item.

ExtensionAdditionGroup的翻译是一个元素项,其[local name]“extensionGroup”。如果ExtensionAdditionGroup中的VersionNumber不为空,则应将带有[local name]“version”的属性项添加到<extensionGroup>元素项的[attributes]中。此属性项的[normalized value]是VersionNumber中的数字。ExtensionAdditionGroup中嵌套的每个ComponentType的翻译应附加到<extensionGroup>元素项的[子项]中。

The translation of a ComponentType of the "NamedType" form is the normal translation of the NamedType.

“NamedType”形式的ComponentType的翻译是NamedType的正常翻译。

The translation of a ComponentType of the "NamedType OPTIONAL" form is an element item with the [local name] "optional". The normal translation of the NamedType SHALL be added to the [children] of the <optional> element item.

带有“可选项”的“可选项类型”的“可选项类型”为“可选项类型”。NamedType的正常翻译应添加到<optional>元素项的[子项]中。

The translation of a ComponentType of the "NamedType DEFAULT Value" form is an element item with the [local name] "optional". The normal translation of the NamedType SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the Value SHALL be added to the [children] or [attributes] of the <default> element item.

“NamedType默认值”表单的ComponentType的翻译是一个元素项,其[本地名称]“可选”。NamedType的正常翻译应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。值的翻译应添加到<default>元素项的[子项]或[属性]中。

The translation of a ComponentType of the "COMPONENTS OF Type" form is an element item with the [local name] "componentsOf". The translation of the Type SHALL be added to the [children] or [attributes] of the <componentsOf> element item.

“ComponentType”形式的ComponentType的翻译是一个带有[本地名称]“componentsOf”的元素项。类型的翻译应添加到<componentsOf>元素项的[子项]或[属性]中。

Example

实例

      SEQUENCE {
          one    INTEGER,
          two    [RXER:ATTRIBUTE] BOOLEAN OPTIONAL,
          ...,
          [[ 2:
              four   NULL
          ]],
          COMPONENTS OF MySequence,
          ...,
          three   PrintableString DEFAULT "third"
      }
        
      SEQUENCE {
          one    INTEGER,
          two    [RXER:ATTRIBUTE] BOOLEAN OPTIONAL,
          ...,
          [[ 2:
              four   NULL
          ]],
          COMPONENTS OF MySequence,
          ...,
          three   PrintableString DEFAULT "third"
      }
        
      <type>
       <sequence>
        <element name="one" type="asnx:INTEGER"/>
        <optional>
         <attribute name="two" type="asnx:BOOLEAN"/>
        </optional>
        <extension>
         <extensionGroup version="2">
          <element name="four" type="asnx:NULL"/>
         </extensionGroup>
         <componentsOf type="tns:MySequence"/>
        </extension>
        <optional>
         <element name="three" type="asnx:PrintableString"/>
         <default literalValue="third"/>
        </optional>
       </sequence>
      </type>
        
      <type>
       <sequence>
        <element name="one" type="asnx:INTEGER"/>
        <optional>
         <attribute name="two" type="asnx:BOOLEAN"/>
        </optional>
        <extension>
         <extensionGroup version="2">
          <element name="four" type="asnx:NULL"/>
         </extensionGroup>
         <componentsOf type="tns:MySequence"/>
        </extension>
        <optional>
         <element name="three" type="asnx:PrintableString"/>
         <default literalValue="third"/>
        </optional>
       </sequence>
      </type>
        
6.12.3. SetType Translation
6.12.3. 集类型转换

The translation of a SetType follows the same procedure as the translation of a SequenceType except that SetType replaces SequenceType, "SET" replaces "SEQUENCE", and the [local name] "set" is used instead of "sequence".

SetType的翻译与SequenceType的翻译遵循相同的程序,不同之处在于SetType替换SequenceType,“SET”替换“SEQUENCE”,并且使用[本地名称]“SET”代替“SEQUENCE”。

6.12.4. ChoiceType Translation
6.12.4. 选择类型翻译

The translation of a ChoiceType that is not subject to a UNION encoding instruction is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "choice" SHALL be appended to the [children] of the <type> element item. The normal translation of each NamedType nested in the AlternativeTypeList in the RootAlternativeTypeList in the AlternativeTypeLists SHALL be appended to the [children] of the <choice> element item.

不受联合编码指令约束的ChoiceType的翻译是具有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[local name]“choice”的元素项应附加到<type>元素项的[children]。AlternativeTypeList中根AlternativeTypeList中的AlternativeTypeList中嵌套的每个NamedType的正常翻译应附加到<choice>元素项的[子项]中。

If an ExtensionAndException is present in the AlternativeTypeLists, then an element item with the [local name] "extension" SHALL be appended to the [children] of the <choice> element item. If an ExceptionSpec is present in the ExtensionAndException, then the translation of the ExceptionSpec (possibly empty) is added to the [children] of the <extension> element item.

如果可选类型列表中存在ExtensionAndException,则带有[local name]“extension”的元素项应附加到<choice>元素项的[children]。如果ExtensionAndException中存在ExceptionSpec,则ExceptionSpec的翻译(可能为空)将添加到<extension>元素项的[children]。

If an ExtensionAdditionAlternatives instance is present in the AlternativeTypeLists, then the translation of each ExtensionAdditionAlternativesGroup or NamedType (if any) nested in the ExtensionAdditionAlternatives SHALL be appended in order to the [children] of the <extension> element item. The normal translation of the NamedType is used.

如果可选类型列表中存在ExtensionAdditionalInternationations实例,则应将嵌套在ExtensionAdditionalInternationations中的每个ExtensionAdditionalInternativeGroup或NamedType(如果有)的翻译附加到<extension>元素项的[子项]中。使用NamedType的正常翻译。

The translation of an ExtensionAdditionAlternativesGroup is an element item with the [local name] "extensionGroup". If the VersionNumber in the ExtensionAdditionAlternativesGroup is not empty, then an attribute item with the [local name] "version" SHALL be added to the [attributes] of the <extensionGroup> element item. The [normalized value] of this attribute item is the number in the VersionNumber. The normal translation of each NamedType nested in the AlternativeTypeList in the ExtensionAdditionAlternativesGroup SHALL be appended to the [children] of the <extensionGroup> element item.

ExtensionAdditionalInternativeGroup的翻译是一个元素项,其[local name]“extensionGroup”。如果ExtensionAdditionalInternativeGroup中的VersionNumber不为空,则应将带有[local name]“version”的属性项添加到<extensionGroup>元素项的[attributes]中。此属性项的[normalized value]是VersionNumber中的数字。extensionAdditionalInternativeGroup中AlternativeTypeList中嵌套的每个NamedType的正常翻译应附加到<extensionGroup>元素项的[子项]中。

Example

实例

      CHOICE {
          one  INTEGER,
          two  [RXER:NAME AS "Two"] BOOLEAN,
          ...,
          [[ 2:
              three  NULL
          ]],
          four  PrintableString,
          ...
      }
        
      CHOICE {
          one  INTEGER,
          two  [RXER:NAME AS "Two"] BOOLEAN,
          ...,
          [[ 2:
              three  NULL
          ]],
          four  PrintableString,
          ...
      }
        
      <type>
       <choice>
        <element name="one" type="asnx:INTEGER"/>
        <element name="Two" type="asnx:BOOLEAN"/>
        <extension>
         <extensionGroup version="2">
          <element name="three" type="asnx:NULL"/>
         </extensionGroup>
         <element name="four" type="asnx:PrintableString"/>
        </extension>
       </choice>
      </type>
        
      <type>
       <choice>
        <element name="one" type="asnx:INTEGER"/>
        <element name="Two" type="asnx:BOOLEAN"/>
        <extension>
         <extensionGroup version="2">
          <element name="three" type="asnx:NULL"/>
         </extensionGroup>
         <element name="four" type="asnx:PrintableString"/>
        </extension>
       </choice>
      </type>
        
6.12.5. Translation of UNION Types
6.12.5. 联合类型的翻译

The translation of a ChoiceType that is subject to a UNION encoding instruction follows the same procedure as the translation of a ChoiceType that is not subject to a UNION encoding instruction except that the [local name] "union" is used instead of "choice", and the member translation of each NamedType is used instead of the normal translation.

除了“翻译过程中使用的是同一名称的并集,而翻译过程中使用的是同一名称的并集”,而不是“翻译过程中使用的是同一名称的并集”。

In addition, if the UNION encoding instruction has a PrecedenceList, then an attribute item with the [local name] "precedence" SHALL be added to the [attributes] of the <union> element item. The [normalized value] of this attribute item is the white space separated list of qualified names for the expanded names of the NamedType instances [RXEREI] corresponding to the identifiers in the PrecedenceList. A white space separator is one or more of the white space characters.

此外,如果UNION编码指令具有PrecenceList,则应将具有[本地名称]“优先级”的属性项添加到<UNION>元素项的[属性]中。此属性项的[normalized value]是与PrecenceList中的标识符相对应的NamedType实例[RXEREI]的扩展名称的限定名称的空白分隔列表。空白分隔符是一个或多个空白字符。

Example

实例

      [RXER:UNION PRECEDENCE utf8 visible] CHOICE {
          printable  PrintableString,
          teletex    TeletexString,
          visible    [RXER:NAME AS "ascii"] VisibleString,
          ...,
          utf8       UTF8String
      }
        
      [RXER:UNION PRECEDENCE utf8 visible] CHOICE {
          printable  PrintableString,
          teletex    TeletexString,
          visible    [RXER:NAME AS "ascii"] VisibleString,
          ...,
          utf8       UTF8String
      }
        
      <type>
       <union precedence="utf8 ascii">
        <member name="printable" type="asnx:PrintableString"/>
        <member name="teletex" type="asnx:TeletexString"/>
        <member name="ascii" identifier="visible"
                type="asnx:VisibleString"/>
        <extension>
         <member name="utf8" type="asnx:UTF8String"/>
        </extension>
       </union>
      </type>
        
      <type>
       <union precedence="utf8 ascii">
        <member name="printable" type="asnx:PrintableString"/>
        <member name="teletex" type="asnx:TeletexString"/>
        <member name="ascii" identifier="visible"
                type="asnx:VisibleString"/>
        <extension>
         <member name="utf8" type="asnx:UTF8String"/>
        </extension>
       </union>
      </type>
        
6.12.6. SequenceOfType Translation
6.12.6. 类型翻译顺序

The translation of a SequenceOfType that is not subject to a LIST encoding instruction is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "sequenceOf" SHALL be appended to the [children] of the <type> element item.

不受列表编码指令约束的SequenceOfType的翻译是具有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“sequenceOf”的元素项应附加到<type>元素项的[子项]中。

If the SequenceOfType is of the "SEQUENCE OF NamedType" form, then the normal translation of the NamedType SHALL be added to the [children] of the <sequenceOf> element item.

如果SequenceOfType为“SequenceOfNamedType”形式,则应将NamedType的正常翻译添加到<sequenceOf>元素项的[子项]中。

If the SequenceOfType is of the "SEQUENCE OF Type" form, then an element item with the [local name] "element" or "component" (translator's choice) SHALL be added to the [children] of the <sequenceOf> element item. An attribute item with the [local name] "name" and [normalized value] "item" SHALL be added to the [attributes] of the <element> or <component> element item. An attribute item with the [local name] "identifier" and empty [normalized value] SHALL be added to the [attributes] of the <element> or <component> element item. The translation of the Type SHALL be added to the [children] or [attributes] of the <element> or <component> element item.

如果SequenceOfType为“类型序列”形式,则应在<sequenceOf>元素项的[子项]中添加带有[本地名称]“元素”或“组件”(译者选择)的元素项。带有[本地名称]“名称”和[标准化值]“项目”的属性项目应添加到<element>或<component>元素项目的[属性]中。带有[本地名称]“标识符”和空[标准化值]的属性项应添加到<element>或<component>元素项的[属性]中。类型的翻译应添加到<element>或<component>元素项的[子项]或[属性]中。

Examples

例子

SEQUENCE OF INTEGER

整数序列

      <type>
       <sequenceOf>
        <element name="item" identifier="" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        
      <type>
       <sequenceOf>
        <element name="item" identifier="" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        

SEQUENCE OF counter INTEGER

计数器整数序列

      <type>
       <sequenceOf>
        <element name="counter" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        
      <type>
       <sequenceOf>
        <element name="counter" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        
6.12.7. Translation of LIST Types
6.12.7. 列表类型的翻译

The translation of a SequenceOfType that is subject to a LIST encoding instruction is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "list" SHALL be appended to the [children] of the <type> element item. The item translation of the NamedType in the SequenceOfType SHALL be added to the [children] of the <list> element item.

受列表编码指令约束的SequenceOfType的翻译是具有[local name]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“列表”的元素项应附加到<type>元素项的[子项]中。SequenceOfType中NamedType的项翻译应添加到<list>元素项的[子项]中。

Aside: A SequenceOfType is necessarily of the "SEQUENCE OF NamedType" form for a LIST encoding instruction.

旁白:SequenceOfType必须是列表编码指令的“NamedType序列”形式。

Example

实例

[RXER:LIST] SEQUENCE OF number INTEGER

[RXER:LIST]数字整数序列

      <type>
       <list>
        <item name="number" type="asnx:INTEGER"/>
       </list>
      </type>
        
      <type>
       <list>
        <item name="number" type="asnx:INTEGER"/>
       </list>
      </type>
        
6.12.8. SetOfType Translation
6.12.8. 类型转换集

The translation of a SetOfType follows the same procedure as the translation of a SequenceOfType except that SetOfType replaces SequenceOfType, "SET" replaces "SEQUENCE", and the [local name] "setOf" is used instead of "sequenceOf".

SetOfType的翻译过程与SequenceOfType的翻译过程相同,只是SetOfType替换SequenceOfType,“SET”替换“SEQUENCE”,并且使用[本地名称]“setOf”代替“sequenceOf”。

6.12.9. Effect of Insertion Encoding Instructions
6.12.9. 插入编码指令的效果

If a Type is subject to a NO-INSERTIONS, HOLLOW-INSERTIONS, SINGULAR-INSERTIONS, UNIFORM-INSERTIONS, or MULTIFORM-INSERTIONS encoding instruction, then an attribute item with the [local name] "insertions" SHALL be added to the [attributes] of the <choice>, <sequence> or <set> element item in the [children] of the <type> element item resulting from the translation of the Type. The [normalized value] of this attribute item is "none" in the case of a NO-INSERTIONS encoding instruction, "hollow" in the case of a HOLLOW-INSERTIONS encoding instruction, "singular" in the case of a SINGULAR-INSERTIONS encoding instruction, "uniform" in the case of a UNIFORM-INSERTIONS encoding instruction, and "multiform" in the case of a MULTIFORM-INSERTIONS encoding instruction.

如果类型受无插入、空插入、单数插入、统一插入或多形式插入编码指令的约束,则带有[本地名称]“插入”的属性项应添加到[子项]中<choice>、<sequence>或<set>元素项的[属性]中类型转换产生的<type>元素项的。对于非插入编码指令,此属性项的[标准化值]为“无”,对于空心插入编码指令,为“空心”,对于单数插入编码指令,为“单数”,对于均匀插入编码指令,为“统一”,以及“多种形式”对于多形式插入编码指令。

Example

实例

      [NO-INSERTIONS] CHOICE {
          one  [RXER:GROUP] [RXER:SINGULAR-INSERTIONS] CHOICE {
              two  INTEGER,
              ...
          },
          ...
      }
        
      [NO-INSERTIONS] CHOICE {
          one  [RXER:GROUP] [RXER:SINGULAR-INSERTIONS] CHOICE {
              two  INTEGER,
              ...
          },
          ...
      }
        
      <type>
       <choice insertions="none">
        <group name="one">
         <type>
          <choice insertions="singular">
           <element name="two" type="asnx:INTEGER"/>
           <extension/>
          </choice>
         </type>
        </group>
        <extension/>
       </choice>
      </type>
        
      <type>
       <choice insertions="none">
        <group name="one">
         <type>
          <choice insertions="singular">
           <element name="two" type="asnx:INTEGER"/>
           <extension/>
          </choice>
         </type>
        </group>
        <extension/>
       </choice>
      </type>
        
6.13. Translation of Constrained Types
6.13. 受约束类型的转换

If a ConstrainedType is of the "Type Constraint" form, then the translation of the ConstrainedType is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "constrained" SHALL be appended to the [children] of the <type> element item. The translation of the Type SHALL be added to the [children] or

如果ConstrainedType是“类型约束”形式,则ConstrainedType的翻译是具有[本地名称]“类型”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“约束”的元素项应附加到<type>元素项的[子项]中。该类型的翻译应添加到[子项]或

[attributes] of the <constrained> element item. The translation of the Constraint SHALL be added to the [children] of the <constrained> element item.

<constrained>元素项的[属性]。约束的转换应添加到<constrained>元素项的[子项]中。

The translation of a ContainedType that is a TypeWithConstraint is the translation of the TypeWithConstraint.

包含类型为TypeWithConstraint的转换就是TypeWithConstraint的转换。

Definition (simple endpoint): A LowerEndpoint or UpperEndpoint is a simple endpoint if it is closed and its value is "MIN", "MAX", or a SignedNumber in an IntegerValue in a BuiltinValue in the Value of the endpoint.

定义(简单端点):如果LowerEndpoint或UpperEndpoint是闭合的,且其值为“MIN”、“MAX”或端点值的内置值中的IntegerValue中的SignedNumber,则LowerEndpoint或UpperEndpoint是简单端点。

Definition (simple range SizeConstraint): A SizeConstraint is a simple range if the Constraint in the SizeConstraint contains only a ValueRange (i.e., a ValueRange in a SubtypeElements instance in an Elements instance in a lone IntersectionElements instance in a lone Intersections instance in a Unions instance in an ElementSetSpec in a RootElementSetSpec in an ElementSetSpecs instance without an AdditionalElementSetSpec in a SubtypeConstraint in a ConstraintSpec in the Constraint) and both endpoints are simple.

定义(简单范围SizeConstraint):如果SizeConstraint中的约束仅包含ValueRange,则SizeConstraint是简单范围(即,子类型元素实例中的ValueRange在一个单独的相交元素实例中的Elements在一个单独的相交元素实例中的Unions实例中的ElementSetSpec在一个RootElementSetSpec在一个ElementSetSpec实例中的ValueRange在一个约束中的ConstraintsSpec的子类型约束中没有额外的ElementSetSpec在约束中的ConstraintsSpec)两个端点都很简单。

Definition (simple range Constraint): A Constraint is a simple range if contains only a SizeConstraint that is a simple range (i.e., a simple range SizeConstraint in a SubtypeElements instance in an Elements instance in a lone IntersectionElements instance in a lone Intersections instance in a Unions instance in an ElementSetSpec in a RootElementSetSpec in an ElementSetSpecs instance without an AdditionalElementSetSpec in a SubtypeConstraint in a ConstraintSpec in the Constraint).

定义(简单范围约束):如果约束仅包含简单范围的SizeConstraint,则该约束为简单范围(即,一个简单的范围SizeConstraint在一个子类型Elements实例在一个元素实例在一个单独的交叉点Elements实例在一个单独的交叉点Elements实例在一个Unions实例在一个ElementSetSpec在一个ElementSetSpec在一个ElementSetSpec在一个ElementsSpec在一个子类型中没有附加的ElementSetSpec在一个子类型中恩斯特兰特)。

If the Constraint or SizeConstraint in a TypeWithConstraint is a simple range, then the compact translation of the TypeWithConstraint MAY be used; otherwise, the full translation of the TypeWithConstraint is used.

如果TypeWithConstraint中的Constraint或SizeConstraint是一个简单范围,则可以使用TypeWithConstraint的紧凑转换;否则,将使用TypeWithConstraint的完整翻译。

   The compact translation of a TypeWithConstraint is initially the
   translation of its notional parent type.  If the value of the lower
   endpoint is not "MIN" or "0", then an attribute item with the
   [local name] "minSize" SHALL be added to the [attributes] of the
   <sequenceOf>, <setOf>, or <list> element item resulting from the
   translation of the parent type.  The [normalized value] of this
   attribute item is the value of the lower endpoint.  If the value of
   the lower endpoint is "MIN" or "0", then an attribute item with the
   [local name] "minSize" and [normalized value] "0" MAY be added to the
   [attributes] of the <sequenceOf>, <setOf>, or <list> element item.
   If the value of the upper endpoint is not "MAX", then an attribute
   item with the [local name] "maxSize" SHALL be added to the
   [attributes] of the <sequenceOf>, <setOf>, or <list> element item.
        
   The compact translation of a TypeWithConstraint is initially the
   translation of its notional parent type.  If the value of the lower
   endpoint is not "MIN" or "0", then an attribute item with the
   [local name] "minSize" SHALL be added to the [attributes] of the
   <sequenceOf>, <setOf>, or <list> element item resulting from the
   translation of the parent type.  The [normalized value] of this
   attribute item is the value of the lower endpoint.  If the value of
   the lower endpoint is "MIN" or "0", then an attribute item with the
   [local name] "minSize" and [normalized value] "0" MAY be added to the
   [attributes] of the <sequenceOf>, <setOf>, or <list> element item.
   If the value of the upper endpoint is not "MAX", then an attribute
   item with the [local name] "maxSize" SHALL be added to the
   [attributes] of the <sequenceOf>, <setOf>, or <list> element item.
        

The [normalized value] of this attribute item is the value of the upper endpoint.

此属性项的[normalized value]是上端点的值。

The full translation of a TypeWithConstraint is an element item with the [local name] "type". An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item. An element item with the [local name] "constrained" SHALL be appended to the [children] of the <type> element item. The translation of the notional parent type of the TypeWithConstraint SHALL be added to the [children] or [attributes] of the <constrained> element item. The translation of the Constraint or SizeConstraint in the TypeWithConstraint SHALL be added to the [children] of the <constrained> element item.

TypeWithConstraint的完整翻译是具有[本地名称]“type”的元素项。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。带有[本地名称]“约束”的元素项应附加到<type>元素项的[子项]中。TypeWithConstraint的概念父类型的翻译应添加到<Constraint>元素项的[children]或[attributes]中。TypeWithConstraint中约束或SizeConstraint的翻译应添加到<constrained>元素项的[子项]中。

Examples

例子

SEQUENCE (SIZE(1..MAX)) OF number INTEGER

整数的序列(大小(1..MAX))

      <type>
       <sequenceOf minSize="1">
        <element name="number" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        
      <type>
       <sequenceOf minSize="1">
        <element name="number" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        

SEQUENCE SIZE(0..10) OF number INTEGER

整数的序列大小(0..10)

      <type>
       <sequenceOf maxSize="10">
        <element name="number" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        
      <type>
       <sequenceOf maxSize="10">
        <element name="number" type="asnx:INTEGER"/>
       </sequenceOf>
      </type>
        

SEQUENCE SIZE(1..limit) OF number INTEGER

整数的序列大小(1..限制)

      <type>
       <constrained>
        <type>
         <sequenceOf>
          <element name="number" type="asnx:INTEGER"/>
         </sequenceOf>
        </type>
        <size>
         <range>
          <minInclusive literalValue="1"/>
          <maxInclusive value="tns:limit"/>
         </range>
        
      <type>
       <constrained>
        <type>
         <sequenceOf>
          <element name="number" type="asnx:INTEGER"/>
         </sequenceOf>
        </type>
        <size>
         <range>
          <minInclusive literalValue="1"/>
          <maxInclusive value="tns:limit"/>
         </range>
        
        </size>
       </constrained>
      </type>
        
        </size>
       </constrained>
      </type>
        
6.13.1. Constraint Translation
6.13.1. 约束平移

The translation of a Constraint is the translation of the ConstraintSpec in the Constraint followed by the translation of the ExceptionSpec (possibly empty) in the Constraint.

约束的转换是在约束中转换ConstraintSpec,然后在约束中转换ExceptionSpec(可能为空)。

The translation of a ConstraintSpec is the translation of the SubtypeConstraint or GeneralConstraint in the ConstraintSpec.

ConstraintSpec的转换是ConstraintSpec中子约束或GeneralConstraint的转换。

The translation of a SubtypeConstraint is the translation of the ElementSetSpecs in the SubtypeConstraint.

子约束的转换是子约束中ElementSetSpec的转换。

The translation of a GeneralConstraint [X.682] is the translation of the UserDefinedConstraint, TableConstraint, or ContentsConstraint in the GeneralConstraint.

GeneralConstraint[X.682]的翻译是GeneralConstraint中UserDefinedConstraint、TableConstraint或ContentsConstraint的翻译。

6.13.2. UserDefinedConstraint Translation
6.13.2. 用户定义约束转换

The translation of a UserDefinedConstraint is an element item with the [local name] "constrainedBy". An element item with the [local name] "annotation" MAY be added to the [children] of the <constrainedBy> element item. The translation of each UserDefinedConstraintParameter in the UserDefinedConstraint SHALL be appended to the [children] of the <constrainedBy> element item.

UserDefinedConstraint的翻译是具有[本地名称]“constrainedBy”的元素项。带有[local name]“annotation”的元素项可以添加到<constrainedBy>元素项的[children]。UserDefinedConstraint中每个UserDefinedConstraintParameter的翻译应附加到<constrainedBy>元素项的[子项]中。

The translation of a UserDefinedConstraintParameter of the "Governor : Value" form is an element item with the [local name] "valueParameter". The translation of the Type in the Governor SHALL be added to the [children] or [attributes] of the <valueParameter> element item. The translation of the Value SHALL be added to the [children] or [attributes] of the <valueParameter> element item.

“调控器:值”表单的UserDefinedConstraintParameter的翻译是一个带有[local name]“valueParameter”的元素项。调速器中类型的翻译应添加到<valueParameter>元素项的[子项]或[属性]中。值的转换应添加到<valueParameter>元素项的[子项]或[属性]中。

The translation of a UserDefinedConstraintParameter of the "Governor : ValueSet" form is an element item with the [local name] "valueSetParameter". The translation of the Type in the Governor SHALL be added to the [children] or [attributes] of the <valueSetParameter> element item. The translation of the ValueSet SHALL be added to the [children] of the <valueSetParameter> element item.

“Governor:ValueSet”表单的UserDefinedConstraintParameter的翻译是具有[local name]“valueSetParameter”的元素项。调速器中类型的翻译应添加到<valueSetParameter>元素项的[子项]或[属性]中。值集的翻译应添加到<valueSetParameter>元素项的[子项]中。

The translation of a UserDefinedConstraintParameter of the "Governor : Object" form is an element item with the [local name] "objectParameter". The translation of the DefinedObjectClass in the Governor SHALL be added to the [children] or [attributes] of the

“调控者:对象”表单的UserDefinedConstraintParameter的翻译是一个元素项,带有[local name]“objectParameter”。调控器中定义对象类的翻译应添加到该类的[子类]或[属性]中

<objectParameter> element item. The translation of the Object SHALL be added to the [children] or [attributes] of the <objectParameter> element item.

<objectParameter>元素项。对象的翻译应添加到<objectParameter>元素项的[children]或[attributes]中。

The translation of a UserDefinedConstraintParameter of the "Governor : ObjectSet" form is an element item with the [local name] "objectSetParameter". The translation of the DefinedObjectClass in the Governor SHALL be added to the [children] or [attributes] of the <objectSetParameter> element item. The translation of the ObjectSet SHALL be added to the [children] or [attributes] of the <objectSetParameter> element item.

“Governor:ObjectSet”表单的UserDefinedConstraintParameter的翻译是一个具有[local name]“objectSetParameter”的元素项。调控器中DefinedObjectClass的翻译应添加到<objectSetParameter>元素项的[children]或[attributes]中。ObjectSet的翻译应添加到<objectSetParameter>元素项的[children]或[attributes]中。

The translation of a UserDefinedConstraintParameter that is a Type is an element item with the [local name] "typeParameter". The translation of the Type SHALL be added to the [children] or [attributes] of the <typeParameter> element item.

作为类型的UserDefinedConstraintParameter的转换是具有[local name]“typeParameter”的元素项。类型的翻译应添加到<typeParameter>元素项的[子项]或[属性]中。

The translation of a UserDefinedConstraintParameter that is a DefinedObjectClass is an element item with the [local name] "classParameter". The translation of the DefinedObjectClass SHALL be added to the [children] or [attributes] of the <classParameter> element item.

作为DefinedObjectClass的UserDefinedConstraintParameter的转换是具有[local name]“classParameter”的元素项。定义对象类的翻译应添加到<classParameter>元素项的[children]或[attributes]中。

Example

实例

      OCTET STRING
          (CONSTRAINED BY {
              -- contains the hash of the value -- MyType:myValue })
        
      OCTET STRING
          (CONSTRAINED BY {
              -- contains the hash of the value -- MyType:myValue })
        
      <type>
       <constrained type="asnx:OCTET-STRING">
        <constrainedBy>
         <annotation> contains the hash of the value </annotation>
         <valueParameter type="tns:MyType" value="tns:myValue"/>
        </constrainedBy>
       </constrained>
      </type>
        
      <type>
       <constrained type="asnx:OCTET-STRING">
        <constrainedBy>
         <annotation> contains the hash of the value </annotation>
         <valueParameter type="tns:MyType" value="tns:myValue"/>
        </constrainedBy>
       </constrained>
      </type>
        
6.13.3. TableConstraint Translation
6.13.3. 表约束转换

The translation of a TableConstraint that is a SimpleTableConstraint is an element item with the [local name] "table". The translation of the ObjectSet in the SimpleTableConstraint SHALL be added to the [children] or [attributes] of the <table> element item.

作为SimpleTableConstraint的TableConstraint的转换是具有[local name]“table”的元素项。SimpleTableConstraint中ObjectSet的转换应添加到<table>元素项的[children]或[attributes]中。

The translation of a TableConstraint that is a ComponentRelationConstraint is an element item with the [local name] "table". The translation of the DefinedObjectSet in the

作为ComponentRelationConstraint的TableConstraint的转换是具有[local name]“table”的元素项。中定义的对象集的转换

ComponentRelationConstraint SHALL be added to the [children] or [attributes] of the <table> element item. The translation of each AtNotation in the ComponentRelationConstraint SHALL be appended to the [children] of the <table> element item.

ComponentRelationConstraint应添加到<table>元素项的[children]或[attributes]中。ComponentRelationConstraint中每个AtNotation的翻译应附加到<table>元素项的[子项]中。

The translation of an AtNotation is an element item with the [local name] "restrictBy". The [children] property of the <restrictBy> element item is set to the sequence of character items for the character string formed by the concatenation of zero, one, or more "../" strings, one for each Level in the AtNotation (including the empty one), followed by a solidus ('/', U+002F) separated list of qualified names for the expanded names of the NamedType instances [RXEREI] identified by the identifiers in the ComponentIdList in the AtNotation. If a NamedType is subject to an ATTRIBUTE or ATTRIBUTE-REF encoding instruction, or subject to a COMPONENT-REF encoding instruction that references a top-level NamedType that is subject to an ATTRIBUTE encoding instruction, then the qualified name for the expanded name is prefixed with the commercial at character ('@', U+0040). Leading and/or trailing white space character items MAY be added to the [children] of the <restrictBy> element item. White space character items MAY be added immediately before and/or after any character item for the solidus character ('/', U+002F).

AtNotation的翻译是一个元素项,带有[本地名称]“restrictBy”。<restrictBy>元素项的[children]属性设置为字符串的字符项序列,该字符串由零个、一个或多个“./”字符串串联而成,AtNotation(包括空字符串)中的每个级别一个字符串,后跟一个实线(“/”,U+002F)命名类型实例[RXEREI]扩展名的限定名分隔列表,由AtNotation中ComponentDList中的标识符标识。如果NamedType受属性或属性-REF编码指令的约束,或受引用受属性编码指令约束的顶级NamedType的COMPONENT-REF编码指令的约束,则扩展名称的限定名称前缀为商业at字符('@',U+0040)。可以将前导和/或尾随空格字符项添加到<restrictBy>元素项的[子项]中。可以在索利多士字符(“/”,U+002F)的任何字符项之前和/或之后立即添加空白字符项。

Examples

例子

      ERROR.&Type({Errors}{@severity,@...errorId})
        
      ERROR.&Type({Errors}{@severity,@...errorId})
        
      <type>
       <constrained>
        <type>
         <fromClass class="tns:ERROR" fieldName="Type"/>
        </type>
        <table objectset="tns:Errors">
         <restrictBy>severity</restrictBy>
         <restrictBy>../../../errorId</restrictBy>
        </table>
       </constrained>
      </type>
        
      <type>
       <constrained>
        <type>
         <fromClass class="tns:ERROR" fieldName="Type"/>
        </type>
        <table objectset="tns:Errors">
         <restrictBy>severity</restrictBy>
         <restrictBy>../../../errorId</restrictBy>
        </table>
       </constrained>
      </type>
        
      SEQUENCE {
          id-att  [RXER:NAME AS "ID"] [RXER:ATTRIBUTE]
                      TYPE-IDENTIFIER.&id({AllTypes}),
          value   TYPE-IDENTIFIER.&Type({AllTypes}{@id-att})
      }
        
      SEQUENCE {
          id-att  [RXER:NAME AS "ID"] [RXER:ATTRIBUTE]
                      TYPE-IDENTIFIER.&id({AllTypes}),
          value   TYPE-IDENTIFIER.&Type({AllTypes}{@id-att})
      }
        
      <type>
       <sequence>
        <attribute name="ID" identifier="id-att">
        
      <type>
       <sequence>
        <attribute name="ID" identifier="id-att">
        
         <type>
          <constrained>
           <type>
            <fromClass class="asnx:TYPE-IDENTIFIER" fieldName="id"/>
           </type>
           <table objectset="tns:AllTypes"/>
          </constrained>
         </type>
        </attribute>
        <element name="value">
         <type>
          <constrained>
           <type>
            <fromClass class="asnx:TYPE-IDENTIFIER" fieldName="Type"/>
           </type>
           <table objectset="tns:AllTypes">
            <restrictBy>@ID</restrictBy>
           </table>
          </constrained>
         </type>
        </element>
       </sequence>
      </type>
        
         <type>
          <constrained>
           <type>
            <fromClass class="asnx:TYPE-IDENTIFIER" fieldName="id"/>
           </type>
           <table objectset="tns:AllTypes"/>
          </constrained>
         </type>
        </attribute>
        <element name="value">
         <type>
          <constrained>
           <type>
            <fromClass class="asnx:TYPE-IDENTIFIER" fieldName="Type"/>
           </type>
           <table objectset="tns:AllTypes">
            <restrictBy>@ID</restrictBy>
           </table>
          </constrained>
         </type>
        </element>
       </sequence>
      </type>
        

The <restrictBy> element item is required to be self-contained [RXER].

<restrictBy>元素项必须是自包含的[RXER]。

Aside: An element item is self-contained if all namespace prefixes used by the element item and its contents are declared within the element item.

旁白:如果元素项使用的所有名称空间前缀及其内容都在元素项中声明,则元素项是自包含的。

6.13.4. ContentsConstraint Translation
6.13.4. 内容约束翻译

The translation of a ContentsConstraint is an element item with the [local name] "contents".

ContentsConstraint的翻译是具有[本地名称]“contents”的元素项。

If the ContentsConstraint is of the "CONTAINING Type" form, then an element item with the [local name] "containing" SHALL be added to the [children] of the <contents> element item. The translation of the Type SHALL be added to the [children] or [attributes] of the <containing> element item.

如果ContentsConstraint是“包含类型”形式,则应将带有[本地名称]“包含”的元素项添加到<contents>元素项的[子项]中。类型的翻译应添加到<containing>元素项的[子项]或[属性]中。

If the ContentsConstraint is of the "ENCODED BY Value" form, then an element item with the [local name] "encodedBy" SHALL be added to the [children] of the <contents> element item. The translation of the Value SHALL be added to the [children] or [attributes] of the <encodedBy> element item.

如果ContentsConstraint是“按值编码”形式,则带有[本地名称]“encodedBy”的元素项应添加到<contents>元素项的[子项]中。值的翻译应添加到<encodedBy>元素项的[子项]或[属性]中。

If the ContentsConstraint is of the "CONTAINING Type ENCODED BY Value" form, then an element item with the [local name] "containing" and an element item with the [local name] "encodedBy" SHALL be added to the [children] of the <contents> element item. The translation of the Type SHALL be added to the [children] or [attributes] of the <containing> element item. The translation of the Value SHALL be added to the [children] or [attributes] of the <encodedBy> element item.

如果ContentsConstraint是“包含类型按值编码”形式,则应将带有[本地名称]“包含”的元素项和带有[本地名称]“encodedBy”的元素项添加到<contents>元素项的[子项]中。类型的翻译应添加到<containing>元素项的[子项]或[属性]中。值的翻译应添加到<encodedBy>元素项的[子项]或[属性]中。

Example

实例

OCTET STRING (CONTAINING MyType ENCODED BY { joint-iso-itu-t asn1(1) basic-encoding(1) })

八位字节字符串(包含由{joint-iso-itu-tasn1(1)基本编码(1)}编码的MyType)

      <type>
       <constrained type="asnx:OCTET-STRING">
        <contents>
         <containing type="tns:MyType"/>
         <encodedBy literalValue="2.1.1"/>
        </contents>
       </constrained>
      </type>
        
      <type>
       <constrained type="asnx:OCTET-STRING">
        <contents>
         <containing type="tns:MyType"/>
         <encodedBy literalValue="2.1.1"/>
        </contents>
       </constrained>
      </type>
        
6.13.5. ExceptionSpec Translation
6.13.5. 例外规范翻译

The translation of an empty ExceptionSpec is empty.

空ExceptionSpec的翻译为空。

The translation of a non-empty ExceptionSpec is an element item with the [local name] "exception".

非空ExceptionSpec的翻译是带有[本地名称]“exception”的元素项。

If the ExceptionIdentification in a non-empty ExceptionSpec is a SignedNumber, then the translation of a notional INTEGER Type SHALL be added to the [children] or [attributes] of the <exception> element item, and the translation of a notional Value of the INTEGER type with the SignedNumber as its IntegerValue SHALL be added to the [children] or [attributes] of the <exception> element item.

如果非空ExceptionSpec中的ExceptionIdentification是SignedNumber,则概念整数类型的翻译应添加到<exception>元素项的[children]或[attributes],且将SignedNumber作为其IntegerValue的整数类型的概念值翻译应添加到[children]或[attributes]<exception>元素项的[属性]。

If the ExceptionIdentification in a non-empty ExceptionSpec is a DefinedValue, then the translation of a notional INTEGER Type SHALL be added to the [children] or [attributes] of the <exception> element item, and the translation of the DefinedValue SHALL be added to the [children] or [attributes] of the <exception> element item.

如果非空ExceptionSpec中的ExceptionIdentification是定义值,则概念整数类型的翻译应添加到<exception>元素项的[children]或[attributes],定义值的翻译应添加到<exception>元素项的[children]或[attributes]。

If the ExceptionIdentification in a non-empty ExceptionSpec is of the "Type : Value" form, then the translation of the Type SHALL be added to the [children] or [attributes] of the <exception> element item, and the translation of the Value SHALL be added to the [children] or [attributes] of the <exception> element item.

如果非空ExceptionSpec中的ExceptionIdentification为“类型:值”形式,则类型的翻译应添加到<exception>元素项的[children]或[attributes],值的翻译应添加到<exception>元素项的[children]或[attributes]。

Examples

例子

!10

!10

      <exception type="asnx:INTEGER" literalValue="10"/>
        
      <exception type="asnx:INTEGER" literalValue="10"/>
        

!myValue

!我的价值

      <exception type="asnx:INTEGER" value="tns:myValue"/>
        
      <exception type="asnx:INTEGER" value="tns:myValue"/>
        

!PrintableString:"failure"

!可打印字符串:“失败”

      <exception type="asnx:PrintableString" literalValue="failure"/>
        
      <exception type="asnx:PrintableString" literalValue="failure"/>
        
7. Translation of Values
7. 价值观的翻译

A Value in an ASN.1 specification is a mix of literal values (e.g., numbers and character strings) and notations for referencing defined values. Likewise, the ASN.X translation of a Value is a mix of markup for literal values and markup for referencing notations (notational values). A Value is categorized by the following definitions.

ASN.1规范中的值是文字值(例如数字和字符串)和用于引用定义值的符号的组合。同样,值的ASN.X转换是文字值标记和引用符号(符号值)标记的混合。值按以下定义分类。

Definition (literal value): A Value is a literal value if and only if it is not a notational value.

定义(文字值):当且仅当值不是符号值时,才是文字值。

Definition (notational value): A Value is a notational value if and only if:

定义(符号值):值是符号值,当且仅当:

(1) the Value is a BuiltinValue, and

(1) 该值是一个内置值,并且

(a) the BuiltinValue is a TaggedValue and the Value in the TaggedValue is a notational value, or

(a) 内置值为TaggedValue,TaggedValue中的值为符号值,或

(b) the BuiltinValue is a SequenceValue or SetValue with a ComponentValueList that contains a NamedValue where the Value in the NamedValue is a notational value and the translation of the corresponding NamedType (from the governing type of the outer Value) is not an <element> or <component> element item, or

(b) 内置值是一个SequenceValue或SetValue,其ComponentValueList包含一个NamedValue,其中NamedValue中的值是一个符号值,并且相应的NamedType(来自外部值的控制类型)的翻译不是<element>或<component>元素项,或者

(c) the BuiltinValue is a ChoiceValue where the Value of the ChoiceValue is a notational value and the translation of the NamedType corresponding to the identifier in the ChoiceValue is not an <element> or <component> element item, or

(c) 内置值是一个ChoiceValue,其中ChoiceValue的值是一个符号值,与ChoiceValue中的标识符相对应的NamedType的翻译不是<element>或<component>元素项,或

(d) the BuiltinValue is a SequenceOfValue or SetOfValue with a NamedValueList that contains a NamedValue where the Value of the NamedValue is a notational value and the translation of the corresponding NamedType (from the governing type of the outer Value) is not an <element> or <component> element item, or

(d) 内置值是一个SequenceOfValue或SetOfValue,其NamedValue列表包含一个NamedValue,其中NamedValue的值是一个符号值,并且相应的NamedType(来自外部值的控制类型)的翻译不是<element>或<component>元素项,或者

(2) the Value is a ReferencedValue, and

(2) 该值是ReferencedValue,并且

(a) the ReferencedValue is a ValueFromObject, or

(a) ReferencedValue是ValueFromObject,或

(b) the ReferencedValue is a DefinedValue, and

(b) ReferencedValue是一个DefinedValue,并且

(i) the DefinedValue is a valuereference (not a DummyReference) or an ExternalValueReference, or

(i) DefinedValue是valuereference(不是DummyReference)或ExternalValueReference,或

(ii) the DefinedValue is a DummyReference or ParameterizedValue and the substitute definition for the DummyReference or ParameterizedValue (see Section 13) is a notational value, or

(ii)定义值为DummyReference或ParameterizedValue,且DummyReference或ParameterizedValue的替代定义(见第13节)为符号值,或

(iii) the DefinedValue is a DummyReference or ParameterizedValue where the translation of the DummyReference or ParameterizedValue will use a fully expanded reference (see Section 13), or

(iii)定义值为DummyReference或ParameterizedValue,其中DummyReference或ParameterizedValue的翻译将使用完全扩展的引用(见第13节),或

(3) the Value is an ObjectClassFieldValue, and

(3) 该值是ObjectClassFieldValue,并且

(a) the ObjectClassFieldValue is an OpenTypeFieldVal, or

(a) ObjectClassFieldValue是OpenTypeFieldVal,或

(b) the ObjectClassFieldValue is a FixedTypeFieldVal, and

(b) ObjectClassFieldValue是一个FixedTypeFieldVal,并且

(i) the FixedTypeFieldVal is a BuiltinValue that satisfies case (1), or

(i) FixedTypeFieldVal是满足情况(1)的内置值,或

(ii) the FixedTypeFieldVal is a ReferencedValue that satisfies case (2).

(ii)FixedTypeFieldVal是满足情况(2)的参考值。

A literal value that is a BuiltinValue that is a SequenceValue, SetValue, ChoiceValue, SequenceOfValue, or SetOfValue MAY be translated as a notational value.

作为SequenceValue、SetValue、ChoiceValue、SequenceOfValue或SetOfValue的内置值的文字值可以转换为符号值。

Definition (directly nested): A notational value is directly nested (within a literal value) if the innermost enclosing Value is a literal value.

定义(直接嵌套):如果最里面的封闭值是文字值,则直接嵌套符号值(在文字值内)。

7.1. Translation of Literal Values
7.1. 字面值的翻译

The translation of a literal value is either the attribute form translation of a literal value, or the element form translation of a literal value.

字面值的转换可以是字面值的属性形式转换,也可以是字面值的元素形式转换。

The attribute form translation of a literal value is an attribute item with the [local name] "literalValue". The [normalized value] of this attribute item is the RXER character data translation [RXER] of the literal value.

文字值的属性形式转换是具有[本地名称]“文字值”的属性项。此属性项的[normalized value]是文本值的RXER字符数据转换[RXER]。

The attribute form translation of a literal value SHALL NOT be used if:

在下列情况下,不得使用文字值的属性形式翻译:

(1) the RXER Infoset translation of the literal value is not a character data translation [RXER] or is a character data translation that contains qualified names [XMLNS10][XMLNS11], or

(1) 文本值的RXER信息集转换不是字符数据转换[RXER],或者是包含限定名称[XMLNS10][XMLNS11]的字符数据转换,或者

(2) attribute form translations of Value have been explicitly disallowed in the context where the literal value appears, or

(2) 在文本值出现的上下文中,已明确禁止值的属性形式转换,或

(3) the literal value has a nested notational value.

(3) 文字值具有嵌套的符号值。

The element form translation of a literal value is an element item with the [local name] "literalValue". The [children] and [attributes] of the <literalValue> element item are set to the RXER Infoset translation of the literal value, except that a value of the EXTERNAL type (or a subtype thereof) is translated according to the associated type defined in Clause 34.5 of X.680 [X.680]. In addition, where the [children] and [attributes] of an element item in the translation correspond to a directly nested notational value, the translation specified in Section 7.2 MUST be used for the [children] and [attributes] of that element item, and an attribute item with the [local name] "literal", [namespace name] "urn:ietf:params:xml:ns:asnx", and [normalized value] "false" or "0" (i.e., asnx:literal="false") MUST be added to the [attributes] of that element item.

文字值的元素形式转换是具有[本地名称]“literalValue”的元素项。<literalValue>元素项的[children]和[attributes]设置为文字值的RXER Infoset翻译,但外部类型(或其子类型)的值根据X.680[X.680]第34.5条中定义的关联类型进行翻译。此外,如果翻译中元素项的[children]和[attributes]对应于直接嵌套的符号值,则第7.2节中指定的翻译必须用于该元素项的[children]和[attributes],以及具有[local name]“literal”、[namespace name]的属性项“urn:ietf:params:xml:ns:asnx”和[标准化值]“false”或“0”(即asnx:literal=“false”)必须添加到该元素项的[属性]中。

Each outermost <literalValue> element item is required to be self-contained [RXER].

每个最外层的<literalValue>元素项都需要是自包含的[RXER]。

Aside: An element item is self-contained if all namespace prefixes used by the element item and its contents are declared within the element item.

旁白:如果元素项使用的所有名称空间前缀及其内容都在元素项中声明,则元素项是自包含的。

Aside: A <literalValue> element item nested within another <literalValue> element item is not required to be self-contained.

旁白:嵌套在另一个<literalValue>元素项中的<literalValue>元素项不需要是自包含的。

An attribute item with the [local name] "literal", [namespace name] "urn:ietf:params:xml:ns:asnx" and [normalized value] "true" or "1" (i.e., asnx:literal="true") MAY be added to the [attributes] of the <literalValue> element item and/or any nested element item with content and attributes that correspond to a literal value.

具有[local name]“literal”、[namespace name]“urn:ietf:params:xml:ns:asnx”和[normalized value]“true”或“1”(即asnx:literal=“true”)的属性项可以添加到<literalValue>元素项和/或具有与literal值对应的内容和属性的任何嵌套元素项的[attributes]中。

Aside: The asnx:literal attribute operates as a switch that indicates whether the content and other attributes of the element containing the attribute are interpreted as ASN.X notation (a notational value) or as an RXER encoding (a literal value).

旁白:asnx:literal属性用作一个开关,指示包含该属性的元素的内容和其他属性是被解释为ASN.X符号(一个符号值)还是被解释为RXER编码(一个文字值)。

Example

实例

      zero INTEGER ::= 0
        
      zero INTEGER ::= 0
        
      <namedValue name="zero" type="asnx:INTEGER" literalValue="0"/>
        
      <namedValue name="zero" type="asnx:INTEGER" literalValue="0"/>
        

OR

      <namedValue name="zero" type="asnx:INTEGER">
       <literalValue>0</literalValue>
      </namedValue>
        
      <namedValue name="zero" type="asnx:INTEGER">
       <literalValue>0</literalValue>
      </namedValue>
        

From the perspective of an ASN.X module as the RXER encoding of an ASN.1 value (an abstract value of the ModuleDefinition type in Appendix A), the type of the <literalValue> element is the unconstrained Markup type [RXER], not the governing type of the Value according to the ASN.1 specification. This means that the Infoset representation of the <literalValue> element must be preserved in re-encodings of the ASN.X module.

从ASN.X模块作为ASN.1值(附录A中ModuleDefinition类型的抽象值)的RXER编码的角度来看,<literalValue>元素的类型是无约束标记类型[RXER],而不是ASN.1规范中的值的控制类型。这意味着<literalValue>元素的信息集表示形式必须保留在ASN.X模块的重新编码中。

Similarly, the type of the literalValue attribute is a UTF8String, not the governing type of the Value according to the ASN.1 specification. This means that the exact characters of the [normalized value] of the attribute must be preserved in re-encodings of the ASN.X module.

类似地,literalValue属性的类型是UTF8String,而不是ASN.1规范规定的值的控制类型。这意味着属性的[normalized value]的确切字符必须保留在ASN.X模块的重新编码中。

7.2. Translation of Notational Values
7.2. 符号价值的翻译

The translation of a notational value is the translation of the BuiltinValue, ReferencedValue, or ObjectClassFieldValue in the notational value.

符号值的转换是对符号值中的内置值、引用值或ObjectClassFieldValue的转换。

The translation of a ReferencedValue is the translation of the DefinedValue or ValueFromObject in the ReferencedValue.

ReferencedValue的转换是ReferencedValue中DefinedValue或ValueFromObject的转换。

The translation for each of these cases is described as creating an element item with the [local name] "value", which is appropriate for a notational value that stands on its own. However, a notational value may also be directly nested within a literal value, in which case the [local name] will be determined according to RXER and the governing ASN.1 type of the enclosing literal value.

每种情况的翻译都被描述为创建一个具有[本地名称]“值”的元素项,该值适用于独立的符号值。但是,符号值也可以直接嵌套在文字值中,在这种情况下,[本地名称]将根据RXER和封闭文字值的管理ASN.1类型确定。

Aside: In the latter case, the element item will also have a literal attribute item with the [normalized value] "false" or "0".

旁白:在后一种情况下,元素项还将有一个文本属性项,其[normalized value]“false”或“0”。

A notational value that is not directly nested within a literal value MAY instead have the [local name] "literalValue" provided an attribute item with the [local name] "literal", [namespace name] "urn:ietf:params:xml:ns:asnx", and [normalized value] "false" or "0" is added to the [attributes] of the <literalValue> element item.

未直接嵌套在文字值中的符号值可以改为将[local name]“literalValue”提供给具有[local name]“literal”、[namespace name]“urn:ietf:params:xml:ns:asnx”和[normalized value]“false”或“0”的属性项添加到<literalValue>元素项的[attributes]中。

Examples

例子

      nothing INTEGER ::= zero
        
      nothing INTEGER ::= zero
        
      <namedValue name="nothing" type="asnx:INTEGER" value="tns:zero"/>
        
      <namedValue name="nothing" type="asnx:INTEGER" value="tns:zero"/>
        

OR

      <namedValue name="nothing" type="asnx:INTEGER">
       <value ref="tns:zero"/><!-- A notational value. -->
      </namedValue>
        
      <namedValue name="nothing" type="asnx:INTEGER">
       <value ref="tns:zero"/><!-- A notational value. -->
      </namedValue>
        

OR

      <namedValue name="nothing" type="asnx:INTEGER">
       <literalValue xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                     xmlns:tns="http://example.com/ns/MyModule"
                     asnx:literal="false"
                     ref="tns:zero"/><!-- A notational value. -->
      </namedValue>
        
      <namedValue name="nothing" type="asnx:INTEGER">
       <literalValue xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                     xmlns:tns="http://example.com/ns/MyModule"
                     asnx:literal="false"
                     ref="tns:zero"/><!-- A notational value. -->
      </namedValue>
        
      integerList SEQUENCE OF number INTEGER ::= { zero, 3, 7 }
        
      integerList SEQUENCE OF number INTEGER ::= { zero, 3, 7 }
        
      <namedValue name="integerList">
       <type>
        <sequenceOf>
         <element name="number" type="asnx:INTEGER"/>
        </sequenceOf>
       </type>
       <literalValue xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                     xmlns:tns="http://example.com/ns/MyModule">
        <number asnx:literal="false"
        
      <namedValue name="integerList">
       <type>
        <sequenceOf>
         <element name="number" type="asnx:INTEGER"/>
        </sequenceOf>
       </type>
       <literalValue xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                     xmlns:tns="http://example.com/ns/MyModule">
        <number asnx:literal="false"
        
                ref="tns:zero"/><!-- A notational value. -->
        <number>3</number><!-- A literal value. -->
        <number>7</number><!-- A literal value. -->
       </literalValue>
      </namedValue>
        
                ref="tns:zero"/><!-- A notational value. -->
        <number>3</number><!-- A literal value. -->
        <number>7</number><!-- A literal value. -->
       </literalValue>
      </namedValue>
        
7.2.1. DefinedValue Translation
7.2.1. 定义值转换

If a DefinedValue is a valuereference (not a DummyReference) or an ExternalValueReference, then the translation of the DefinedValue is either the attribute form translation of a value reference, or the element form translation of a value reference.

如果DefinedValue是valuereference(不是DummyReference)或ExternalValueReference,则DefinedValue的转换为值引用的属性形式转换或值引用的元素形式转换。

The attribute form translation of a value reference is an attribute item with the [local name] "value". The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced value definition (see Section 5.1). The attribute form translation SHALL NOT be used if this expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items (see Section 5.1).

值引用的属性形式转换是具有[本地名称]“值”的属性项。该属性项的[normalized value]是引用值定义扩展名的限定名(见第5.1节)。如果此扩展名称与当前模块及其<import>元素项所引用的模块没有区别,则不应使用属性形式转换(参见第5.1节)。

   The element form translation of a value reference is an element item
   with the [local name] "value".  An element item with the [local name]
   "annotation" MAY be added to the [children] of the <value> element
   item.  An attribute item with the [local name] "ref" SHALL be added
   to the [attributes] of the <value> element item.  The
   [normalized value] of this attribute item is a qualified name for the
   expanded name of the referenced value definition.  If this expanded
   name is not distinct with respect to the current module and the
   modules referenced by its <import> element items, then an attribute
   item with the [local name] "context" SHALL be added to the
   [attributes] of the <value> element item; otherwise, if the module
   containing the referenced value definition has a schema identity URI,
   then an attribute item with the [local name] "context" MAY be added
   to the [attributes] of the <value> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the value definition referenced by the
   DefinedValue.
        
   The element form translation of a value reference is an element item
   with the [local name] "value".  An element item with the [local name]
   "annotation" MAY be added to the [children] of the <value> element
   item.  An attribute item with the [local name] "ref" SHALL be added
   to the [attributes] of the <value> element item.  The
   [normalized value] of this attribute item is a qualified name for the
   expanded name of the referenced value definition.  If this expanded
   name is not distinct with respect to the current module and the
   modules referenced by its <import> element items, then an attribute
   item with the [local name] "context" SHALL be added to the
   [attributes] of the <value> element item; otherwise, if the module
   containing the referenced value definition has a schema identity URI,
   then an attribute item with the [local name] "context" MAY be added
   to the [attributes] of the <value> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the value definition referenced by the
   DefinedValue.
        

Aside: If a reference name is not distinct, then the module containing the referenced definition must have a schema identity URI (see Section 5.1).

旁白:如果引用名称不明确,则包含引用定义的模块必须具有模式标识URI(参见第5.1节)。

Usually the translator is free to choose either an attribute form or element form translation for a DefinedValue; however, in some contexts attribute forms of Value are explicitly disallowed. In

通常,翻译人员可以自由选择属性形式或元素形式对定义值的翻译;但是,在某些上下文中,值的属性形式是明确不允许的。在里面

particular, the attribute form translation SHALL NOT be used for a DefinedValue in a ReferencedValue in a Value that is directly nested in a literal value.

特别是,属性形式转换不得用于直接嵌套在文字值中的值中的ReferencedValue中的DefinedValue。

If a DefinedValue is a DummyReference or ParameterizedValue, then the translation of the DefinedValue is the translation of that DummyReference or ParameterizedValue (see Section 13).

如果DefinedValue是DummyReference或ParameterizedValue,则DefinedValue的转换就是该DummyReference或ParameterizedValue的转换(参见第13节)。

7.2.2. BuiltinValue Translation
7.2.2. 内置值翻译

The translation of a BuiltinValue is the translation of the ChoiceValue, SequenceValue, SetValue, SequenceOfValue, SetOfValue, or TaggedValue in the BuiltinValue.

内置值的转换是内置值中ChoiceValue、SequenceValue、SetValue、SequenceOfValue、SetOfValue或TaggedValue的转换。

Aside: There are other possibilities for a BuiltinValue, but these will all be literal values. This section applies to a BuiltinValue that is a notational value.

旁白:内置值还有其他可能,但这些都是文字值。本节适用于作为符号值的内置值。

The translation of a TaggedValue is the translation of the Value in the TaggedValue (which is necessarily a notational value).

TaggedValue的翻译就是TaggedValue中的值的翻译(它必须是一个符号值)。

   The translation of a ChoiceValue is an element item with the
   [local name] "value".  An element item with the [local name]
   "annotation" MAY be added to the [children] of the <value> element
   item.  An element item with the same [local name] (i.e., "attribute",
   "element", "component", "group", or "member") as the translation of
   the NamedType corresponding to the identifier in the ChoiceValue
   SHALL be appended to the [children] of the <value> element item.  An
   attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <attribute>, <element>, <component>, <group>, or
   <member> element item.  The [normalized value] of this attribute item
   is a qualified name for the expanded name of the NamedType.  The
   translation of the Value in the ChoiceValue SHALL be added to the
   [children] or [attributes] of the <attribute>, <element>,
   <component>, <group>, or <member> element item.
        
   The translation of a ChoiceValue is an element item with the
   [local name] "value".  An element item with the [local name]
   "annotation" MAY be added to the [children] of the <value> element
   item.  An element item with the same [local name] (i.e., "attribute",
   "element", "component", "group", or "member") as the translation of
   the NamedType corresponding to the identifier in the ChoiceValue
   SHALL be appended to the [children] of the <value> element item.  An
   attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <attribute>, <element>, <component>, <group>, or
   <member> element item.  The [normalized value] of this attribute item
   is a qualified name for the expanded name of the NamedType.  The
   translation of the Value in the ChoiceValue SHALL be added to the
   [children] or [attributes] of the <attribute>, <element>,
   <component>, <group>, or <member> element item.
        

The translation of a SequenceValue or SetValue is an element item with the [local name] "value". An element item with the [local name] "annotation" MAY be added to the [children] of the <value> element item. If the SequenceValue or SetValue has a ComponentValueList, then the translation of each NamedValue nested in the ComponentValueList SHALL be appended to the [children] of the <value> element item in the order in which their corresponding NamedType instances appear in the definition of the governing type.

SequenceValue或SetValue的翻译是带有[本地名称]“值”的元素项。带有[local name]“annotation”的元素项可以添加到<value>元素项的[children]。如果SequenceValue或SetValue具有ComponentValueList,则嵌套在ComponentValueList中的每个NamedValue的翻译应按照其对应NamedType实例在管理类型定义中出现的顺序附加到<value>元素项的[子项]。

The translation of a SequenceOfValue or SetOfValue is an element item with the [local name] "value". An element item with the [local name] "annotation" MAY be added to the [children] of the <value> element item.

SequenceOfValue或SetOfValue的翻译是带有[本地名称]“值”的元素项。带有[local name]“annotation”的元素项可以添加到<value>元素项的[children]。

If the SequenceOfValue or SetOfValue has a NamedValueList, then the translation of each NamedValue nested in the NamedValueList SHALL be appended to the [children] of the <value> element item.

如果SequenceOfValue或SetOfValue具有NamedValue列表,则嵌套在NamedValue列表中的每个NamedValue的翻译应附加到<value>元素项的[子项]中。

If the SequenceOfValue or SetOfValue has a ValueList, then an element item with the same [local name] (i.e., "element" or "component") as the element item in the [children] of the <sequenceOf> or <setOf> element item in the translation of the governing type SHALL be appended to the [children] of the <value> element item for each Value nested in the ValueList. An attribute item with the [local name] "name" and [normalized value] "item" SHALL be added to the [attributes] of the <element> or <component> element item. The translation of the Value (from the ValueList) SHALL be added to the [children] or [attributes] of the <element> or <component> element item.

如果SequenceOfValue或SetOfValue有一个值列表,则应将与管辖类型翻译中<sequenceOf>或<setOf>元素项的[子项]中的元素项具有相同[本地名称](即,“元素”或“组件”)的元素项追加到[子项]中值列表中嵌套的每个值的<value>元素项。带有[本地名称]“名称”和[标准化值]“项目”的属性项目应添加到<element>或<component>元素项目的[属性]中。值的翻译(来自值列表)应添加到<element>或<component>元素项的[子项]或[属性]中。

The translation of a NamedValue is an element item with the same [local name] as the translation of the corresponding NamedType, i.e., "attribute", "element", "component", "group", "item", or "simpleContent". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is a qualified name for the expanded name of the NamedType. The translation of the Value in the NamedValue SHALL be added to the [children] or [attributes] of the element item.

NamedValue的翻译是与相应NamedType的翻译具有相同[本地名称]的元素项,即“属性”、“元素”、“组件”、“组”、“项”或“simpleContent”。带有[本地名称]“名称”的属性项应添加到元素项的[属性]中。此属性项的[normalized value]是NamedType扩展名的限定名。NamedValue中值的翻译应添加到元素项的[子项]或[属性]中。

Examples

例子

      -- This is the governing type.
      MyType ::= SEQUENCE {
           one    [ATTRIBUTE] INTEGER,
           two    INTEGER,
           three  [ATTRIBUTE][LIST] SEQUENCE OF number INTEGER
      }
        
      -- This is the governing type.
      MyType ::= SEQUENCE {
           one    [ATTRIBUTE] INTEGER,
           two    INTEGER,
           three  [ATTRIBUTE][LIST] SEQUENCE OF number INTEGER
      }
        
      <namedType name="MyType">
       <type>
        <sequence>
         <attribute name="one" type="asnx:INTEGER"/>
         <element name="two" type="asnx:INTEGER"/>
         <attribute name="three">
          <type>
           <list>
        
      <namedType name="MyType">
       <type>
        <sequence>
         <attribute name="one" type="asnx:INTEGER"/>
         <element name="two" type="asnx:INTEGER"/>
         <attribute name="three">
          <type>
           <list>
        
            <item name="number" type="asnx:INTEGER"/>
           </list>
          </type>
         </attribute>
        </sequence>
       </type>
      </namedType>
        
            <item name="number" type="asnx:INTEGER"/>
           </list>
          </type>
         </attribute>
        </sequence>
       </type>
      </namedType>
        
      myValue1 MyType ::= {
          one     456,
          two     123,
          three   { number 123, number 456 }
      }
      -- All literal values.
        
      myValue1 MyType ::= {
          one     456,
          two     123,
          three   { number 123, number 456 }
      }
      -- All literal values.
        
      <namedValue name="myValue1" type="tns:MyType">
       <literalValue one="456" three="123 456">
        <two>123</two>
       </literalValue>
      </namedValue>
        
      <namedValue name="myValue1" type="tns:MyType">
       <literalValue one="456" three="123 456">
        <two>123</two>
       </literalValue>
      </namedValue>
        
      myValue2 MyType ::= {
          one     456,
          two     myObject.&number,
            -- only the value for component "two" is a notational value
          three   { number 123, number 456 }
      }
        
      myValue2 MyType ::= {
          one     456,
          two     myObject.&number,
            -- only the value for component "two" is a notational value
          three   { number 123, number 456 }
      }
        
      <namedValue name="myValue2" type="tns:MyType">
       <literalValue xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                     xmlns:tns="http://example.com/ns/MyModule"
                     one="456" three="123 456">
        <two asnx:literal="false">
         <fromObjects object="tns:myObject" fieldName="number"/>
        </two>
       </literalValue>
      </namedValue>
        
      <namedValue name="myValue2" type="tns:MyType">
       <literalValue xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                     xmlns:tns="http://example.com/ns/MyModule"
                     one="456" three="123 456">
        <two asnx:literal="false">
         <fromObjects object="tns:myObject" fieldName="number"/>
        </two>
       </literalValue>
      </namedValue>
        
      myValue3 MyType ::= {
          one     myObject.&number,
          two     123,
          three   { number 123, number myObject.&number }
      }
        
      myValue3 MyType ::= {
          one     myObject.&number,
          two     123,
          three   { number 123, number myObject.&number }
      }
        
      <namedValue name="myValue3" type="tns:MyType">
       <value>
        <attribute name="one">
         <value>
        
      <namedValue name="myValue3" type="tns:MyType">
       <value>
        <attribute name="one">
         <value>
        
          <fromObjects object="tns:myObject" fieldName="number"/>
         </value>
        </attribute>
        <element name="two" literalValue="123"/>
        <attribute name="three">
         <value>
          <item name="number" literalValue="123"/>
          <item name="number">
           <value>
            <fromObjects object="tns:myObject" fieldName="number"/>
           </value>
          </item>
         </value>
        </attribute>
       </value>
      </namedValue>
        
          <fromObjects object="tns:myObject" fieldName="number"/>
         </value>
        </attribute>
        <element name="two" literalValue="123"/>
        <attribute name="three">
         <value>
          <item name="number" literalValue="123"/>
          <item name="number">
           <value>
            <fromObjects object="tns:myObject" fieldName="number"/>
           </value>
          </item>
         </value>
        </attribute>
       </value>
      </namedValue>
        
7.2.3. ValueFromObject Translation
7.2.3. 对象转换的值

The translation of a ValueFromObject is an element item with the [local name] "value". An element item with the [local name] "annotation" MAY be added to the [children] of the <value> element item. An element item with the [local name] "fromObjects" SHALL be appended to the [children] of the <value> element item.

ValueFromObject的翻译是具有[本地名称]“值”的元素项。带有[local name]“annotation”的元素项可以添加到<value>元素项的[children]。带有[本地名称]“fromObjects”的元素项应附加到<value>元素项的[子项]中。

The translation of the ReferencedObjects instance in the ValueFromObject SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

ValueFromObject中ReferencedObjects实例的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

The translation of the FieldName in the ValueFromObject SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

ValueFromObject中字段名的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

7.2.4. ObjectClassFieldValue Translation
7.2.4. ObjectClassFieldValue转换

If an ObjectClassFieldValue is a BuiltinValue in a FixedTypeFieldVal, then the translation of the ObjectClassFieldValue is the translation of the BuiltinValue.

如果ObjectClassFieldValue是FixedTypeFieldVal中的内置值,则ObjectClassFieldValue的转换就是内置值的转换。

If an ObjectClassFieldValue is a ReferencedValue in a FixedTypeFieldVal, then the translation of the ObjectClassFieldValue is the translation of the ReferencedValue.

如果ObjectClassFieldValue是FixedTypeFieldVal中的ReferencedValue,则ObjectClassFieldValue的转换就是ReferencedValue的转换。

If an ObjectClassFieldValue is an OpenTypeFieldVal, then the translation of the ObjectClassFieldValue is an element item with the [local name] "value". An element item with the [local name] "annotation" MAY be added to the [children] of the <value> element item. An element item with the [local name] "openTypeValue" SHALL be

如果ObjectClassFieldValue是OpenTypeFieldVal,则ObjectClassFieldValue的翻译是带有[local name]“value”的元素项。带有[local name]“annotation”的元素项可以添加到<value>元素项的[children]。应使用带有[本地名称]“openTypeValue”的元素项

appended to the [children] of the <value> element item. The translation of the Type in the OpenTypeFieldVal SHALL be added to the [children] or [attributes] of the <openTypeValue> element item. The translation of the Value in the OpenTypeFieldVal SHALL be added to the [children] or [attributes] of the <openTypeValue> element item.

附加到<value>元素项的[children]中。OpenTypeFieldVal中类型的翻译应添加到<openTypeValue>元素项的[children]或[attributes]中。OpenTypeFieldVal中值的转换应添加到<openTypeValue>元素项的[子项]或[属性]中。

Example

实例

      myValue TYPE-IDENTIFIER.&Type ::= INTEGER:123
        
      myValue TYPE-IDENTIFIER.&Type ::= INTEGER:123
        
      <namedValue name="myValue">
       <type>
        <fromClass class="asnx:TYPE-IDENTIFIER" fieldName="Type"/>
       </type>
       <value>
        <openTypeValue type="asnx:INTEGER" literalValue="123"/>
       </value>
      </namedValue>
        
      <namedValue name="myValue">
       <type>
        <fromClass class="asnx:TYPE-IDENTIFIER" fieldName="Type"/>
       </type>
       <value>
        <openTypeValue type="asnx:INTEGER" literalValue="123"/>
       </value>
      </namedValue>
        
8. Translation of Value Sets
8. 值集的转换

The translation of a ValueSet is an element item with the [local name] "valueSet". An element item with the [local name] "annotation" MAY be added to the [children] of the <valueSet> element item. The translation of the ElementSetSpecs instance in the ValueSet SHALL be appended to the [children] of the <valueSet> element item.

ValueSet的翻译是具有[本地名称]“ValueSet”的元素项。带有[local name]“annotation”的元素项可以添加到<valueSet>元素项的[children]。ValueSet中ElementSetSpec实例的翻译应附加到<ValueSet>元素项的[子项]中。

Example

实例

{ 1 | 3..7, ..., 9..19 EXCEPT ( 11 | 12 ) }

{1 | 3..7,…,9..19除了(11 | 12)}

      <valueSet>
       <union>
        <literalValue>1</literalValue>
        <range>
         <minInclusive literalValue="3"/>
         <maxInclusive literalValue="7"/>
        </range>
       </union>
       <extension>
        <all>
         <range>
          <minInclusive literalValue="9"/>
          <maxInclusive literalValue="19"/>
         </range>
         <except>
          <union>
        
      <valueSet>
       <union>
        <literalValue>1</literalValue>
        <range>
         <minInclusive literalValue="3"/>
         <maxInclusive literalValue="7"/>
        </range>
       </union>
       <extension>
        <all>
         <range>
          <minInclusive literalValue="9"/>
          <maxInclusive literalValue="19"/>
         </range>
         <except>
          <union>
        
           <literalValue>11</literalValue>
           <literalValue>12</literalValue>
          </union>
         </except>
        </all>
       </extension>
      </valueSet>
        
           <literalValue>11</literalValue>
           <literalValue>12</literalValue>
          </union>
         </except>
        </all>
       </extension>
      </valueSet>
        
8.1. ElementSetSpecs Translation
8.1. 元素集规范翻译

The translation of an ElementSetSpecs instance where the ellipsis ("...") is not present is the translation of the ElementSetSpec in the RootElementSetSpec.

不存在省略号(“…”)的ElementSetSpec实例的翻译是RootElementSetSpec中ElementSetSpec的翻译。

The translation of an ElementSetSpecs instance where the ellipsis ("...") is present is the translation of the ElementSetSpec in the RootElementSetSpec followed by an element item with the [local name] "extension". If an AdditionalElementSetSpec is present in the ElementSetSpecs, then the translation of the ElementSetSpec in the AdditionalElementSetSpec SHALL be added to the [children] of the <extension> element item.

存在省略号(“…”)的ElementSetSpec实例的翻译是RootElementSetSpec中ElementSetSpec的翻译,后跟带有[本地名称]“扩展名”的元素项。如果ElementSetSpec中存在额外的ElementSetSpec,则额外ElementSetSpec中ElementSetSpec的翻译应添加到<extension>元素项的[子项]中。

8.2. ElementSetSpec Translation
8.2. ElementSetSpec翻译

If an ElementSetSpec is of the "ALL Exclusions" form, then the translation of the ElementSetSpec is an element item with the [local name] "all". An element item with the [local name] "except" SHALL be added to the [children] of the <all> element item. The translation of the Elements instance in the Exclusions SHALL be added to the [children] of the <except> element item.

如果ElementSetSpec是“所有排除”形式,则ElementSetSpec的翻译是带有[本地名称]“全部”的元素项。带有[本地名称]“除外”的元素项应添加到<all>元素项的[子项]中。排除项中元素实例的翻译应添加到<except>元素项的[子项]中。

If an ElementSetSpec is a Unions instance, then the translation of the ElementSetSpec is the translation of the Unions instance.

如果ElementSetSpec是Unions实例,则ElementSetSpec的转换就是Unions实例的转换。

If a Unions instance has only one nested Intersections instance, then the translation of the Unions instance is the translation of that Intersections instance; otherwise, the translation of the Unions instance is an element item with the [local name] "union". In the latter case, the translation of each nested Intersections instance SHALL be appended to the [children] of the <union> element item.

如果联合实例只有一个嵌套的交叉点实例,则联合实例的转换就是该交叉点实例的转换;否则,Unions实例的翻译是具有[本地名称]“union”的元素项。在后一种情况下,每个嵌套交叉点实例的转换应附加到<union>元素项的[children]。

If an Intersections instance has only one nested IntersectionElements instance, then the translation of the Intersections instance is the translation of that IntersectionElements instance; otherwise, the translation of the Intersections instance is an element item with the [local name] "intersection". In the latter case, the translation of each nested IntersectionElements instance SHALL be appended to the [children] of the <intersection> element item.

如果一个交叉点实例只有一个嵌套的IntersectionElements实例,那么交叉点实例的转换就是该IntersectionElements实例的转换;否则,交叉点实例的转换是具有[本地名称]“交叉点”的元素项。在后一种情况下,每个嵌套IntersectionElements实例的翻译应附加到<intersection>元素项的[子项]中。

If an IntersectionElements instance is of the "Elems Exclusions" form, then the translation of the IntersectionElements instance is an element item with the [local name] "all". The translation of the Elements instance in the Elems SHALL be added to the [children] of the <all> element item. An element item with the [local name] "except" SHALL be appended to the [children] of the <all> element item. The translation of the Elements instance in the Exclusions SHALL be added to the [children] of the <except> element item.

如果IntersectionElements实例是“Elems Exclutions”形式,则IntersectionElements实例的翻译是一个元素项,其[local name]“all”。元素中元素实例的翻译应添加到<all>元素项的[子项]中。带有[本地名称]“除外”的元素项应附加到<all>元素项的[子项]中。排除项中元素实例的翻译应添加到<except>元素项的[子项]中。

If an IntersectionElements instance is an Elements instance, then the translation of the IntersectionElements instance is the translation of the Elements instance.

如果IntersectionElements实例是Elements实例,则IntersectionElements实例的转换就是Elements实例的转换。

The translation of an Elements instance is the translation of the SubtypeElements, ObjectSetElements, or ElementSetSpec in the Elements instance.

Elements实例的转换是Elements实例中的子元素、ObjectSetElements或ElementSetSpec的转换。

8.3. SubtypeElements Translation
8.3. 子元素翻译

If a SubtypeElements instance is a SingleValue, then the translation of the SubtypeElements instance is the translation of the Value in the SingleValue, except that an attribute form of the Value translation SHALL NOT be used.

如果SubsubElements实例是SingleValue,则SubsubElements实例的转换是SingleValue中值的转换,但不应使用值转换的属性形式。

If a SubtypeElements instance is a ContainedSubtype, then the translation of the SubtypeElements instance is an element item with the [local name] "includes". The translation of the Type in the ContainedSubtype SHALL be added to the [children] or [attributes] of the <includes> element item.

如果SubjectElements实例是ContainedSubtype,则SubjectElements实例的翻译是具有[local name]“includes”的元素项。ContainedSubtype中类型的翻译应添加到<includes>元素项的[children]或[attributes]中。

If a SubtypeElements instance is a ValueRange, then the translation of the SubtypeElements instance is the translation of the ValueRange.

如果SubjectElements实例是ValueRange,则SubjectElements实例的转换就是ValueRange的转换。

If a SubtypeElements instance is a SizeConstraint, then the translation of the SubtypeElements instance is an element item with the [local name] "size". The translation of the Constraint in the SizeConstraint SHALL be added to the [children] of the <size> element item.

如果SubsubElements实例是SizeConstraint,则SubsubElements实例的翻译是具有[local name]“size”的元素项。SizeConstraint中约束的转换应添加到<size>元素项的[子项]中。

If a SubtypeElements instance is a TypeConstraint, then the translation of the SubtypeElements instance is an element item with the [local name] "typeConstraint". The translation of the Type in the TypeConstraint SHALL be added to the [children] or [attributes] of the <typeConstraint> element item.

如果SubjectElements实例是TypeConstraint,则SubjectElements实例的转换是具有[local name]“TypeConstraint”的元素项。TypeConstraint中类型的翻译应添加到<TypeConstraint>元素项的[子项]或[属性]中。

If a SubtypeElements instance is a PermittedAlphabet, then the translation of the SubtypeElements instance is an element item with the [local name] "from". The translation of the Constraint in the PermittedAlphabet SHALL be added to the [children] of the <from> element item.

如果SubsubElements实例是PermittedDalphabet,则SubsubElements实例的翻译是具有[local name]“from”的元素项。PermittedAlphabet中约束的转换应添加到<from>元素项的[子项]中。

If a SubtypeElements instance is an InnerTypeConstraints instance, then the translation of the SubtypeElements instance is the translation of the InnerTypeConstraints instance.

如果SubjectElements实例是InnerTypeConstraints实例,则SubjectElements实例的转换就是InnerTypeConstraints实例的转换。

If a SubtypeElements instance is a PatternConstraint, then the translation of the SubtypeElements instance is an element item with the [local name] "pattern". The translation of the Value in the PatternConstraint SHALL be added to the [children] or [attributes] of the <pattern> element item.

如果SubjectElements实例是PatternConstraint,则SubjectElements实例的转换是具有[local name]“pattern”的元素项。PatternConstraint中值的转换应添加到<pattern>元素项的[children]或[attributes]。

8.3.1. ValueRange Translation
8.3.1. 值范围转换

The translation of a ValueRange is an element item with the [local name] "range".

ValueRange的翻译是具有[本地名称]“范围”的元素项。

If the LowerEndpoint in the ValueRange is of the "LowerEndValue <" form, then an element item with the [local name] "minExclusive" SHALL be added to the [children] of the <range> element item. If the LowerEndValue is a Value, then the translation of the Value SHALL be added to the [children] or [attributes] of the <minExclusive> element item.

如果ValueRange中的LowerEndpoint为“LowerEndValue<”形式,则应将带有[本地名称]“minExclusive”的元素项添加到<range>元素项的[子项]中。如果LowerEndValue是一个值,则该值的翻译应添加到<minExclusive>元素项的[children]或[attributes]中。

If the LowerEndpoint in the ValueRange is of the "LowerEndValue" form and the LowerEndValue is a Value, then an element item with the [local name] "minInclusive" SHALL be added to the [children] of the <range> element item. The translation of the Value in the LowerEndValue SHALL be added to the [children] or [attributes] of the <minInclusive> element item.

如果ValueRange中的LowerEndpoint是“LowerEndValue”形式,LowerEndValue是一个值,则带有[本地名称]“minInclusive”的元素项应添加到<range>元素项的[子项]中。应将LowerEndValue中值的转换添加到<minInclusive>元素项的[子项]或[属性]中。

If the LowerEndpoint in the ValueRange is of the "LowerEndValue" form and the LowerEndValue is "MIN", then an element item with the [local name] "minInclusive" MAY be added to the [children] of the <range> element item.

如果ValueRange中的LowerEndpoint为“LowerEndValue”形式,LowerEndValue为“MIN”,则可将带有[本地名称]“minInclusive”的元素项添加到<range>元素项的[子项]中。

If the UpperEndpoint in the ValueRange is of the "< UpperEndValue" form, then an element item with the [local name] "maxExclusive" SHALL be added to the [children] of the <range> element item. If the UpperEndValue is a Value, then the translation of the Value SHALL be added to the [children] or [attributes] of the <maxExclusive> element item.

如果ValueRange中的UpperEndpoint为“<UpperEndValue”形式,则应将带有[本地名称]“maxExclusive”的元素项添加到<range>元素项的[子项]中。如果UpperEndValue是一个值,则该值的翻译应添加到<maxExclusive>元素项的[children]或[attributes]中。

If the UpperEndpoint in the ValueRange is of the "UpperEndValue" form and the UpperEndValue is a Value, then an element item with the [local name] "maxInclusive" SHALL be added to the [children] of the <range> element item. The translation of the Value in the UpperEndValue SHALL be added to the [children] or [attributes] of the <maxInclusive> element item.

如果ValueRange中的UpperEndValue为“UpperEndValue”形式且UpperEndValue为值,则应将带有[本地名称]“maxInclusive”的元素项添加到<range>元素项的[子项]中。UpperEndValue中值的转换应添加到<maxInclusive>元素项的[子项]或[属性]中。

If the UpperEndpoint in the ValueRange is of the "UpperEndValue" form and the UpperEndValue is "MAX", then an element item with the [local name] "maxInclusive" MAY be added to the [children] of the <range> element item.

如果ValueRange中的UpperEndValue为“UpperEndValue”形式,UpperEndValue为“MAX”,则可将带有[本地名称]“maxInclusive”的元素项添加到<range>元素项的[子项]中。

Examples

例子

1..10

1..10

      <range>
       <minInclusive literalValue="1"/>
       <maxInclusive literalValue="10"/>
      </range>
        
      <range>
       <minInclusive literalValue="1"/>
       <maxInclusive literalValue="10"/>
      </range>
        

0..MAX

0..MAX

      <range>
       <minInclusive literalValue="0"/>
      </range>
        
      <range>
       <minInclusive literalValue="0"/>
      </range>
        

0<..<MAX

0<..<最大值

      <range>
       <minExclusive literalValue="0"/>
       <maxExclusive/>
      </range>
        
      <range>
       <minExclusive literalValue="0"/>
       <maxExclusive/>
      </range>
        
8.3.2. InnerTypeConstraints Translation
8.3.2. 内部类型约束转换

The translation of an InnerTypeConstraints instance that has a SingleTypeConstraint is an element item with the [local name] "withComponent". The translation of the Constraint in the SingleTypeConstraint SHALL be added to the [children] of the <withComponent> element item.

具有SingleTypeConstraint的InnerTypeConstraints实例的转换是具有[local name]“withComponent”的元素项。SingleTypeConstraint中约束的转换应添加到<withComponent>元素项的[子项]中。

The translation of an InnerTypeConstraints instance that has a MultipleTypeConstraints instance is an element item with the [local name] "withComponents". If the MultipleTypeConstraints instance is a PartialSpecification, then an attribute item with the [local name] "partial" and the [normalized value] "true" or "1" SHALL be added to the [attributes] of the <withComponents> element item.

具有MultipleTypeConstraints实例的InnerTypeConstraints实例的转换是具有[local name]“withComponents”的元素项。如果MultipleTypeConstraints实例是PartialSpecification,则应将带有[local name]“partial”和[normalized value]“true”或“1”的属性项添加到<withComponents>元素项的[attributes]中。

If the MultipleTypeConstraints instance is a FullSpecification, then an attribute item with the [local name] "partial" and the [normalized value] "false" or "0" MAY be added to the [attributes] of the <withComponents> element item. The translation of each NamedConstraint nested in the TypeConstraints instance in the FullSpecification or PartialSpecification SHALL be appended to the [children] of the <withComponents> element item.

如果MultipleTypeConstraints实例是一个完整规范,那么可以将具有[local name]“partial”和[normalized value]“false”或“0”的属性项添加到<withComponents>元素项的[attributes]中。嵌套在FullSpecification或PartialSpecification的TypeConstraint实例中的每个NamedConstraint的翻译应附加到<withComponents>元素项的[子项]中。

The translation of a NamedConstraint is an element item with the same [local name] (i.e., "attribute", "element", "component", "group", "member", or "simpleContent") as the translation of the NamedType corresponding to the identifier in the NamedConstraint. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <attribute>, <element>, <component>, <group>, <member>, or <simpleContent> element item. The [normalized value] of this attribute item is a qualified name for the expanded name of the NamedType corresponding to the identifier in the NamedConstraint.

NamedConstraint的翻译是与NamedConstraint中标识符对应的NamedType的翻译具有相同[本地名称](即“属性”、“元素”、“组件”、“组”、“成员”或“simpleContent”)的元素项。带有[本地名称]“名称”的属性项应添加到<attribute>、<element>、<component>、<group>、<member>或<simpleContent>元素项的[属性]中。此属性项的[normalized value]是与NamedConstraint中的标识符相对应的NamedType扩展名的限定名。

If the PresenceConstraint in the ComponentConstraint in the NamedConstraint is not empty, then an attribute item with the [local name] "use" SHALL be added to the [attributes] of the <attribute>, <element>, <component>, <group>, <member>, or <simpleContent> element item. The [normalized value] of this attribute item is the text of the PresenceConstraint with all letters downcased, i.e., either "present", "absent", or "optional".

如果NamedConstraint中ComponentConstraint中的PresenceConstraint不为空,则应将带有[local name]“use”的属性项添加到<attribute>、<element>、<component>、<group>、<member>或<simpleContent>元素项的[attributes]中。此属性项的[normalized value]是PresenceConstraint的文本,所有字母都是小写的,即“present”、“缺席”或“optional”。

If the ValueConstraint in the ComponentConstraint in the NamedConstraint is not empty, then the translation of the Constraint in the ValueConstraint SHALL be added to the [children] of the <attribute>, <element>, <component>, <group>, <member>, or <simpleContent> element item.

如果NamedConstraint中ComponentConstraint中的ValueConstraint不为空,则ValueConstraint中约束的转换应添加到<attribute>、<element>、<component>、<group>、<member>或<simpleContent>元素项的[子项]中。

9. Translation of Object Classes
9. 对象类的转换

The translation of an ObjectClass is the translation of the DefinedObjectClass, ObjectClassDefn, or ParameterizedObjectClass in the ObjectClass.

ObjectClass的转换是ObjectClass中DefinedObjectClass、ObjectClassDefn或ParameterizedObjectClass的转换。

The translation of a ParameterizedObjectClass is described in Section 13.

第13节描述了参数化对象类的转换。

9.1. DefinedObjectClass Translation
9.1. 定义对象类转换

If a DefinedObjectClass is an objectclassreference (not a DummyReference), an ExternalObjectClassReference, or a UsefulObjectClassReference, then the translation of the

如果DefinedObjectClass是objectclassreference(不是DummyReference)、ExternalObjectClassReference或UsefulObjectClassReference,则

DefinedObjectClass is either the attribute form translation of an object class reference, or the element form translation of an object class reference.

DefinedObjectClass是对象类引用的属性形式转换,或者是对象类引用的元素形式转换。

The attribute form translation of an object class reference is an attribute item with the [local name] "class". The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced object class definition (see Section 5.1). In the case of a UsefulObjectClassReference, the namespace name of the expanded name is "urn:ietf:params:xml:ns:asnx", and the local name is either "TYPE-IDENTIFIER" or "ABSTRACT-SYNTAX", as the case may be. The attribute form translation SHALL NOT be used if the expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items (see Section 5.1). Otherwise, the translator is free to choose either the attribute form or element form translation for an object class reference.

对象类引用的属性形式转换是具有[本地名称]“类”的属性项。此属性项的[normalized value]是引用对象类定义的扩展名称的限定名称(参见第5.1节)。对于UsefulObjectClassReference,扩展名称的命名空间名称为“urn:ietf:params:xml:ns:asnx”,本地名称为“TYPE-IDENTIFIER”或“ABSTRACT-SYNTAX”,具体视情况而定。如果扩展名称与当前模块及其<import>元素项引用的模块之间没有区别,则不应使用属性形式转换(见第5.1节)。否则,转换器可以自由选择对象类引用的属性形式或元素形式转换。

   The element form translation of an object class reference is an
   element item with the [local name] "class".  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
   <class> element item.  An attribute item with the [local name] "ref"
   SHALL be added to the [attributes] of the <class> element item.  The
   [normalized value] of this attribute item is a qualified name for the
   expanded name of the referenced object class definition.  In the case
   of a UsefulObjectClassReference, the namespace name of the expanded
   name is "urn:ietf:params:xml:ns:asnx" and the local name is either
   "TYPE-IDENTIFIER" or "ABSTRACT-SYNTAX", as the case may be.  If the
   expanded name is not distinct with respect to the current module and
   the modules referenced by its <import> element items, then an
   attribute item with the [local name] "context" SHALL be added to the
   [attributes] of the <class> element item; otherwise, if the module
   containing the referenced object class definition has a schema
   identity URI, then an attribute item with the [local name] "context"
   MAY be added to the [attributes] of the <class> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the referenced object class definition.
        
   The element form translation of an object class reference is an
   element item with the [local name] "class".  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
   <class> element item.  An attribute item with the [local name] "ref"
   SHALL be added to the [attributes] of the <class> element item.  The
   [normalized value] of this attribute item is a qualified name for the
   expanded name of the referenced object class definition.  In the case
   of a UsefulObjectClassReference, the namespace name of the expanded
   name is "urn:ietf:params:xml:ns:asnx" and the local name is either
   "TYPE-IDENTIFIER" or "ABSTRACT-SYNTAX", as the case may be.  If the
   expanded name is not distinct with respect to the current module and
   the modules referenced by its <import> element items, then an
   attribute item with the [local name] "context" SHALL be added to the
   [attributes] of the <class> element item; otherwise, if the module
   containing the referenced object class definition has a schema
   identity URI, then an attribute item with the [local name] "context"
   MAY be added to the [attributes] of the <class> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the referenced object class definition.
        

Aside: If a reference name is not distinct, then the module containing the referenced definition must have a schema identity URI (see Section 5.1).

旁白:如果引用名称不明确,则包含引用定义的模块必须具有模式标识URI(参见第5.1节)。

The translation of the DefinedObjectClass is the same whether the object class definition is referenced by an objectclassreference or an ExternalObjectClassReference.

无论对象类定义由objectclassreference还是ExternalObjectClassReference引用,DefinedObjectClass的转换都是相同的。

If a DefinedObjectClass is a DummyReference, then the translation of the DefinedObjectClass is the translation of the DummyReference (see Section 13).

如果DefinedObjectClass是DummyReference,那么DefinedObjectClass的翻译就是DummyReference的翻译(参见第13节)。

9.2. ObjectClassDefn Translation
9.2. ObjectClassDefn翻译

The translation of an ObjectClassDefn is an element item with the [local name] "class". An element item with the [local name] "annotation" MAY be added to the [children] of the <class> element item. The translation of each FieldSpec in the ObjectClassDefn SHALL be appended to the [children] of the <class> element item.

ObjectClassDefn的翻译是具有[本地名称]“类”的元素项。带有[local name]“annotation”的元素项可以添加到<class>元素项的[children]。ObjectClassDefn中每个FieldSpec的翻译应附加到<class>元素项的[子项]中。

The translation of a FieldSpec is the translation of the TypeFieldSpec, FixedTypeValueFieldSpec, VariableTypeValueFieldSpec, FixedTypeValueSetFieldSpec, VariableTypeValueSetFieldSpec, ObjectFieldSpec, or ObjectSetFieldSpec in the FieldSpec.

FieldSpec的翻译是FieldSpec中的TypeFieldSpec、FixedTypeValueFieldSpec、VariableTypeValueFieldSpec、FixedTypeValueSetFieldSpec、VariableTypeValueSetFieldSpec、ObjectFieldSpec或ObjectSetFieldSpec的翻译。

9.2.1. TypeFieldSpec Translation
9.2.1. 类型字段规范翻译

The translation of a TypeFieldSpec where the TypeOptionalitySpec is absent is an element item with the [local name] "typeField".

缺少TypeOptionalitySpec的TypeFieldSpec的翻译是一个带有[本地名称]“typeField”的元素项。

The translation of a TypeFieldSpec with a TypeOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "typeField" SHALL be added to the [children] of the <optional> element item.

TypeFieldSpec与“可选”形式的TypeOptionalitySpec的翻译是具有[本地名称]“可选”的元素项。带有[本地名称]“类型字段”的元素项应添加到<optional>元素项的[子项]中。

The translation of a TypeFieldSpec with a TypeOptionalitySpec of the "DEFAULT Type" form is an element item with the [local name] "optional". An element item with the [local name] "typeField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the Type in the TypeOptionalitySpec SHALL be added to the [children] or [attributes] of the <default> element item.

TypeFieldSpec与“DEFAULT Type”形式的TypeOptionalitySpec的翻译是一个元素项,其[本地名称]“可选”。带有[本地名称]“类型字段”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。TypeOptionalitySpec中类型的翻译应添加到<default>元素项的[children]或[attributes]中。

An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <typeField> element item. The [normalized value] of this attribute item is the typefieldreference in the TypeFieldSpec, without the ampersand character ('&', U+0026). An element item with the [local name] "annotation" MAY be added to the [children] of the <typeField> element item.

带有[本地名称]“名称”的属性项应添加到<typeField>元素项的[属性]中。此属性项的[normalized value]是TypeFieldSpec中的typefieldreference,不带符号('&',U+0026)。带有[local name]“annotation”的元素项可以添加到<typeField>元素项的[children]。

Example

实例

      CLASS {
          &One,
          &Two    OPTIONAL,
          &Three  DEFAULT OBJECT IDENTIFIER
      }
        
      CLASS {
          &One,
          &Two    OPTIONAL,
          &Three  DEFAULT OBJECT IDENTIFIER
      }
        
      <class>
       <typeField name="One"/>
       <optional>
        <typeField name="Two"/>
       </optional>
       <optional>
        <typeField name="Three"/>
        <default type="asnx:OBJECT-IDENTIFIER"/>
       </optional>
      </class>
        
      <class>
       <typeField name="One"/>
       <optional>
        <typeField name="Two"/>
       </optional>
       <optional>
        <typeField name="Three"/>
        <default type="asnx:OBJECT-IDENTIFIER"/>
       </optional>
      </class>
        
9.2.2. FixedTypeValueFieldSpec Translation
9.2.2. FixedTypeValueFieldSpec翻译

The translation of a FixedTypeValueFieldSpec where the ValueOptionalitySpec is absent is an element item with the [local name] "valueField".

不存在ValueOptionalitySpec的FixedTypeValueFieldSpec的翻译是一个带有[local name]“valueField”的元素项。

The translation of a FixedTypeValueFieldSpec with a ValueOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "valueField" SHALL be added to the [children] of the <optional> element item.

FixedTypeValueFieldSpec与“可选”形式的ValueOptionalitySpec的翻译是具有[本地名称]“可选”的元素项。带有[本地名称]“valueField”的元素项应添加到<optional>元素项的[子项]中。

The translation of a FixedTypeValueFieldSpec with a ValueOptionalitySpec of the "DEFAULT Value" form is an element item with the [local name] "optional". An element item with the [local name] "valueField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the Value in the ValueOptionalitySpec SHALL be added to the [children] or [attributes] of the <default> element item.

FixedTypeValueFieldSpec与“默认值”形式的ValueOptionalitySpec的转换是一个元素项,其[本地名称]为“可选”。带有[本地名称]“valueField”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。ValueOptionalitySpec中值的转换应添加到<default>元素项的[子项]或[属性]中。

   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <valueField> element item.  The
   [normalized value] of this attribute item is the valuefieldreference
   in the FixedTypeValueFieldSpec, without the ampersand character ('&',
   U+0026).  If the "UNIQUE" keyword is present, then an attribute item
   with the [local name] "unique" and [normalized value] "true" or "1"
   SHALL be added to the [attributes] of the <valueField> element item;
   otherwise, an attribute item with the [local name] "unique" and
   [normalized value] "false" or "0" MAY be added to the [attributes] of
   the <valueField> element item.  An element item with the [local name]
   "annotation" MAY be added to the [children] of the <valueField>
   element item.  The translation of the Type in the
   FixedTypeValueFieldSpec SHALL be added to the [children] or
   [attributes] of the <valueField> element item.
        
   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <valueField> element item.  The
   [normalized value] of this attribute item is the valuefieldreference
   in the FixedTypeValueFieldSpec, without the ampersand character ('&',
   U+0026).  If the "UNIQUE" keyword is present, then an attribute item
   with the [local name] "unique" and [normalized value] "true" or "1"
   SHALL be added to the [attributes] of the <valueField> element item;
   otherwise, an attribute item with the [local name] "unique" and
   [normalized value] "false" or "0" MAY be added to the [attributes] of
   the <valueField> element item.  An element item with the [local name]
   "annotation" MAY be added to the [children] of the <valueField>
   element item.  The translation of the Type in the
   FixedTypeValueFieldSpec SHALL be added to the [children] or
   [attributes] of the <valueField> element item.
        

Example

实例

      CLASS {
          &one    OBJECT IDENTIFIER UNIQUE,
          &two    BOOLEAN OPTIONAL,
          &three  INTEGER DEFAULT 0
      }
        
      CLASS {
          &one    OBJECT IDENTIFIER UNIQUE,
          &two    BOOLEAN OPTIONAL,
          &three  INTEGER DEFAULT 0
      }
        
      <class>
       <valueField name="one" unique="true"
                   type="asnx:OBJECT-IDENTIFIER"/>
       <optional>
        <valueField name="two" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <valueField name="three" type="asnx:INTEGER"/>
        <default literalValue="0"/>
       </optional>
      </class>
        
      <class>
       <valueField name="one" unique="true"
                   type="asnx:OBJECT-IDENTIFIER"/>
       <optional>
        <valueField name="two" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <valueField name="three" type="asnx:INTEGER"/>
        <default literalValue="0"/>
       </optional>
      </class>
        
9.2.3. FixedTypeValueSetFieldSpec Translation
9.2.3. FixedTypeValueSetFieldSpec转换

The translation of a FixedTypeValueSetFieldSpec where the ValueSetOptionalitySpec is absent is an element item with the [local name] "valueSetField".

不存在ValueSetOptionalitySpec的FixedTypeValueSetFieldSpec的翻译是一个具有[本地名称]“valueSetField”的元素项。

The translation of a FixedTypeValueSetFieldSpec with a ValueSetOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "valueSetField" SHALL be added to the [children] of the <optional> element item.

FixedTypeValueSetFieldSpec与“可选”形式的ValueSetOptionalitySpec的转换是具有[local name]“可选”的元素项。带有[本地名称]“valueSetField”的元素项应添加到<optional>元素项的[子项]中。

The translation of a FixedTypeValueSetFieldSpec with a ValueSetOptionalitySpec of the "DEFAULT ValueSet" form is an element item with the [local name] "optional". An element item with the [local name] "valueSetField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the ValueSet in the ValueSetOptionalitySpec SHALL be added to the [children] of the <default> element item.

FixedTypeValueSetFieldSpec与“DEFAULT ValueSet”表单的ValueSetOptionalitySpec的转换是一个元素项,其[本地名称]“可选”。带有[本地名称]“valueSetField”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。ValueSetOptionalitySpec中的值集翻译应添加到<default>元素项的[子项]中。

   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <valueSetField> element item.  The
   [normalized value] of this attribute item is the
   valuesetfieldreference in the FixedTypeValueSetFieldSpec, without the
   ampersand character ('&', U+0026).  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
        
   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <valueSetField> element item.  The
   [normalized value] of this attribute item is the
   valuesetfieldreference in the FixedTypeValueSetFieldSpec, without the
   ampersand character ('&', U+0026).  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
        

<valueSetField> element item. The translation of the Type in the FixedTypeValueSetFieldSpec SHALL be added to the [children] or [attributes] of the <valueSetField> element item.

<valueSetField>元素项。FixedTypeValueSetFieldSpec中类型的翻译应添加到<valueSetField>元素项的[children]或[attributes]中。

Example

实例

      CLASS {
          &One    UTF8String,
          &Two    BOOLEAN OPTIONAL,
          &Three  INTEGER DEFAULT { 1 | 2 }
      }
        
      CLASS {
          &One    UTF8String,
          &Two    BOOLEAN OPTIONAL,
          &Three  INTEGER DEFAULT { 1 | 2 }
      }
        
      <class>
       <valueSetField name="One" type="asnx:UTF8String"/>
       <optional>
        <valueSetField name="Two" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <valueSetField name="Three" type="asnx:INTEGER"/>
        <default>
         <valueSet>
          <union>
           <literalValue>1</literalValue>
           <literalValue>2</literalValue>
          </union>
         </valueSet>
        </default>
       </optional>
      </class>
        
      <class>
       <valueSetField name="One" type="asnx:UTF8String"/>
       <optional>
        <valueSetField name="Two" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <valueSetField name="Three" type="asnx:INTEGER"/>
        <default>
         <valueSet>
          <union>
           <literalValue>1</literalValue>
           <literalValue>2</literalValue>
          </union>
         </valueSet>
        </default>
       </optional>
      </class>
        
9.2.4. VariableTypeValueFieldSpec Translation
9.2.4. VariableTypeValueFieldSpec转换

The translation of a VariableTypeValueFieldSpec where the ValueOptionalitySpec is absent is an element item with the [local name] "valueField".

缺少ValueOptionalitySpec的VariableTypeValueFieldSpec的翻译是一个带有[local name]“valueField”的元素项。

The translation of a VariableTypeValueFieldSpec with a ValueOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "valueField" SHALL be added to the [children] of the <optional> element item.

VariableTypeValueFieldSpec与“可选”形式的ValueOptionalitySpec的转换是具有[本地名称]“可选”的元素项。带有[本地名称]“valueField”的元素项应添加到<optional>元素项的[子项]中。

The translation of a VariableTypeValueFieldSpec with a ValueOptionalitySpec of the "DEFAULT Value" form is an element item with the [local name] "optional". An element item with the [local name] "valueField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>

VariableTypeValueFieldSpec与“DEFAULT Value”形式的ValueOptionalitySpec的转换是一个元素项,其[local name]“optional”。带有[本地名称]“valueField”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>

element item. The translation of the Value in the ValueOptionalitySpec SHALL be added to the [children] or [attributes] of the <default> element item.

元素项。ValueOptionalitySpec中值的转换应添加到<default>元素项的[子项]或[属性]中。

An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <valueField> element item. The [normalized value] of this attribute item is the valuefieldreference in the VariableTypeValueFieldSpec, without the ampersand character ('&', U+0026). An element item with the [local name] "annotation" MAY be added to the [children] of the <valueField> element item. An element item with the [local name] "typeFromField" SHALL be appended to the [children] of the <valueField> element item. The translation of the FieldName in the VariableTypeValueFieldSpec SHALL be added to the [children] or [attributes] of the <typeFromField> element item.

带有[本地名称]“名称”的属性项应添加到<valueField>元素项的[属性]中。此属性项的[normalized value]是VariableTypeValueFieldSpec中的valuefieldreference,不带符号('&',U+0026)。带有[local name]“annotation”的元素项可以添加到<valueField>元素项的[children]。带有[本地名称]“typeFromField”的元素项应附加到<valueField>元素项的[子项]中。VariableTypeValueFieldSpec中字段名的翻译应添加到<typeFromField>元素项的[children]或[attributes]中。

Example

实例

      CLASS {
          &Syntax DEFAULT INTEGER,
          &one    &Syntax,
          &two    &Syntax OPTIONAL,
          &three  &Syntax DEFAULT 0
      }
        
      CLASS {
          &Syntax DEFAULT INTEGER,
          &one    &Syntax,
          &two    &Syntax OPTIONAL,
          &three  &Syntax DEFAULT 0
      }
        
      <class>
       <optional>
        <typeField name="Syntax"/>
        <default type="asnx:INTEGER"/>
       </optional>
       <valueField name="one">
        <typeFromField fieldName="Syntax"/>
       </valueField>
       <optional>
        <valueField name="two">
         <typeFromField fieldName="Syntax"/>
        </valueField>
       </optional>
       <optional>
        <valueField name="three">
         <typeFromField fieldName="Syntax"/>
        </valueField>
        <default literalValue="0"/>
       </optional>
      </class>
        
      <class>
       <optional>
        <typeField name="Syntax"/>
        <default type="asnx:INTEGER"/>
       </optional>
       <valueField name="one">
        <typeFromField fieldName="Syntax"/>
       </valueField>
       <optional>
        <valueField name="two">
         <typeFromField fieldName="Syntax"/>
        </valueField>
       </optional>
       <optional>
        <valueField name="three">
         <typeFromField fieldName="Syntax"/>
        </valueField>
        <default literalValue="0"/>
       </optional>
      </class>
        
9.2.5. VariableTypeValueSetFieldSpec Translation
9.2.5. VariableTypeValueSetFieldSpec转换

The translation of a VariableTypeValueSetFieldSpec where the ValueSetOptionalitySpec is absent is an element item with the [local name] "valueSetField".

ValueSetOptionalitySpec不存在的VariableTypeValueSetFieldSpec的翻译是一个具有[local name]“valueSetField”的元素项。

The translation of a VariableTypeValueSetFieldSpec with a ValueSetOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "valueSetField" SHALL be added to the [children] of the <optional> element item.

VariableTypeValueSetFieldSpec与“可选”形式的ValueSetOptionalitySpec的转换是一个元素项,其[本地名称]为“可选”。带有[本地名称]“valueSetField”的元素项应添加到<optional>元素项的[子项]中。

The translation of a VariableTypeValueSetFieldSpec with a ValueSetOptionalitySpec of the "DEFAULT ValueSet" form is an element item with the [local name] "optional". An element item with the [local name] "valueSetField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the ValueSet in the ValueSetOptionalitySpec SHALL be added to the [children] of the <default> element item.

VariableTypeValueSetFieldSpec与“DEFAULT ValueSet”形式的ValueSetOptionalitySpec的转换是一个元素项,其[本地名称]为“可选”。带有[本地名称]“valueSetField”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。ValueSetOptionalitySpec中的值集翻译应添加到<default>元素项的[子项]中。

   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <valueSetField> element item.  The
   [normalized value] of this attribute item is the
   valuesetfieldreference in the VariableTypeValueSetFieldSpec, without
   the ampersand character ('&', U+0026).  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
   <valueSetField> element item.  An element item with the [local name]
   "typeFromField" SHALL be appended to the [children] of the
   <valueSetField> element item.  The translation of the FieldName in
   the VariableTypeValueSetFieldSpec SHALL be added to the [children] or
   [attributes] of the <typeFromField> element item.
        
   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <valueSetField> element item.  The
   [normalized value] of this attribute item is the
   valuesetfieldreference in the VariableTypeValueSetFieldSpec, without
   the ampersand character ('&', U+0026).  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
   <valueSetField> element item.  An element item with the [local name]
   "typeFromField" SHALL be appended to the [children] of the
   <valueSetField> element item.  The translation of the FieldName in
   the VariableTypeValueSetFieldSpec SHALL be added to the [children] or
   [attributes] of the <typeFromField> element item.
        

Example

实例

      CLASS {
          &Syntax DEFAULT INTEGER,
          &One    &Syntax,
          &Two    &Syntax OPTIONAL,
          &Three  &Syntax DEFAULT { 1 | 2 }
      }
        
      CLASS {
          &Syntax DEFAULT INTEGER,
          &One    &Syntax,
          &Two    &Syntax OPTIONAL,
          &Three  &Syntax DEFAULT { 1 | 2 }
      }
        
      <class>
       <optional>
        <typeField name="Syntax"/>
        <default type="asnx:INTEGER"/>
       </optional>
        
      <class>
       <optional>
        <typeField name="Syntax"/>
        <default type="asnx:INTEGER"/>
       </optional>
        
       <valueSetField name="One">
        <typeFromField fieldName="Syntax"/>
       </valueSetField>
       <optional>
        <valueSetField name="Two">
         <typeFromField fieldName="Syntax"/>
        </valueSetField>
       </optional>
       <optional>
        <valueSetField name="Three">
         <typeFromField fieldName="Syntax"/>
        </valueSetField>
        <default>
         <valueSet>
          <union>
           <literalValue>1</literalValue>
           <literalValue>2</literalValue>
          </union>
         </valueSet>
        </default>
       </optional>
      </class>
        
       <valueSetField name="One">
        <typeFromField fieldName="Syntax"/>
       </valueSetField>
       <optional>
        <valueSetField name="Two">
         <typeFromField fieldName="Syntax"/>
        </valueSetField>
       </optional>
       <optional>
        <valueSetField name="Three">
         <typeFromField fieldName="Syntax"/>
        </valueSetField>
        <default>
         <valueSet>
          <union>
           <literalValue>1</literalValue>
           <literalValue>2</literalValue>
          </union>
         </valueSet>
        </default>
       </optional>
      </class>
        
9.2.6. FieldName Translation
9.2.6. 字段名翻译

The translation of a FieldName is either, at the translator's option, an attribute item with the [local name] "fieldName" added to the [attributes] of the enclosing element item, or an element item with the [local name] "fieldName" appended to the [children] of the enclosing element item.

字段名的翻译可以是,翻译人员可以选择将[local name]“FieldName”添加到封闭元素项的[attributes]中的属性项,或者将[local name]“FieldName”添加到封闭元素项的[children]中的元素项。

The [normalized value] of the fieldName attribute item is a solidus ('/', U+002F) separated list of the PrimitiveFieldName instances in the FieldName, without the ampersand characters ('&', U+0026). Leading and/or trailing white space characters MAY be added to the [normalized value] of the attribute item. White space characters MAY be added immediately before and/or after any solidus character ('/', U+002F) in the [normalized value].

fieldName属性项的[normalized value]是fieldName中原语fieldName实例的实线('/',U+002F)分隔列表,不带符号('&',U+0026)。可以将前导和/或尾随空格字符添加到属性项的[标准化值]中。可在[normalized value]中的任何实线字符('/',U+002F)之前和/或之后添加空白字符。

The [children] property of the <fieldName> element item is set to the sequence of character items for a solidus ('/', U+002F) separated list of the PrimitiveFieldName instances in the FieldName, without the ampersand characters ('&', U+0026). Leading and/or trailing white space character items MAY be added to the [children] of the <fieldName> element item. White space character items MAY be added immediately before and/or after any character item for the solidus character ('/', U+002F).

<fieldName>元素项的[children]属性设置为fieldName中原语fieldName实例的solidus('/',U+002F)分隔列表的字符项序列,不带符号和字符('&',U+0026)。可以将前导和/或尾随空格字符项添加到<fieldName>元素项的[子项]中。可以在索利多士字符(“/”,U+002F)的任何字符项之前和/或之后立即添加空白字符项。

Example

实例

&Linked.&ArgumentType

&链接类型

      <fieldName>Linked/ArgumentType</fieldName>
        
      <fieldName>Linked/ArgumentType</fieldName>
        
9.2.7. ObjectFieldSpec Translation
9.2.7. ObjectFieldSpec翻译

The translation of an ObjectFieldSpec where the ObjectOptionalitySpec is absent is an element item with the [local name] "objectField".

缺少ObjectOptionalitySpec的ObjectFieldSpec的翻译是带有[local name]“objectField”的元素项。

The translation of an ObjectFieldSpec with an ObjectOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "objectField" SHALL be added to the [children] of the <optional> element item.

ObjectFieldSpec与“可选”形式的ObjectOptionalitySpec的转换是具有[本地名称]“可选”的元素项。带有[本地名称]“objectField”的元素项应添加到<optional>元素项的[子项]中。

The translation of an ObjectFieldSpec with an ObjectOptionalitySpec of the "DEFAULT Object" form is an element item with the [local name] "optional". An element item with the [local name] "objectField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the Object in the ObjectOptionalitySpec SHALL be added to the [children] or [attributes] of the <default> element item.

ObjectFieldSpec与“默认对象”形式的ObjectOptionalitySpec的转换是一个元素项,其[本地名称]“可选”。带有[本地名称]“objectField”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。ObjectOptionalitySpec中对象的翻译应添加到<default>元素项的[children]或[attributes]中。

An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <objectField> element item. The [normalized value] of this attribute item is the objectfieldreference in the ObjectFieldSpec, without the ampersand character ('&', U+0026). An element item with the [local name] "annotation" MAY be added to the [children] of the <objectField> element item. The translation of the DefinedObjectClass in the ObjectFieldSpec SHALL be added to the [children] or [attributes] of the <objectField> element item.

带有[本地名称]“名称”的属性项应添加到<objectField>元素项的[属性]中。此属性项的[normalized value]是ObjectFieldSpec中的objectfieldreference,不带符号('&',U+0026)。带有[local name]“annotation”的元素项可以添加到<objectField>元素项的[children]。ObjectFieldSpec中定义的Object类的翻译应添加到<objectField>元素项的[children]或[attributes]中。

Example

实例

      CLASS {
          &one    TYPE-IDENTIFIER,
          &two    ABSTRACT-SYNTAX OPTIONAL,
          &three  TYPE-IDENTIFIER DEFAULT myObject
      }
        
      CLASS {
          &one    TYPE-IDENTIFIER,
          &two    ABSTRACT-SYNTAX OPTIONAL,
          &three  TYPE-IDENTIFIER DEFAULT myObject
      }
        
      <class>
       <objectField name="one" class="asnx:TYPE-IDENTIFIER"/>
       <optional>
        <objectField name="two" class="asnx:ABSTRACT-SYNTAX"/>
       </optional>
       <optional>
        <objectField name="three" class="asnx:TYPE-IDENTIFIER"/>
        <default object="tns:myObject"/>
       </optional>
      </class>
        
      <class>
       <objectField name="one" class="asnx:TYPE-IDENTIFIER"/>
       <optional>
        <objectField name="two" class="asnx:ABSTRACT-SYNTAX"/>
       </optional>
       <optional>
        <objectField name="three" class="asnx:TYPE-IDENTIFIER"/>
        <default object="tns:myObject"/>
       </optional>
      </class>
        
9.2.8. ObjectSetFieldSpec Translation
9.2.8. ObjectSetFieldSpec转换

The translation of an ObjectSetFieldSpec where the ObjectSetOptionalitySpec is absent is an element item with the [local name] "objectSetField".

ObjectSetOptionalitySpec不存在的ObjectSetFieldSpec的翻译是一个带有[local name]“objectSetField”的元素项。

The translation of an ObjectSetFieldSpec with an ObjectSetOptionalitySpec of the "OPTIONAL" form is an element item with the [local name] "optional". An element item with the [local name] "objectSetField" SHALL be added to the [children] of the <optional> element item.

ObjectSetFieldSpec与“可选”形式的ObjectSetOptionalitySpec的转换是具有[本地名称]“可选”的元素项。带有[本地名称]“objectSetField”的元素项应添加到<optional>元素项的[子项]中。

The translation of an ObjectSetFieldSpec with an ObjectSetOptionalitySpec of the "DEFAULT ObjectSet" form is an element item with the [local name] "optional". An element item with the [local name] "objectSetField" SHALL be added to the [children] of the <optional> element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional> element item. The translation of the ObjectSet in the ObjectSetOptionalitySpec SHALL be added to the [children] or [attributes] of the <default> element item.

ObjectSetFieldSpec与“DEFAULT ObjectSet”形式的ObjectSetOptionalitySpec的转换是一个元素项,其[local name]“optional”。带有[本地名称]“objectSetField”的元素项应添加到<optional>元素项的[子项]中。带有[本地名称]“默认值”的元素项应附加到<optional>元素项的[子项]中。ObjectSetOptionalitySpec中ObjectSet的翻译应添加到<default>元素项的[children]或[attributes]中。

   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <objectSetField> element item.  The
   [normalized value] of this attribute item is the
   objectsetfieldreference in the ObjectSetFieldSpec, without the
   ampersand character ('&', U+0026).  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
   <objectSetField> element item.  The translation of the
   DefinedObjectClass in the ObjectSetFieldSpec SHALL be added to the
   [children] or [attributes] of the <objectSetField> element item.
        
   An attribute item with the [local name] "name" SHALL be added to the
   [attributes] of the <objectSetField> element item.  The
   [normalized value] of this attribute item is the
   objectsetfieldreference in the ObjectSetFieldSpec, without the
   ampersand character ('&', U+0026).  An element item with the
   [local name] "annotation" MAY be added to the [children] of the
   <objectSetField> element item.  The translation of the
   DefinedObjectClass in the ObjectSetFieldSpec SHALL be added to the
   [children] or [attributes] of the <objectSetField> element item.
        

Example

实例

      CLASS {
          &One    TYPE-IDENTIFIER,
          &Two    ABSTRACT-SYNTAX OPTIONAL,
          &Three  TYPE-IDENTIFIER DEFAULT { myObject }
      }
        
      CLASS {
          &One    TYPE-IDENTIFIER,
          &Two    ABSTRACT-SYNTAX OPTIONAL,
          &Three  TYPE-IDENTIFIER DEFAULT { myObject }
      }
        
      <class>
       <objectSetField name="One" class="asnx:TYPE-IDENTIFIER"/>
       <optional>
        <objectSetField name="Two" class="asnx:ABSTRACT-SYNTAX"/>
       </optional>
       <optional>
        <objectSetField name="Three" class="asnx:TYPE-IDENTIFIER"/>
        <default>
         <objectSet>
          <object ref="tns:myObject"/>
         </objectSet>
        </default>
       </optional>
      </class>
        
      <class>
       <objectSetField name="One" class="asnx:TYPE-IDENTIFIER"/>
       <optional>
        <objectSetField name="Two" class="asnx:ABSTRACT-SYNTAX"/>
       </optional>
       <optional>
        <objectSetField name="Three" class="asnx:TYPE-IDENTIFIER"/>
        <default>
         <objectSet>
          <object ref="tns:myObject"/>
         </objectSet>
        </default>
       </optional>
      </class>
        
10. Translation of Objects
10. 物体的翻译

The translation of an Object is the translation of the DefinedObject, ObjectDefn, ObjectFromObject, or ParameterizedObject in the Object.

对象的转换是对象中已定义对象、ObjectDefn、ObjectFromObject或ParameterizedObject的转换。

The translation of a ParameterizedObject is described in Section 13.

第13节描述了参数化对象的转换。

10.1. DefinedObject Translation
10.1. 定义对象翻译

If a DefinedObject is an objectreference (not a DummyReference) or an ExternalObjectReference, then the translation of the DefinedObject is either the attribute form translation of an object reference, or the element form translation of an object reference.

如果DefinedObject是objectreference(不是DummyReference)或ExternalObjectReference,则DefinedObject的转换是对象引用的属性形式转换或对象引用的元素形式转换。

The attribute form translation of an object reference is an attribute item with the [local name] "object". The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced object definition (see Section 5.1). The attribute form translation SHALL NOT be used if this expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items (see Section 5.1).

对象引用的属性形式转换是具有[本地名称]“对象”的属性项。此属性项的[normalized value]是引用对象定义的扩展名称的限定名称(参见第5.1节)。如果此扩展名称与当前模块及其<import>元素项所引用的模块没有区别,则不应使用属性形式转换(参见第5.1节)。

The element form translation of an object reference is an element item with the [local name] "object". An element item with the [local name] "annotation" MAY be added to the [children] of the

对象引用的元素形式转换是具有[本地名称]“对象”的元素项。可以将带有[本地名称]“注释”的元素项添加到

   <object> element item.  An attribute item with the [local name] "ref"
   SHALL be added to the [attributes] of the <object> element item.  The
   [normalized value] of this attribute item is a qualified name for the
   expanded name of the referenced object definition.  If this expanded
   name is not distinct with respect to the current module and the
   modules referenced by its <import> element items, then an attribute
   item with the [local name] "context" SHALL be added to the
   [attributes] of the <object> element item; otherwise, if the module
   containing the referenced object definition has a schema identity
   URI, then an attribute item with the [local name] "context" MAY be
   added to the [attributes] of the <object> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the referenced object definition.
        
   <object> element item.  An attribute item with the [local name] "ref"
   SHALL be added to the [attributes] of the <object> element item.  The
   [normalized value] of this attribute item is a qualified name for the
   expanded name of the referenced object definition.  If this expanded
   name is not distinct with respect to the current module and the
   modules referenced by its <import> element items, then an attribute
   item with the [local name] "context" SHALL be added to the
   [attributes] of the <object> element item; otherwise, if the module
   containing the referenced object definition has a schema identity
   URI, then an attribute item with the [local name] "context" MAY be
   added to the [attributes] of the <object> element item.  The
   [normalized value] of this attribute item is the schema identity URI
   of the module containing the referenced object definition.
        

Aside: If a reference name is not distinct, then the module containing the referenced definition must have a schema identity URI (see Section 5.1).

旁白:如果引用名称不明确,则包含引用定义的模块必须具有模式标识URI(参见第5.1节)。

The translation of the DefinedObject is the same whether the object definition is referenced by an objectreference or an ExternalObjectReference.

无论对象定义由objectreference还是ExternalObjectReference引用,DefinedObject的转换都是相同的。

Usually the translator is free to choose either the attribute form or element form translation for an object reference; however, in some contexts the attribute form is explicitly disallowed.

通常,译者可以自由选择对象引用的属性形式或元素形式转换;但是,在某些上下文中,属性形式是明确不允许的。

If a DefinedObject is a DummyReference, then the translation of the DefinedObject is the translation of the DummyReference (see Section 13).

如果定义对象是DummyReference,那么定义对象的翻译就是DummyReference的翻译(参见第13节)。

10.2. ObjectDefn Translation
10.2. ObjectDefn翻译

An ObjectDefn that is a DefinedSyntax is first converted to the equivalent DefaultSyntax and then translated.

定义语法的ObjectDefn首先转换为等效的DefaultSyntax,然后进行翻译。

The translation of an ObjectDefn is an element item with the [local name] "object". An element item with the [local name] "annotation" MAY be added to the [children] of the <object> element item. The translation of each FieldSetting in the DefaultSyntax in the ObjectClassDefn SHALL be appended to the [children] of the <object> element item.

ObjectDefn的翻译是具有[本地名称]“object”的元素项。带有[local name]“annotation”的元素项可以添加到<object>元素项的[children]。ObjectClassDefn中DefaultSyntax中每个字段设置的翻译应附加到<object>元素项的[子项]中。

The translation of a FieldSetting is an element item with the [local name] "field". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <field> element item. The [normalized value] of this attribute item is the PrimitiveFieldName in the FieldSetting, without the ampersand character ('&', U+0026). The translation of the Type, Value, ValueSet, Object, or ObjectSet in

FieldSetting的翻译是带有[本地名称]“field”的元素项。带有[本地名称]“名称”的属性项应添加到<field>元素项的[属性]中。此属性项的[normalized value]是字段设置中的原语字段名,不带符号('&',U+0026)。中类型、值、值集、对象或对象集的转换

the Setting in the FieldSetting SHALL be added to the [children] or [attributes] of the <field> element item.

字段设置中的设置应添加到<field>元素项的[子项]或[属性]中。

Example

实例

      -- This is the governing object class.
      ONE-OF-EVERYTHING ::= CLASS {
          &One,
          &two    INTEGER,
          &Three  INTEGER,
          &four   TYPE-IDENTIFIER,
          &Five   TYPE-IDENTIFIER
      }
        
      -- This is the governing object class.
      ONE-OF-EVERYTHING ::= CLASS {
          &One,
          &two    INTEGER,
          &Three  INTEGER,
          &four   TYPE-IDENTIFIER,
          &Five   TYPE-IDENTIFIER
      }
        
      <namedClass name="ONE-OF-EVERYTHING">
       <class>
        <typeField name="One"/>
        <valueField name="two" type="asnx:INTEGER"/>
        <valueSetField name="Three" type="asnx:INTEGER"/>
        <objectField name="four" class="asnx:TYPE-IDENTIFIER"/>
        <objectSetField name="Five" class="asnx:TYPE-IDENTIFIER"/>
       </class>
      </namedClass>
        
      <namedClass name="ONE-OF-EVERYTHING">
       <class>
        <typeField name="One"/>
        <valueField name="two" type="asnx:INTEGER"/>
        <valueSetField name="Three" type="asnx:INTEGER"/>
        <objectField name="four" class="asnx:TYPE-IDENTIFIER"/>
        <objectSetField name="Five" class="asnx:TYPE-IDENTIFIER"/>
       </class>
      </namedClass>
        
      mixedBag ONE-OF-EVERYTHING ::= {
          &One    BOOLEAN,
          &two    99,
          &Three  { 1 | 2 },
          &four   myObject,
          &Five   { myObject }
      }
        
      mixedBag ONE-OF-EVERYTHING ::= {
          &One    BOOLEAN,
          &two    99,
          &Three  { 1 | 2 },
          &four   myObject,
          &Five   { myObject }
      }
        
      <namedObject name="mixedBag" class="tns:ONE-OF-EVERYTHING">
       <object>
        <field name="One" type="asnx:BOOLEAN"/>
        <field name="two" literalValue="99"/>
        <field name="Three">
         <valueSet>
          <union>
           <literalValue>1</literalValue>
           <literalValue>2</literalValue>
          </union>
         </valueSet>
        </field>
        <field name="four" object="tns:myObject"/>
        <field name="Five">
         <objectSet>
          <object ref="tns:myObject"/>
        
      <namedObject name="mixedBag" class="tns:ONE-OF-EVERYTHING">
       <object>
        <field name="One" type="asnx:BOOLEAN"/>
        <field name="two" literalValue="99"/>
        <field name="Three">
         <valueSet>
          <union>
           <literalValue>1</literalValue>
           <literalValue>2</literalValue>
          </union>
         </valueSet>
        </field>
        <field name="four" object="tns:myObject"/>
        <field name="Five">
         <objectSet>
          <object ref="tns:myObject"/>
        
         </objectSet>
        </field>
       </object>
      </namedObject>
        
         </objectSet>
        </field>
       </object>
      </namedObject>
        
10.3. ObjectFromObject Translation
10.3. ObjectFromObject翻译

The translation of an ObjectFromObject is an element item with the [local name] "object". An element item with the [local name] "annotation" MAY be added to the [children] of the <object> element item. An element item with the [local name] "fromObjects" SHALL be appended to the [children] of the <object> element item.

ObjectFromObject的转换是具有[本地名称]“object”的元素项。带有[local name]“annotation”的元素项可以添加到<object>元素项的[children]。带有[本地名称]“fromObjects”的元素项应附加到<object>元素项的[子项]中。

The translation of the ReferencedObjects instance in the ObjectFromObject SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

ObjectFromObject中ReferencedObjects实例的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

The translation of the FieldName in the ObjectFromObject SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

ObjectFromObject中字段名的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

11. Translation of Object Sets
11. 对象集的翻译

If an ObjectSet matches the form "{ DefinedObjectSet }" (i.e., a DefinedObjectSet in an ObjectSetElements instance in an Elements instance in a lone IntersectionElements instance in a lone Intersections instance in a Unions instance in an ElementSetSpec in a RootElementSetSpec in an ObjectSetSpec without an AdditionalElementSetSpec), then the translator MAY use the translation of the DefinedObjectSet as the translation of the ObjectSet; otherwise, the translation of an ObjectSet is an element item with the [local name] "objectSet". An element item with the [local name] "annotation" MAY be added to the [children] of the <objectSet> element item. The translation of the ObjectSetSpec in the ObjectSet SHALL be appended to the [children] of the <objectSet> element item.

如果ObjectSet匹配形式“{DefinedObjectSet}”(即,ObjectSetElements实例中的DefinedObjectSet在ObjectSetSpec中的Elements实例中的lone IntersectionElements实例中的lone IntersectionElements实例中的lone Intersections实例中的Unions实例中的ElementSetSpec中的RootElementSetSpec中的DefinedObjectSet,而无附加ElementSetSpec),然后,翻译人员可以使用定义对象集的翻译作为对象集的翻译;否则,对象集的转换是具有[本地名称]“对象集”的元素项。带有[local name]“annotation”的元素项可以添加到<objectSet>元素项的[children]。ObjectSet中ObjectSetSpec的翻译应附加到<ObjectSet>元素项的[子项]中。

Aside: An ObjectSet that is directly a DefinedObjectSet is a notational capability that does not exist in ASN.1, but is allowed in ASN.X to avoid excessive nesting of <objectSet> element items in the expansion of parameterized definitions.

旁白:直接定义为对象集的ObjectSet是ASN.1中不存在的一种符号功能,但在ASN.X中允许它,以避免在扩展参数化定义时过度嵌套<ObjectSet>元素项。

If an ObjectSetSpec contains only a RootElementSetSpec, then the translation of the ObjectSetSpec is the translation of the ElementSetSpec in the RootElementSetSpec.

如果ObjectSetSpec仅包含RootElementSetSpec,则ObjectSetSpec的翻译就是RootElementSetSpec中ElementSetSpec的翻译。

If an ObjectSetSpec contains a RootElementSetSpec and an ellipsis ("..."), then the translation of the ObjectSetSpec is the translation of the ElementSetSpec in the RootElementSetSpec followed by an element item with the [local name] "extension". If an AdditionalElementSetSpec is present, then the translation of the ElementSetSpec in the AdditionalElementSetSpec SHALL be added to the [children] of the <extension> element item.

如果ObjectSetSpec包含RootElementSetSpec和省略号(“…”),则ObjectSetSpec的翻译是RootElementSetSpec中ElementSetSpec的翻译,后跟带有[本地名称]“扩展名”的元素项。如果存在附加元素集规范,则应将附加元素集规范中的元素集规范翻译添加到<extension>元素项的[子项]中。

If an ObjectSetSpec does not contain a RootElementSetSpec, then the translation of the ObjectSetSpec is an element item with the [local name] "extension". If an AdditionalElementSetSpec is present, then the translation of the ElementSetSpec in the AdditionalElementSetSpec SHALL be added to the [children] of the <extension> element item.

如果ObjectSetSpec不包含RootElementSetSpec,则ObjectSetSpec的翻译是具有[本地名称]“扩展名”的元素项。如果存在附加元素集规范,则应将附加元素集规范中的元素集规范翻译添加到<extension>元素项的[子项]中。

Nested within the ElementSetSpec will be one or more ObjectSetElements instances.

ElementSetSpec中嵌套的将是一个或多个ObjectSetElements实例。

11.1. DefinedObjectSet Translation
11.1. 定义对象集转换

If a DefinedObjectSet is an objectsetreference (not a DummyReference) or an ExternalObjectSetReference, then the translation of the DefinedObjectSet is either the attribute form translation of an object set reference, or the element form translation of an object set reference.

如果DefinedObjectSet是objectsetreference(不是DummyReference)或ExternalObjectSetReference,则DefinedObjectSet的转换为对象集引用的属性形式转换或对象集引用的元素形式转换。

The attribute form translation of an object set reference is an attribute item with the [local name] "objectSet". The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced object set definition (see Section 5.1). The attribute form translation SHALL NOT be used if this expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items (see Section 5.1).

对象集引用的属性形式转换是具有[local name]“objectSet”的属性项。该属性项的[normalized value]是引用对象集定义的扩展名称的限定名称(参见第5.1节)。如果此扩展名称与当前模块及其<import>元素项所引用的模块没有区别,则不应使用属性形式转换(参见第5.1节)。

The element form translation of an object set reference is an element item with the [local name] "objectSet". An element item with the [local name] "annotation" MAY be added to the [children] of the <objectSet> element item. An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <objectSet> element item. The [normalized value] of this attribute item is a qualified name for the expanded name of the referenced object set definition. If this expanded name is not distinct with respect to the current module and the modules referenced by its <import> element items, then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <objectSet> element item; otherwise, if the module containing the referenced object set definition has a schema identity URI, then an attribute item with the [local name] "context"

对象集引用的元素形式转换是具有[local name]“objectSet”的元素项。带有[local name]“annotation”的元素项可以添加到<objectSet>元素项的[children]。带有[本地名称]“ref”的属性项应添加到<objectSet>元素项的[属性]中。此属性项的[normalized value]是引用对象集定义的扩展名称的限定名称。如果此扩展名称与当前模块及其<import>元素项引用的模块不明显,则应将带有[local name]“context”的属性项添加到<objectSet>元素项的[attributes]中;否则,如果包含引用的对象集定义的模块具有架构标识URI,则会使用具有[local name]“上下文”的属性项

MAY be added to the [attributes] of the <objectSet> element item. The [normalized value] of this attribute item is the schema identity URI of the module containing the referenced object set definition.

可以添加到<objectSet>元素项的[attributes]。此属性项的[normalized value]是包含引用对象集定义的模块的模式标识URI。

Aside: If a reference name is not distinct, then the module containing the referenced definition must have a schema identity URI (see Section 5.1).

旁白:如果引用名称不明确,则包含引用定义的模块必须具有模式标识URI(参见第5.1节)。

The translation of the DefinedObjectSet is the same whether the object definition is referenced by an objectsetreference or an ExternalObjectSetReference.

无论对象定义由objectsetreference还是ExternalObjectSetReference引用,DefinedObjectSet的转换都是相同的。

Usually the translator is free to choose either the attribute form or element form translation for an object set reference; however, in some contexts the attribute form is explicitly disallowed.

通常,翻译人员可以自由选择对象集引用的属性形式或元素形式转换;但是,在某些上下文中,属性形式是明确不允许的。

If a DefinedObjectSet is a DummyReference, then the translation of the DefinedObjectSet is the translation of the DummyReference (see Section 13).

如果定义对象集是DummyReference,则定义对象集的翻译就是DummyReference的翻译(参见第13节)。

11.2. ObjectSetElements Translation
11.2. ObjectSetElements转换

If an ObjectSetElements instance is an Object, then the translation of the ObjectSetElements instance is the translation of the Object, except that the attribute form of the DefinedObject translation SHALL NOT be used if the Object is a DefinedObject.

如果ObjectSetElements实例是对象,则ObjectSetElements实例的转换就是对象的转换,但如果对象是DefinedObject,则不应使用DefinedObject转换的属性形式。

If an ObjectSetElements instance is a DefinedObjectSet, then the translation of the ObjectSetElements instance is the translation of the DefinedObjectSet, except that the attribute form of the DefinedObjectSet translation SHALL NOT be used.

如果ObjectSetElements实例是DefinedObjectSet,则ObjectSetElements实例的转换是DefinedObjectSet的转换,但不应使用DefinedObjectSet转换的属性形式。

If an ObjectSetElements instance is an ObjectSetFromObjects, then the translation of the ObjectSetElements instance is the translation of the ObjectSetFromObjects.

如果ObjectSetElements实例是ObjectSetFromObjects,则ObjectSetElements实例的转换就是ObjectSetFromObjects的转换。

If an ObjectSetElements instance is a ParameterizedObjectSet, then the translation of the ObjectSetElements instance is the translation of the ParameterizedObjectSet (see Section 13).

如果ObjectSetElements实例是ParameterizedObjectSet,则ObjectSetElements实例的转换就是ParameterizedObjectSet的转换(请参见第13节)。

Aside: The in-line expansion of a ParameterizedObjectSet results in an ObjectSet. An ObjectSetElements instance that is an ObjectSet is a notational capability that does not exist in ASN.1, but is allowed in ASN.X to avoid the need to manufacture a reference name for the expanded parameterized definition.

旁白:参数化对象集的内联扩展会产生一个对象集。作为ObjectSet的ObjectSetElements实例是ASN.1中不存在的一种符号功能,但ASN.X中允许这种功能,以避免为扩展的参数化定义创建引用名称。

11.2.1. ObjectSetFromObjects Translation
11.2.1. ObjectSetFromObjects转换

The translation of an ObjectSetFromObjects instance is an element item with the [local name] "objectSet". An element item with the [local name] "annotation" MAY be added to the [children] of the <objectSet> element item. An element item with the [local name] "fromObjects" SHALL be appended to the [children] of the <objectSet> element item.

ObjectSetFromObjects实例的转换是具有[local name]“objectSet”的元素项。带有[local name]“annotation”的元素项可以添加到<objectSet>元素项的[children]。带有[本地名称]“fromObjects”的元素项应附加到<objectSet>元素项的[子项]中。

The translation of the ReferencedObjects instance in the ObjectSetFromObjects SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

ObjectSetFromObjects中ReferencedObjects实例的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

The translation of the FieldName in the ObjectSetFromObjects SHALL be added to the [children] or [attributes] of the <fromObjects> element item.

ObjectSetFromObjects中字段名的翻译应添加到<fromObjects>元素项的[children]或[attributes]中。

12. Translation of Information From Objects
12. 对象信息的翻译

If a ReferencedObjects instance is a DefinedObject (not a DummyReference), then the translation of the ReferencedObjects instance is the translation of the DefinedObject.

如果ReferencedObjects实例是DefinedObject(不是DummyReference),则ReferencedObjects实例的转换就是DefinedObject的转换。

If a ReferencedObjects instance is a DefinedObjectSet (not a DummyReference), then the translation of the ReferencedObjects instance is the translation of the DefinedObjectSet.

如果ReferencedObjects实例是DefinedObjectSet(不是DummyReference),则ReferencedObjects实例的转换就是DefinedObjectSet的转换。

If a ReferencedObjects instance is a DummyReference, ParameterizedObject, or ParameterizedObjectSet, then the translation of the ReferencedObjects instance is the translation of that DummyReference, ParameterizedObject, or ParameterizedObjectSet (see Section 13).

如果ReferencedObjects实例是DummyReference、ParameterizedObject或ParameterizedObject集,则ReferencedObjects实例的转换就是该DummyReference、ParameterizedObject或ParameterizedObject集的转换(请参见第13节)。

Aside: The in-line expansion of a ParameterizedObject or ParameterizedObjectSet results in an Object or ObjectSet, respectively. A ReferencedObjects instance that is an Object or ObjectSet is a notational capability that does not exist in ASN.1, but is allowed in ASN.X to avoid the need to manufacture a reference name for an expanded parameterized definition.

旁白:ParameteredObject或ParameteredObject集的内联扩展分别产生一个Object或ObjectSet。作为对象或对象集的ReferencedObjects实例是ASN.1中不存在的一种符号功能,但ASN.X中允许它,以避免为扩展的参数化定义生成引用名称。

13. Translation of Parameterized Definitions
13. 参数化定义的翻译

The translation of an ASN.1 specification into ASN.X replaces any DummyReference [X.683] or reference to a parameterized definition [X.683] with the definition expanded in-line (except for a special case involving recursive parameterized types). For example, a ParameterizedObject is replaced by the Object on the right-hand side of the referenced ParameterizedObjectAssignment.

将ASN.1规范转换为ASN.X时,任何DummyReference[X.683]或对参数化定义[X.683]的引用都将替换为内嵌扩展的定义(涉及递归参数化类型的特殊情况除外)。例如,ParameteredObject被引用ParameteredObject赋值右侧的对象替换。

The definition that substitutes for a DummyReference or parameterized reference (e.g., the Object that substitutes for a ParameterizedObject) potentially comes from a different module from the reference. Expanding a DummyReference or parameterized reference in-line puts the substitute definition into the context of the module containing the reference, which could therefore alter the interpretation of the substitute definition.

替代DummyReference或参数化引用的定义(例如,替代参数化对象的对象)可能来自与引用不同的模块。在线扩展DummyReference或参数化引用会将替换定义放入包含该引用的模块的上下文中,因此可能会改变替换定义的解释。

A type definition is potentially dependent on the TagDefault and ExtensionDefault of the module in which it appears, and may also be affected by encoding instructions in an XML Encoding Rules (XER) [X.693] encoding control section [X.693-1]. Other kinds of definitions are not dependent on the module context; however, type definitions can be nested within the other kinds of definitions, so a change of context can still be significant.

类型定义可能依赖于它出现的模块的TagDefault和ExtensionDefault,也可能受XML编码规则(XER)[X.693]编码控制部分[X.693-1]中的编码指令的影响。其他类型的定义不依赖于模块上下文;但是,类型定义可以嵌套在其他类型的定义中,因此上下文的更改仍然很重要。

Aside: Type definitions are not dependent on their module's RXER or Generic String Encoding Rules (GSER) [GSER] encoding control section [RXEREI][GSEREI] (as they are currently defined), so the presence of an encoding control section for RXER or GSER is not significant in a change of context.

旁白:类型定义不依赖于其模块的RXER或通用字符串编码规则(GSER)[GSER]编码控制节[RXEREI][GSEREI](正如它们当前定义的那样),因此RXER或GSER的编码控制节的存在在上下文更改中并不重要。

The remainder of this section describes how and when a change of context is indicated in the ASN.X translation of a DummyReference or parameterized reference.

本节的其余部分将介绍如何以及何时在DummyReference或参数化引用的ASN.X翻译中指示上下文更改。

In any instance of use, the module containing the DummyReference or parameterized reference is the referencing module, and the module providing the substitute definition is the referenced module. The referenced and referencing modules may be the same module.

在任何使用实例中,包含DummyReference或参数化引用的模块都是引用模块,提供替换定义的模块是引用模块。引用模块和引用模块可以是同一个模块。

In the case of a ParameterizedType, the substitute definition is the Type on the right-hand side of the referenced ParameterizedTypeAssignment.

对于ParameteredType,替换定义是引用的ParameteredTypeAssignment右侧的类型。

In the case of a ParameterizedValueSetType, the substitute definition is the constrained type on the right-hand side of the notional ParameterizedTypeAssignment equivalent to the referenced ParameterizedValueSetTypeAssignment (see Clause 15.8 of X.680 [X.680]).

对于ParameterizedValueSetType,替代定义是名义ParameterizedTypeAssignment右侧的约束类型,相当于引用的ParameterizedValueSetTypeAssignment(见X.680[X.680]第15.8条)。

In the case of a ParameterizedValue, the substitute definition is the Value on the right-hand side of the referenced ParameterizedValueAssignment.

对于ParameteredValue,替换定义是引用的ParameteredValueAssignment右侧的值。

In the case of a ParameterizedObjectClass, the substitute definition is the ObjectClass on the right-hand side of the referenced ParameterizedObjectClassAssignment.

对于ParameteredObjectClass,替换定义是引用的ParameteredObjectClassAssignment右侧的ObjectClass。

In the case of a ParameterizedObject, the substitute definition is the Object on the right-hand side of the referenced ParameterizedObjectAssignment.

对于ParameteredObject,替换定义是引用的ParameteredObject赋值右侧的对象。

In the case of a ParameterizedObjectSet, the substitute definition is the ObjectSet on the right-hand side of the referenced ParameterizedObjectSetAssignment.

对于ParameteredObjectSet,替换定义是引用的ParameteredObjectSetAssignment右侧的ObjectSet。

If the ActualParameter corresponding to a DummyReference is not a ValueSet, then the substitute definition for that DummyReference is the Type, Value, DefinedObjectClass, Object, or ObjectSet in the ActualParameter.

如果对应于DummyReference的ActualParameter不是值集,则该DummyReference的替代定义是ActualParameter中的类型、值、DefinedObjectClass、对象或对象集。

If the ActualParameter corresponding to a DummyReference is a ValueSet, then the substitute definition for that DummyReference is the notional constrained type equivalent to the ValueSet; the ElementSetSpecs of the ValueSet contributes to the constraint of the constrained type, and the governor of the Parameter corresponding to the ActualParameter is used as the parent type that is constrained.

如果对应于DummyReference的ActualParameter是一个值集,则该DummyReference的替代定义是与该值集等效的概念约束类型;ValueSet的ElementSetSpecs有助于约束类型的约束,与ActualParameter对应的参数的调控器用作受约束的父类型。

Definition (interchangeable): The contexts of the referencing and referenced modules are interchangeable with respect to interpreting the substitute definition if:

定义(可互换):参考和参考模块的上下文在解释替代定义时可互换,前提是:

(1) the referenced module is the referencing module and does not contain an XER encoding control section, or

(1) 引用的模块是引用模块,不包含XER编码控制部分,或

(2) the referenced module and referencing module have the same TagDefault (where an absent TagDefault is taken to be equivalent to "EXPLICIT TAGS"), the referenced module and referencing module have the same ExtensionDefault, and neither module has an XER encoding control section.

(2) 被引用模块和引用模块具有相同的TagDefault(其中不存在的TagDefault被视为等同于“显式标记”),被引用模块和引用模块具有相同的ExtensionDefault,并且两个模块都没有XER编码控制部分。

Aside: A module with an XER encoding control section is not considered to have a context interchangeable with another module, including itself, because the typereference by which a substitute type definition is identified may appear in a TargetList in the XER encoding control section of the referenced module, and because the in-line expansion of a substitute definition may cause its text to come within the scope of a TargetList in the XER encoding control section of the referencing module that would not apply otherwise.

旁白:带有XER编码控制部分的模块不被视为具有可与其他模块(包括其自身)互换的上下文,因为识别替代类型定义的类型引用可能出现在引用模块XER编码控制部分的目标列表中,并且因为替换定义的内联扩展可能导致其文本在引用模块的XER编码控制部分的TargetList范围内,否则将不适用。

Definition (recursively contained): A ParameterizedType is recursively contained if its translation will be nested within the translation (i.e., in-line expansion) of another ParameterizedType to

定义(递归包含):如果参数化类型的转换将嵌套在另一个参数化类型到的转换(即,行内扩展)中,则递归包含参数化类型

which it is equivalent. A ParameterizedValueSetType is recursively contained if its translation will be nested within the translation of another ParameterizedValueSetType to which it is equivalent.

这是等效的。如果ParameterizedValueSetType的转换将嵌套在与其等价的另一个ParameterizedValueSetType的转换中,则递归包含该类型。

Aside: ASN.1 does not permit the other kinds of parameterized reference to be recursive.

旁白:ASN.1不允许其他类型的参数化引用是递归的。

The translation of a DummyReference, a ParameterizedType that is not recursively contained, a ParameterizedValue, a ParameterizedValueSetType that is not recursively contained, a ParameterizedObjectClass, a ParameterizedObject, or a ParameterizedObjectSet is either:

DummyReference、未递归包含的ParameterizedType、ParameterizedValue、未递归包含的ParameterizedValueSetType、ParameterizedObject类、ParameterizedObject或ParameterizedObject集的转换为:

(a) the translation of the substitute definition, or

(a) 替代定义的翻译,或

(b) an element item with the [local name] "type" if the substitute definition is a Type, "value" if the substitute definition is a Value, "class" if the substitute definition is an ObjectClass or DefinedObjectClass, "object" if the substitute definition is an Object, or "objectSet" if the substitute definition is an ObjectSet. A fully expanded reference (described shortly) SHALL be added to the [children] of the element item.

(b) 如果替换定义是类型,则具有[本地名称]“类型”的元素项;如果替换定义是值,则具有“值”;如果替换定义是ObjectClass或DefinedObjectClass,则具有“类”;如果替换定义是对象,则具有“对象”;如果替换定义是objectSet,则具有“对象集”。应在元素项的[子项]中添加完全扩展的参考(稍后描述)。

The translation in case (b) is always allowed and provides information to identify the referenced module and the referenced definition.

案例(b)中的翻译始终是允许的,并提供识别参考模块和参考定义的信息。

The translation in case (a) MAY be used instead if and only if the contexts of the referencing and referenced modules are interchangeable, or the contexts of the referencing and referenced modules are not interchangeable, but the difference between them does not affect how the substitute definition is interpreted.

如果且仅当引用模块和被引用模块的上下文可互换,或者引用模块和被引用模块的上下文不可互换,但它们之间的差异不影响替代定义的解释,则可以使用案例(a)中的翻译。

Aside: There are many ways in which the substitute definition can be unaffected by a difference between the contexts of the referencing and referenced modules. One example would be where the referencing and referenced modules differ only in their TagDefault, but the substitute definition does not contain any TaggedType notation.

旁白:有许多方法可以使替代定义不受引用模块和被引用模块上下文之间差异的影响。一个示例是,引用模块和被引用模块仅在其TagDefault中不同,但替换定义不包含任何TaggedType表示法。

Note that if the translation in case (a) is used, then the referencing module is still the referencing module when considering a nested in-line expansion. If the translation in case (b) is used, then the referenced module becomes the referencing module when considering a nested in-line expansion.

请注意,如果使用了(a)中的转换,则在考虑嵌套的内嵌扩展时,引用模块仍然是引用模块。如果使用案例(b)中的转换,则在考虑嵌套的内嵌扩展时,引用的模块将成为引用模块。

If case (a) is used for the translation of a DummyReference where the substitute definition is a Type, then an attribute form translation of the substitute definition SHALL NOT be used, and an attribute item with the [local name] "explicit" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <type> element item resulting from the translation of the substitute definition. Where the automatic tagging transformation applies [X.680], this attribute item indicates that explicit tagging applies to the type instead of the usual implicit tagging.

如果案例(a)用于替代定义为类型的DummyReference的翻译,则不应使用替代定义的属性形式翻译,并且应将带有[本地名称]“显式”和[规范化值]“真”或“1”的属性项添加到[属性]中由替换定义的翻译产生的<type>元素项的。如果应用自动标记转换[X.680],此属性项表示显式标记应用于类型,而不是通常的隐式标记。

If case (b) is used for the translation of a DummyReference where the substitute definition is a Type, then an attribute item with the [local name] "explicit" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <type> element item generated by case (b).

如果案例(b)用于翻译替代定义为类型的DummyReference,则应在案例(b)生成的<Type>元素项的[attributes]中添加具有[本地名称]“explicit”和[规范化值]“true”或“1”的属性项。

A fully expanded reference is an element item with the [local name] "expanded". Except in the case of a DummyReference, the reference name is indicated by an attribute item with the [local name] "name" added to the [attributes] of the <expanded> element item.

完全展开的引用是具有[本地名称]“展开”的元素项。除了DummyReference的情况外,引用名称由属性项指示,属性项的[local name]“name”添加到<expanded>元素项的[attributes]中。

In the case of a ParameterizedType or ParameterizedValueSetType, the [normalized value] of this attribute item is the typereference of the ParameterizedType or ParameterizedValueSetType.

对于ParameteredType或ParameteredValueSetType,此属性项的[normalized value]是ParameteredType或ParameteredValueSetType的typereference。

In the case of a ParameterizedValue, the [normalized value] of this attribute item is the valuereference of the ParameterizedValue.

对于ParameterizedValue,此属性项的[normalized value]是ParameterizedValue的valuereference。

In the case of a ParameterizedObjectClass, the [normalized value] of this attribute item is the objectclassreference of the ParameterizedObjectClass.

对于ParameteredObjectClass,此属性项的[normalized value]是ParameteredObjectClass的objectclassreference。

In the case of a ParameterizedObject, the [normalized value] of this attribute item is the objectreference of the ParameterizedObject.

对于ParameteredObject,此属性项的[normalized value]是ParameteredObject的objectreference。

In the case of a ParameterizedObjectSet, the [normalized value] of this attribute item is the objectsetreference of the ParameterizedObjectSet.

对于ParameteredObjectSet,此属性项的[normalized value]是ParameteredObjectSet的objectsetreference。

The "name" attribute item MAY be omitted if:

如果出现以下情况,“名称”属性项可以省略:

(1) the conditions permitting the use of the translation in case (a) are satisfied, or

(1) (a)满足允许使用翻译的条件,或

(2) the reference is not a typereference, or

(2) 引用不是类型引用,或者

(3) the reference is a typereference that does not appear in any TargetList in an XER encoding control section of the referenced module.

(3) 引用是一种类型引用,它不出现在引用模块的XER编码控制部分的任何TargetList中。

The "name" attribute SHALL NOT appear in the translation of a DummyReference.

“名称”属性不得出现在DummyReference的翻译中。

The referenced module is indicated by an element item with the [local name] "module" added to the [children] of the <expanded> element item. The <module> element item MAY be omitted if the conditions permitting the use of the translation in case (a) are satisfied, or if the referencing module is the referenced module. When the <module> element item is present:

引用的模块由元素项表示,元素项的[本地名称]“模块”添加到<expanded>元素项的[子项]。如果满足(a)中允许使用翻译的条件,或者如果参考模块是参考模块,则可以省略<module>元素项。当<module>元素项存在时:

(1) An attribute item with the [local name] "name" SHOULD be added to the [attributes] of the <module> element item. The [normalized value] of this attribute item is the modulereference in the ModuleIdentifier in the ModuleDefinition of the referenced module.

(1) 应将带有[本地名称]“名称”的属性项添加到<module>元素项的[属性]中。此属性项的[normalized value]是引用模块的ModuleDefinition中ModuleIdentifier中的modulereference。

(2) If the DefinitiveIdentifier in the ModuleIdentifier in the ModuleDefinition of the referenced module is not empty, then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <module> element item. The [normalized value] of this attribute item is the RXER character data translation of the DefinitiveIdentifier.

(2) 如果引用模块的ModuleDefinition中ModuleIdentifier中的定义标识符不为空,则带有[本地名称]“标识符”的属性项应添加到<module>元素项的[属性]中。此属性项的[normalized value]是定义标识符的RXER字符数据转换。

(3) If the referenced module has a schema identity URI, then an attribute item with the [local name] "schemaIdentity" SHALL be added to the [attributes] of the <module> element item. The [normalized value] of this attribute item is the schema identity URI of the referenced module.

(3) 如果引用的模块具有模式标识URI,则应将带有[本地名称]“schemaIdentity”的属性项添加到<module>元素项的[属性]中。此属性项的[normalized value]是被引用模块的模式标识URI。

The [attributes] of the <module> element item MUST contain at least one of the attribute items specified in cases (1), (2), and (3).

<module>元素项的[attributes]必须至少包含案例(1)、(2)和(3)中指定的属性项之一。

The translation of the substitute definition SHALL be added to the [children] or [attributes] of the <expanded> element item.

替代定义的翻译应添加到<expanded>元素项的[子项]或[属性]中。

Example

实例

Consider these module definitions:

考虑这些模块定义:

         Templates
         DEFINITIONS
         AUTOMATIC TAGS ::=
         BEGIN
        
         Templates
         DEFINITIONS
         AUTOMATIC TAGS ::=
         BEGIN
        
         CollectionOfThings { Thing } ::= SEQUENCE OF thing Thing
             -- the Thing on the right-hand side of the assignment is
             -- a DummyReference
        
         CollectionOfThings { Thing } ::= SEQUENCE OF thing Thing
             -- the Thing on the right-hand side of the assignment is
             -- a DummyReference
        

END

终止

         ProtocolDefinitions
         DEFINITIONS
         AUTOMATIC TAGS ::=
         BEGIN
        
         ProtocolDefinitions
         DEFINITIONS
         AUTOMATIC TAGS ::=
         BEGIN
        
         IMPORTS
             CollectionOfThings{}
                 FROM Templates
             ;
        
         IMPORTS
             CollectionOfThings{}
                 FROM Templates
             ;
        
         CollectionOfIntegers ::= CollectionOfThings { INTEGER }
             -- the right-hand side of the assignment is
             -- a ParameterizedType
        
         CollectionOfIntegers ::= CollectionOfThings { INTEGER }
             -- the right-hand side of the assignment is
             -- a ParameterizedType
        

END

终止

Without using the translation in case (a), the translations of these modules are:

在不使用案例(a)中的翻译的情况下,这些模块的翻译为:

         <asnx:module name="Templates"/>
        
         <asnx:module name="Templates"/>
        
         <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                      name="ProtocolDefinitions">
        
         <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                      name="ProtocolDefinitions">
        
          <namedType name="CollectionOfIntegers">
           <type>
            <expanded name="CollectionOfThings">
             <module name="Templates"/>
             <type>
              <sequenceOf>
               <element name="thing">
                <type>
                 <expanded>
        
          <namedType name="CollectionOfIntegers">
           <type>
            <expanded name="CollectionOfThings">
             <module name="Templates"/>
             <type>
              <sequenceOf>
               <element name="thing">
                <type>
                 <expanded>
        
                  <module name="ProtocolDefinitions"/>
                  <type ref="asnx:INTEGER"/>
                 </expanded>
                </type>
               </element>
              </sequenceOf>
             </type>
            </expanded>
           </type>
          </namedType>
        
                  <module name="ProtocolDefinitions"/>
                  <type ref="asnx:INTEGER"/>
                 </expanded>
                </type>
               </element>
              </sequenceOf>
             </type>
            </expanded>
           </type>
          </namedType>
        
         </asnx:module>
        
         </asnx:module>
        

The translation of the Templates module is empty because the module contains only a parameterized assignment.

模板模块的转换为空,因为该模块仅包含参数化的赋值。

Since the contexts of the Templates and ProtocolDefinitions modules are interchangeable, a simpler translation of the ProtocolDefinitions module is permitted:

由于模板和ProtocolDefinitions模块的上下文是可互换的,因此允许对ProtocolDefinitions模块进行更简单的翻译:

         <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                      name="ProtocolDefinitions">
        
         <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                      name="ProtocolDefinitions">
        
          <namedType name="CollectionOfIntegers">
           <type>
            <sequenceOf>
             <element name="thing">
              <type ref="asnx:INTEGER" explicit="true"/>
             </element>
            </sequenceOf>
           </type>
          </namedType>
        
          <namedType name="CollectionOfIntegers">
           <type>
            <sequenceOf>
             <element name="thing">
              <type ref="asnx:INTEGER" explicit="true"/>
             </element>
            </sequenceOf>
           </type>
          </namedType>
        
         </asnx:module>
        
         </asnx:module>
        

If a ParameterizedType or ParameterizedValueSetType is recursively contained, then its translation is an element item with the [local name] "type". An attribute item with the [local name] "ancestor" SHALL be added to the [attributes] of the <type> element item. The [normalized value] of this attribute item is the decimal digit string representing the integer value of one plus the number of intermediate enclosing <type> element items between the <type> element items resulting from the translations of the two equivalent instances of ParameterizedType or ParameterizedValueSetType. An element item with the [local name] "annotation" MAY be added to the [children] of the <type> element item.

如果递归地包含ParameterizedType或ParameterizedValueSetType,则其转换为具有[local name]“type”的元素项。带有[本地名称]“祖先”的属性项应添加到<type>元素项的[属性]中。此属性项的[normalized value]是十进制数字字符串,表示一的整数值加上<type>元素项之间的中间封闭<type>元素项的数量,这些元素项是由ParameterizedType或ParameterizedValueSetType的两个等效实例的翻译产生的。带有[local name]“annotation”的元素项可以添加到<type>元素项的[children]。

A <type> element item with an ancestor attribute item is a reference to an ancestor <type> element item. This form for a <type> element item SHOULD NOT be used in original specifications written in ASN.X.

具有祖先属性项的<type>元素项是对祖先<type>元素项的引用。在ASN.X中编写的原始规范中,不应使用<type>元素项的此表格。

Aside: The form is only intended for the purpose of handling recursive parameterized type definitions in an ASN.1 specification being translated into ASN.X. Such definitions are self-referencing, but have no obvious name. It is also not easy to construct a suitable name from the surrounding context because recursive parameterized types can be embedded in other constructs, such as information objects, that are themselves unnamed.

旁白:该表单仅用于处理ASN.1规范中被转换为ASN.X的递归参数化类型定义。这些定义是自引用的,但没有明显的名称。从周围的上下文构造合适的名称也不容易,因为递归参数化类型可以嵌入到其他构造中,例如本身未命名的信息对象。

Example

实例

Consider these type definitions, assumed to be defined in a module that does not have an XER encoding control section:

考虑这些类型定义,假设在没有XER编码控制部分的模块中定义:

         Tree { ValueType } ::= SEQUENCE {
             value          [0] ValueType,
             left-subtree   [1] Tree { ValueType } OPTIONAL,
             right-subtree  [2] Tree { ValueType } OPTIONAL
         }
        
         Tree { ValueType } ::= SEQUENCE {
             value          [0] ValueType,
             left-subtree   [1] Tree { ValueType } OPTIONAL,
             right-subtree  [2] Tree { ValueType } OPTIONAL
         }
        
         NumberTree ::= [APPLICATION 13] Tree { INTEGER }
        
         NumberTree ::= [APPLICATION 13] Tree { INTEGER }
        

The assignment for "Tree" is not directly translated because it is a ParameterizedAssignment. The translation for the "NumberTree" assignment, up to but not yet including the Type in the TaggedType, is as follows:

“Tree”的赋值不是直接转换的,因为它是参数化的赋值。“NumberTree”赋值的翻译,直到但尚未包括TaggedType中的类型,如下所示:

         <namedType name="NumberTree">
          <type>
           <tagged tagClass="application" number="13"/>
          </type>
         </namedType>
        
         <namedType name="NumberTree">
          <type>
           <tagged tagClass="application" number="13"/>
          </type>
         </namedType>
        

The Type in the TaggedType is a ParameterizedType. Since the ParameterizedType is not recursively contained, the translation of the ParameterizedType (using the translation in case (a) above) is the translation of the Type on the right-hand side of the referenced ParameterizedTypeAssignment, namely this type:

TaggedType中的类型是参数化类型。由于ParameterizedType不是递归包含的,ParameterizedType的转换(在上述(a)情况下使用转换)是引用的ParameterizedTypeAssignment右侧类型的转换,即该类型:

         SEQUENCE {
             value          [0] ValueType,
             left-subtree   [1] Tree { ValueType } OPTIONAL,
             right-subtree  [2] Tree { ValueType } OPTIONAL
         }
        
         SEQUENCE {
             value          [0] ValueType,
             left-subtree   [1] Tree { ValueType } OPTIONAL,
             right-subtree  [2] Tree { ValueType } OPTIONAL
         }
        

ValueType is a DummyReference. The translation of the actual parameter substitutes for the DummyReference. In this case, the actual parameter is the INTEGER type.

ValueType是DummyReference。实际参数的转换将替代DummyReference。在这种情况下,实际参数是整数类型。

The translation for the SEQUENCE type, up to the first component, is added to the <tagged> element:

序列类型的转换(直到第一个组件)添加到<taged>元素:

         <namedType name="NumberTree">
          <type>
           <tagged tagClass="application" number="13">
            <type><!-- Tree { INTEGER } -->
             <sequence>
              <element name="value">
               <type>
                <tagged number="0">
                 <type ref="asnx:INTEGER"
                       explicit="true"/><!-- ValueType -->
                </tagged>
               </type>
              </element>
             </sequence>
            </type>
           </tagged>
          </type>
         </namedType>
        
         <namedType name="NumberTree">
          <type>
           <tagged tagClass="application" number="13">
            <type><!-- Tree { INTEGER } -->
             <sequence>
              <element name="value">
               <type>
                <tagged number="0">
                 <type ref="asnx:INTEGER"
                       explicit="true"/><!-- ValueType -->
                </tagged>
               </type>
              </element>
             </sequence>
            </type>
           </tagged>
          </type>
         </namedType>
        

The Type in the TaggedType for the second component is a ParameterizedType. Since this ParameterizedType is recursively contained, its translation is a <type> element with the ancestor attribute. The value of the ancestor attribute is "2" because there is one intermediate <type> element (for a TaggedType). Put another way, the translations of the equivalent instances of ParameterizedType are two <type> steps apart.

第二个组件的TaggedType中的类型是ParameterizedType。因为这个参数化类型是递归包含的,所以它的转换是一个带有祖先属性的<type>元素。祖先属性的值为“2”,因为有一个中间<type>元素(对于TaggedType)。换句话说,parameteredType的等效实例的翻译相隔两步。

The translation of the third component of the SEQUENCE type follows the same pattern as the second component. The completed translation is as follows:

序列类型的第三个组件的转换遵循与第二个组件相同的模式。已完成的译文如下:

         <namedType name="NumberTree">
          <type>
           <tagged tagClass="application" number="13">
            <type><!-- Tree { INTEGER } -->
             <sequence>
              <element name="value">
               <type>
                <tagged number="0">
                 <type ref="asnx:INTEGER"
                       explicit="true"/><!-- ValueType -->
        
         <namedType name="NumberTree">
          <type>
           <tagged tagClass="application" number="13">
            <type><!-- Tree { INTEGER } -->
             <sequence>
              <element name="value">
               <type>
                <tagged number="0">
                 <type ref="asnx:INTEGER"
                       explicit="true"/><!-- ValueType -->
        
                </tagged>
               </type>
              </element>
              <optional>
               <element name="left-subtree">
                <type>
                 <tagged number="1">
                  <type ancestor="2"/><!-- Tree { ValueType } -->
                 </tagged>
                </type>
               </element>
              </optional>
              <optional>
               <element name="right-subtree">
                <type>
                 <tagged number="2">
                  <type ancestor="2"/><!-- Tree { ValueType } -->
                 </tagged>
                </type>
               </element>
              </optional>
             </sequence>
            </type>
           </tagged>
          </type>
         </namedType>
        
                </tagged>
               </type>
              </element>
              <optional>
               <element name="left-subtree">
                <type>
                 <tagged number="1">
                  <type ancestor="2"/><!-- Tree { ValueType } -->
                 </tagged>
                </type>
               </element>
              </optional>
              <optional>
               <element name="right-subtree">
                <type>
                 <tagged number="2">
                  <type ancestor="2"/><!-- Tree { ValueType } -->
                 </tagged>
                </type>
               </element>
              </optional>
             </sequence>
            </type>
           </tagged>
          </type>
         </namedType>
        
14. EncodingControlSections Translation
14. 编码控制部分翻译

If an EncodingControlSections instance contains at least one EncodingControlSection with an encodingreference that is not RXER, then the translation of the EncodingControlSections instance is an element item with the [local name] "encodingControls". The translation of each EncodingControlSection with an encodingreference that is not RXER SHALL be appended to the [children] of the <encodingControls> element item.

如果EncodingControlSections实例至少包含一个EncodingControlSection,其encodingreference不是RXER,则EncodingControlSections实例的翻译是一个元素项,其[local name]“encodingControls”。带有非RXER编码引用的每个编码控制部分的翻译应附加到<encodingControls>元素项的[子项]中。

Aside: This is not suggesting that RXER encoding control sections are ignored. Encoding control sections for RXER are not explicitly represented in ASN.X, but rather affect how an ASN.1 module is translated into an ASN.X module. The effect of an RXER encoding control section on the translation is addressed in other parts of this specification.

旁白:这并不意味着RXER编码控制部分被忽略。RXER的编码控制部分在ASN.X中没有明确表示,而是影响ASN.1模块转换为ASN.X模块的方式。RXER编码控制部分对翻译的影响将在本规范的其他部分中讨论。

Encoding control sections for other encoding rules will have explicit representations in ASN.X.

其他编码规则的编码控制部分将在ASN.X中有显式表示。

If the encodingreference in an EncodingControlSection is GSER, then the translation of the EncodingControlSection is an element item with the [local name] "GSER". The translation of the EncodingInstructionAssignmentList in the EncodingControlSection SHALL be added to the [children] of the <GSER> element item.

如果EncodingControlSection中的encodingreference是GSER,那么EncodingControlSection的翻译是一个带有[local name]“GSER”的元素项。编码控制部分中编码指令分配列表的翻译应添加到<GSER>元素项的[子项]中。

The EncodingInstructionAssignmentList notation is different for each set of encoding instructions. The translation into ASN.X of an EncodingInstructionAssignmentList for GSER is specified in a separate document [GSEREIT].

对于每一组编码指令,EncodingInstructionAssignmentList表示法是不同的。GSER编码指令分配列表的ASN.X翻译在单独的文档[GSEREIT]中指定。

Aside: The translation of an EncodingInstructionAssignmentList for GSER, as it is currently defined, is always empty.

旁白:GSER的EncodingInstructionAssignmentList的翻译(如当前定义的)始终为空。

If the encodingreference in an EncodingControlSection is XER, then the translation of the EncodingControlSection is an element item with the [local name] "XER". The translation of the EncodingInstructionAssignmentList in the EncodingControlSection SHALL be added to the [children] of the <XER> element item. The translation into ASN.X of an EncodingInstructionAssignmentList for XER is specified in a separate document [XEREIT].

如果EncodingControlSection中的encodingreference是XER,那么EncodingControlSection的翻译是一个元素项,带有[local name]“XER”。EncodingControlSection中EncodingInstructionAssignmentList的翻译应添加到<XER>元素项的[子项]中。XER编码指令AssignmentList的ASN.X翻译在单独的文档[XREIT]中指定。

15. Security Considerations
15. 安全考虑

The ASN.X translation of an ASN.1 specification is semantically equivalent to the original ASN.1 specification. The security considerations that apply to an application built from the original ASN.1 specification apply equally to an application built from the ASN.X translation.

ASN.1规范的ASN.X翻译在语义上等同于原始ASN.1规范。适用于从原始ASN.1规范构建的应用程序的安全注意事项同样适用于从ASN.X翻译构建的应用程序。

Syntax-based canonicalization for XML documents (e.g., Canonical XML [CXML]) depends on the Infoset of an XML document being preserved. However, the Infoset representation of an ASN.X module potentially changes if it is decoded and re-encoded (though its ASN.1 value is preserved), disrupting the Canonical XML representation. To avoid this problem, ASN.X modules MUST be normalized prior to the application of syntax-based canonicalization. The normalization rules can be found in Section 6.13 of the specification for RXER [RXER].

基于语法的XML文档规范化(例如,规范XML[CXML])取决于所保留的XML文档的信息集。但是,如果对ASN.X模块进行解码和重新编码(尽管其ASN.1值被保留),它的Infoset表示可能会发生变化,从而破坏规范的XML表示。为了避免这个问题,ASN.X模块必须在应用基于语法的规范化之前进行规范化。规范化规则可在RXER[RXER]规范的第6.13节中找到。

16. Acknowledgements
16. 致谢

The technology described in this document is the product of a research project begun jointly by Adacel Technologies Limited and Deakin University, and subsequently refined and completed by eB2Bcom.

本文件中描述的技术是Adacel Technologies Limited和迪肯大学联合开展的一个研究项目的成果,随后由eB2Bcom完善和完成。

17. References
17. 工具书类
17.1. Normative References
17.1. 规范性引用文件

[BCP14] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[BCP14]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[URI] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", STD 66, RFC 3986, January 2005.

[URI]Berners Lee,T.,Fielding,R.和L.Masinter,“统一资源标识符(URI):通用语法”,STD 66,RFC 3986,2005年1月。

[GSER] Legg, S., "Generic String Encoding Rules (GSER) for ASN.1 Types", RFC 3641, October 2003.

[GSER]Legg,S.,“ASN.1类型的通用字符串编码规则(GSER)”,RFC 36412003年10月。

[GSEREI] Legg, S., "Encoding Instructions for the Generic String Encoding Rules (GSER)", RFC 4792, January 2007.

[GSEREI]Legg,S.,“通用字符串编码规则(GSER)的编码说明”,RFC 4792,2007年1月。

[RXER] Legg, S. and D. Prager, "Robust XML Encoding Rules (RXER) for Abstract Syntax Notation One (ASN.1)", RFC 4910, July 2007.

[RXER]Legg,S.和D.Prager,“抽象语法表示法1(ASN.1)的健壮XML编码规则(RXER)”,RFC 4910,2007年7月。

[RXEREI] Legg, S., "Encoding Instructions for the Robust XML Encoding Rules (RXER)", RFC 4911, July 2007.

[RXEREI]Legg,S.,“健壮XML编码规则(RXER)的编码说明”,RFC 4911,2007年7月。

[GSEREIT] Legg, S., "Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions for the Generic String Encoding Rules (GSER)", RFC 4913, July 2007.

[GSEREIT]Legg,S.,“通用字符串编码规则(GSER)编码指令的抽象语法符号X(ASN.X)表示法”,RFC 4913,2007年7月。

[XEREIT] Legg, S., "Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions for the XML Encoding Rules (XER)", RFC 4914, July 2007.

[XEREIT]Legg,S.,“XML编码规则(XER)编码指令的抽象语法符号X(ASN.X)表示法”,RFC 4914,2007年7月。

[X.680] ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1, Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation.

[X.680]ITU-T建议X.680(07/02)| ISO/IEC 8824-1,信息技术-抽象语法符号一(ASN.1):基本符号规范。

[X.680-1] ITU-T Recommendation X.680 (2002) Amendment 1 (10/03) | ISO/IEC 8824-1:2002/Amd 1:2004, Support for EXTENDED-XER.

[X.680-1]ITU-T建议X.680(2002)修改件1(10/03)| ISO/IEC 8824-1:2002/Amd 1:2004,对扩展XER的支持。

[X.681] ITU-T Recommendation X.681 (07/02) | ISO/IEC 8824-2, Information technology - Abstract Syntax Notation One (ASN.1): Information object specification.

[X.681]ITU-T建议X.681(07/02)| ISO/IEC 8824-2,信息技术-抽象语法符号1(ASN.1):信息对象规范。

[X.682] ITU-T Recommendation X.682 (07/02) | ISO/IEC 8824-3, Information technology - Abstract Syntax Notation One (ASN.1): Constraint specification.

[X.682]ITU-T建议X.682(07/02)| ISO/IEC 8824-3,信息技术-抽象语法符号1(ASN.1):约束规范。

[X.683] ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4, Information technology - Abstract Syntax Notation One (ASN.1): Parameterization of ASN.1 specifications.

[X.683]ITU-T建议X.683(07/02)| ISO/IEC 8824-4,信息技术-抽象语法符号1(ASN.1):ASN.1规范的参数化。

[X.693] ITU-T Recommendation X.693 (12/01) | ISO/IEC 8825-4:2002, Information technology - ASN.1 encoding rules: XML encoding rules (XER).

[X.693]ITU-T建议X.693(12/01)| ISO/IEC 8825-4:2002,信息技术-ASN.1编码规则:XML编码规则(XER)。

[X.693-1] Amendment 1: (to ITU-T Rec. X.693 | ISO/IEC 8825-4) XER encoding instructions and EXTENDED-XER.

[X.693-1]修改件1:(根据ITU-T Rec.X.693 | ISO/IEC 8825-4)XER编码指令和扩展XER。

[XML10] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E. and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fourth Edition)", W3C Recommendation, http://www.w3.org/TR/2006/REC-xml-20060816, August 2006.

[XML10]Bray,T.,Paoli,J.,Sperberg McQueen,C.,Maler,E.和F.Yergeau,“可扩展标记语言(XML)1.0(第四版)”,W3C建议,http://www.w3.org/TR/2006/REC-xml-20060816,2006年8月。

[XML11] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., Yergeau, F., and J. Cowan, "Extensible Markup Language (XML) 1.1 (Second Edition)", W3C Recommendation, http://www.w3.org/TR/2006/REC-xml11-20060816, August 2006.

[XML11]Bray,T.,Paoli,J.,Sperberg McQueen,C.,Maler,E.,Yergeau,F.,和J.Cowan,“可扩展标记语言(XML)1.1(第二版)”,W3C建议,http://www.w3.org/TR/2006/REC-xml11-20060816,2006年8月。

[XMLNS10] Bray, T., Hollander, D., Layman, A., and R. Tobin, "Namespaces in XML 1.0 (Second Edition)", W3C Recommendation, http://www.w3.org/TR/2006/REC-xml-names-20060816, August 2006.

[XMLNS10]Bray,T.,Hollander,D.,Layman,A.,和R.Tobin,“XML 1.0中的名称空间(第二版)”,W3C建议,http://www.w3.org/TR/2006/REC-xml-names-20060816,2006年8月。

[XMLNS11] Bray, T., Hollander, D., Layman, A. and R. Tobin, "Namespaces in XML 1.1 (Second Edition)", W3C Recommendation, http://www.w3.org/TR/2006/REC-xml-names11-20060816, August 2006.

[XMLNS11]Bray,T.,Hollander,D.,Layman,A.和R.Tobin,“XML 1.1中的名称空间(第二版)”,W3C建议,http://www.w3.org/TR/2006/REC-xml-names11-20060816,2006年8月。

[INFOSET] Cowan, J. and R. Tobin, "XML Information Set (Second Edition)", W3C Recommendation, http://www.w3.org/TR/2004/REC-xml-infoset-20040204, February 2004.

[INFOSET]Cowan,J.和R.Tobin,“XML信息集(第二版)”,W3C建议,http://www.w3.org/TR/2004/REC-xml-infoset-20040204,2004年2月。

[UNICODE] The Unicode Consortium, "The Unicode Standard, Version 4.0", Boston, MA, Addison-Wesley Developers Press, 2003. ISBN 0-321-18578-1.

[UNICODE]UNICODE联盟,“UNICODE标准,4.0版”,马萨诸塞州波士顿,Addison-Wesley开发者出版社,2003年。ISBN 0-321-18578-1。

17.2. Informative References
17.2. 资料性引用

[CXML] Boyer, J., "Canonical XML Version 1.0", W3C Recommendation, http://www.w3.org/TR/2001/REC-xml-c14n-20010315, March 2001.

[CXML]Boyer,J.,“规范XML 1.0版”,W3C建议,http://www.w3.org/TR/2001/REC-xml-c14n-20010315,2001年3月。

[XSD1] Thompson, H., Beech, D., Maloney, M. and N. Mendelsohn, "XML Schema Part 1: Structures Second Edition", W3C Recommendation, http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/, October 2004.

[XSD1]Thompson,H.,Beech,D.,Maloney,M.和N.Mendelsohn,“XML模式第1部分:结构第二版”,W3C建议,http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/,2004年10月。

[RNG] Clark, J. and M. Makoto, "RELAX NG Tutorial", OASIS Committee Specification, http://www.oasis-open.org/ committees/relax-ng/tutorial-20011203.html, December 2001.

[RNG]Clark,J.和M.Makoto,“放松NG教程”,绿洲委员会规范,http://www.oasis-open.org/ committees/relax ng/tutorial-20011203.html,2001年12月。

Appendix A. ASN.1 for ASN.X
附录A.ASN.X的ASN.1

This appendix is normative.

本附录为规范性附录。

   AbstractSyntaxNotation-X
       { iso(1) identified-organization(3) dod(6)
         internet(1) private(4) enterprise(1)
         xmled(21472) asnx(1) module(0) notation(1) }
        
   AbstractSyntaxNotation-X
       { iso(1) identified-organization(3) dod(6)
         internet(1) private(4) enterprise(1)
         xmled(21472) asnx(1) module(0) notation(1) }
        
   -- Copyright (C) The IETF Trust (2007).  This version of
   -- this ASN.1 module is part of RFC 4912; see the RFC itself
   -- for full legal notices.
   --
   -- Regarding this ASN.1 module or any portion of it, the author
   -- makes no guarantees and is not responsible for any damage
   -- resulting from its use.  The author grants irrevocable permission
   -- to anyone to use, modify, and distribute it in any way that does
   -- not diminish the rights of anyone else to use, modify, and
   -- distribute it, provided that redistributed derivative works do
   -- not contain misleading author or version information.
   -- Derivative works need not be licensed under similar terms.
        
   -- Copyright (C) The IETF Trust (2007).  This version of
   -- this ASN.1 module is part of RFC 4912; see the RFC itself
   -- for full legal notices.
   --
   -- Regarding this ASN.1 module or any portion of it, the author
   -- makes no guarantees and is not responsible for any damage
   -- resulting from its use.  The author grants irrevocable permission
   -- to anyone to use, modify, and distribute it in any way that does
   -- not diminish the rights of anyone else to use, modify, and
   -- distribute it, provided that redistributed derivative works do
   -- not contain misleading author or version information.
   -- Derivative works need not be licensed under similar terms.
        
   DEFINITIONS
   RXER INSTRUCTIONS
   AUTOMATIC TAGS
   EXTENSIBILITY IMPLIED ::= BEGIN
        
   DEFINITIONS
   RXER INSTRUCTIONS
   AUTOMATIC TAGS
   EXTENSIBILITY IMPLIED ::= BEGIN
        
   IMPORTS
       Markup,
       AnyURI,
       NCName,
       Name,
       QName
           FROM AdditionalBasicDefinitions
               { iso(1) identified-organization(3) dod(6)
                 internet(1) private(4) enterprise(1)
                 xmled(21472) asnx(1) module(0) basic(0) }
       GSER-EncodingInstruction,
       GSER-EncodingInstructionAssignmentList
           FROM GSER-EncodingInstructionNotation
               { iso(1) identified-organization(3) dod(6)
                 internet(1) private(4) enterprise(1)
                 xmled(21472) asnx(1) module(0) gser-ei-notation(2) }
       XER-EncodingInstruction,
       XER-EncodingInstructionAssignmentList
           FROM XER-EncodingInstructionNotation
               { iso(1) identified-organization(3) dod(6)
                 internet(1) private(4) enterprise(1)
        
   IMPORTS
       Markup,
       AnyURI,
       NCName,
       Name,
       QName
           FROM AdditionalBasicDefinitions
               { iso(1) identified-organization(3) dod(6)
                 internet(1) private(4) enterprise(1)
                 xmled(21472) asnx(1) module(0) basic(0) }
       GSER-EncodingInstruction,
       GSER-EncodingInstructionAssignmentList
           FROM GSER-EncodingInstructionNotation
               { iso(1) identified-organization(3) dod(6)
                 internet(1) private(4) enterprise(1)
                 xmled(21472) asnx(1) module(0) gser-ei-notation(2) }
       XER-EncodingInstruction,
       XER-EncodingInstructionAssignmentList
           FROM XER-EncodingInstructionNotation
               { iso(1) identified-organization(3) dod(6)
                 internet(1) private(4) enterprise(1)
        
                 xmled(21472) asnx(1) module(0) xer-ei-notation(3) }
       ;
        
                 xmled(21472) asnx(1) module(0) xer-ei-notation(3) }
       ;
        
   ModuleDefinition ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation            Annotation OPTIONAL,
       format                [ATTRIBUTE] [VERSION-INDICATOR]
                                 UTF8String ("1.0", ...) DEFAULT "1.0",
       name                  [ATTRIBUTE] ModuleReference,
       identifier            [ATTRIBUTE] DefinitiveIdentifier OPTIONAL,
       schemaIdentity        [ATTRIBUTE] AnyURI OPTIONAL,
       targetNamespace       [ATTRIBUTE] AnyURI OPTIONAL,
       targetPrefix          [ATTRIBUTE] NCName OPTIONAL,
       tagDefault            [ATTRIBUTE] TagDefault DEFAULT automatic,
       extensibilityImplied  [ATTRIBUTE] BOOLEAN DEFAULT FALSE,
       export                SEQUENCE { } OPTIONAL,
           -- export is not used in this version
       imports               [GROUP] ImportList OPTIONAL,
       assignments           [GROUP] AssignmentList OPTIONAL,
       encodingControls      EncodingControlSections OPTIONAL
   }
        
   ModuleDefinition ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation            Annotation OPTIONAL,
       format                [ATTRIBUTE] [VERSION-INDICATOR]
                                 UTF8String ("1.0", ...) DEFAULT "1.0",
       name                  [ATTRIBUTE] ModuleReference,
       identifier            [ATTRIBUTE] DefinitiveIdentifier OPTIONAL,
       schemaIdentity        [ATTRIBUTE] AnyURI OPTIONAL,
       targetNamespace       [ATTRIBUTE] AnyURI OPTIONAL,
       targetPrefix          [ATTRIBUTE] NCName OPTIONAL,
       tagDefault            [ATTRIBUTE] TagDefault DEFAULT automatic,
       extensibilityImplied  [ATTRIBUTE] BOOLEAN DEFAULT FALSE,
       export                SEQUENCE { } OPTIONAL,
           -- export is not used in this version
       imports               [GROUP] ImportList OPTIONAL,
       assignments           [GROUP] AssignmentList OPTIONAL,
       encodingControls      EncodingControlSections OPTIONAL
   }
        
   ModuleReference ::= TypeReference
        
   ModuleReference ::= TypeReference
        
   DefinitiveIdentifier ::= OBJECT IDENTIFIER
        
   DefinitiveIdentifier ::= OBJECT IDENTIFIER
        
   TagDefault ::= ENUMERATED { explicit, implicit, automatic }
        
   TagDefault ::= ENUMERATED { explicit, implicit, automatic }
        
   Annotation ::= Markup
        
   Annotation ::= Markup
        
   ImportList ::= SEQUENCE SIZE (1..MAX) OF import Import
        
   ImportList ::= SEQUENCE SIZE (1..MAX) OF import Import
        
   Import ::= SEQUENCE {
       name            [ATTRIBUTE] ModuleReference OPTIONAL,
       identifier      [ATTRIBUTE] DefinitiveIdentifier OPTIONAL,
       schemaIdentity  [ATTRIBUTE] AnyURI OPTIONAL,
       namespace       [ATTRIBUTE] AnyURI OPTIONAL,
       schemaLocation  [ATTRIBUTE] AnyURI OPTIONAL
   }
        
   Import ::= SEQUENCE {
       name            [ATTRIBUTE] ModuleReference OPTIONAL,
       identifier      [ATTRIBUTE] DefinitiveIdentifier OPTIONAL,
       schemaIdentity  [ATTRIBUTE] AnyURI OPTIONAL,
       namespace       [ATTRIBUTE] AnyURI OPTIONAL,
       schemaLocation  [ATTRIBUTE] AnyURI OPTIONAL
   }
        
   AssignmentList ::= SEQUENCE SIZE (1..MAX) OF
       assignment [GROUP] Assignment
        
   AssignmentList ::= SEQUENCE SIZE (1..MAX) OF
       assignment [GROUP] Assignment
        
   Assignment ::= [NO-INSERTIONS] CHOICE {
       namedType       TypeAssignment,
       namedValue      ValueAssignment,
       namedValueSet   ValueSetTypeAssignment,
       namedClass      ObjectClassAssignment,
       namedObject     ObjectAssignment,
        
   Assignment ::= [NO-INSERTIONS] CHOICE {
       namedType       TypeAssignment,
       namedValue      ValueAssignment,
       namedValueSet   ValueSetTypeAssignment,
       namedClass      ObjectClassAssignment,
       namedObject     ObjectAssignment,
        

namedObjectSet ObjectSetAssignment, component [GROUP] TopLevelNamedType }

namedObjectSet ObjectSetAssignment,组件[GROUP]TopLevelNamedType}

   TypeAssignment ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] TypeReference,
       type        [GROUP] Type
   }
        
   TypeAssignment ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] TypeReference,
       type        [GROUP] Type
   }
        
   TypeReference ::= UTF8String (PATTERN "[A-Z]\w*(-\w+)*")
                                 -- \w is equivalent to [a-zA-Z0-9]
        
   TypeReference ::= UTF8String (PATTERN "[A-Z]\w*(-\w+)*")
                                 -- \w is equivalent to [a-zA-Z0-9]
        
   ValueAssignment ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] ValueReference,
       type        [GROUP] Type,
       value       [GROUP] Value
   }
        
   ValueAssignment ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] ValueReference,
       type        [GROUP] Type,
       value       [GROUP] Value
   }
        
   ValueReference ::= Identifier
        
   ValueReference ::= Identifier
        
   Identifier ::= UTF8String (PATTERN "[a-z]\w(-\w+)*")
        
   Identifier ::= UTF8String (PATTERN "[a-z]\w(-\w+)*")
        
   ValueSetTypeAssignment ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] TypeReference,
       type        [GROUP] Type,
       valueSet    [GROUP] ValueSet
   }
        
   ValueSetTypeAssignment ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] TypeReference,
       type        [GROUP] Type,
       valueSet    [GROUP] ValueSet
   }
        
   ObjectClassAssignment ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectClassReference,
       objectClass  [GROUP] ObjectClass
   }
        
   ObjectClassAssignment ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectClassReference,
       objectClass  [GROUP] ObjectClass
   }
        
   ObjectClassReference ::= UTF8String
                                (PATTERN "[A-Z][A-Z0-9]*(-[A-Z0-9]+)*")
        
   ObjectClassReference ::= UTF8String
                                (PATTERN "[A-Z][A-Z0-9]*(-[A-Z0-9]+)*")
        
   ObjectAssignment ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectReference,
       objectClass  [GROUP] DefinedObjectClass,
       object       [GROUP] Object
   }
        
   ObjectAssignment ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectReference,
       objectClass  [GROUP] DefinedObjectClass,
       object       [GROUP] Object
   }
        
   ObjectReference ::= ValueReference
        
   ObjectReference ::= ValueReference
        
   ObjectSetAssignment ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectSetReference,
       objectClass  [GROUP] DefinedObjectClass,
       objectSet    [GROUP] ObjectSet
   }
        
   ObjectSetAssignment ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectSetReference,
       objectClass  [GROUP] DefinedObjectClass,
       objectSet    [GROUP] ObjectSet
   }
        
   ObjectSetReference ::= TypeReference
        
   ObjectSetReference ::= TypeReference
        
   TopLevelNamedType ::= NamedType
       (WITH COMPONENTS { ...,
           component (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ..., reference ABSENT })
           }),
           element   (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ..., reference ABSENT })
           }),
           attribute (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ..., reference ABSENT })
           }),
           group         ABSENT,
           member        ABSENT,
           item          ABSENT,
           simpleContent ABSENT })
        
   TopLevelNamedType ::= NamedType
       (WITH COMPONENTS { ...,
           component (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ..., reference ABSENT })
           }),
           element   (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ..., reference ABSENT })
           }),
           attribute (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ..., reference ABSENT })
           }),
           group         ABSENT,
           member        ABSENT,
           item          ABSENT,
           simpleContent ABSENT })
        
   NamedType ::= [SINGULAR-INSERTIONS] CHOICE {
       component      Element,
       element        Element,
       attribute      Attribute,
       group          InvisibleNamedType,
       member         InvisibleNamedType,
       item           InvisibleNamedType,
       simpleContent  InvisibleNamedType
   }
        
   NamedType ::= [SINGULAR-INSERTIONS] CHOICE {
       component      Element,
       element        Element,
       attribute      Attribute,
       group          InvisibleNamedType,
       member         InvisibleNamedType,
       item           InvisibleNamedType,
       simpleContent  InvisibleNamedType
   }
        
   Attribute ::= GenericNamedType
       (WITH COMPONENTS { ...,
           definition (WITH COMPONENTS { ...,
               local (WITH COMPONENTS { ...,
                   typeAsVersion ABSENT }) }) })
        
   Attribute ::= GenericNamedType
       (WITH COMPONENTS { ...,
           definition (WITH COMPONENTS { ...,
               local (WITH COMPONENTS { ...,
                   typeAsVersion ABSENT }) }) })
        
   Element ::= GenericNamedType
       (WITH COMPONENTS { ...,
           definition (WITH COMPONENTS { ...,
               local (WITH COMPONENTS { ...,
                   versionIndicator ABSENT }) }) })
        
   Element ::= GenericNamedType
       (WITH COMPONENTS { ...,
           definition (WITH COMPONENTS { ...,
               local (WITH COMPONENTS { ...,
                   versionIndicator ABSENT }) }) })
        
   InvisibleNamedType ::= GenericNamedType
       (WITH COMPONENTS { ...,
           definition (WITH COMPONENTS { ...,
               reference  ABSENT,
               local (WITH COMPONENTS { ...,
                   typeAsVersion ABSENT,
                   versionIndicator ABSENT }) }) })
        
   InvisibleNamedType ::= GenericNamedType
       (WITH COMPONENTS { ...,
           definition (WITH COMPONENTS { ...,
               reference  ABSENT,
               local (WITH COMPONENTS { ...,
                   typeAsVersion ABSENT,
                   versionIndicator ABSENT }) }) })
        
   GenericNamedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       identifier  [ATTRIBUTE] IdentifierOrEmpty OPTIONAL,
       definition  [GROUP] CHOICE {
           reference   [GROUP] DefinedComponent,
           local       [GROUP] LocalComponent
       }
   }
        
   GenericNamedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       identifier  [ATTRIBUTE] IdentifierOrEmpty OPTIONAL,
       definition  [GROUP] CHOICE {
           reference   [GROUP] DefinedComponent,
           local       [GROUP] LocalComponent
       }
   }
        
   IdentifierOrEmpty ::= UTF8String (INCLUDES Identifier | "")
        
   IdentifierOrEmpty ::= UTF8String (INCLUDES Identifier | "")
        
   DefinedComponent ::= [HOLLOW-INSERTIONS] SEQUENCE {
       name         [GROUP] [NO-INSERTIONS] CHOICE {
           ref          [ATTRIBUTE] QName,
           elementType  [ATTRIBUTE] Name
       },
       namespace    [ATTRIBUTE] AnyURI OPTIONAL,
       context      [ATTRIBUTE] AnyURI OPTIONAL,
       embedded     [ATTRIBUTE] BOOLEAN OPTIONAL,
       prefixes     [GROUP] EncodingPrefixes OPTIONAL
   }
   (WITH COMPONENTS { ...,
        name (WITH COMPONENTS { ref PRESENT }),
        namespace ABSENT } |
    WITH COMPONENTS { ...,
        name (WITH COMPONENTS { elementType PRESENT }),
        embedded ABSENT })
        
   DefinedComponent ::= [HOLLOW-INSERTIONS] SEQUENCE {
       name         [GROUP] [NO-INSERTIONS] CHOICE {
           ref          [ATTRIBUTE] QName,
           elementType  [ATTRIBUTE] Name
       },
       namespace    [ATTRIBUTE] AnyURI OPTIONAL,
       context      [ATTRIBUTE] AnyURI OPTIONAL,
       embedded     [ATTRIBUTE] BOOLEAN OPTIONAL,
       prefixes     [GROUP] EncodingPrefixes OPTIONAL
   }
   (WITH COMPONENTS { ...,
        name (WITH COMPONENTS { ref PRESENT }),
        namespace ABSENT } |
    WITH COMPONENTS { ...,
        name (WITH COMPONENTS { elementType PRESENT }),
        embedded ABSENT })
        
   LocalComponent ::= SEQUENCE {
       name              [ATTRIBUTE] NCName,
       typeAsVersion     [ATTRIBUTE] BOOLEAN OPTIONAL,
       versionIndicator  [ATTRIBUTE] BOOLEAN OPTIONAL,
       type              [GROUP] Type
   }
        
   LocalComponent ::= SEQUENCE {
       name              [ATTRIBUTE] NCName,
       typeAsVersion     [ATTRIBUTE] BOOLEAN OPTIONAL,
       versionIndicator  [ATTRIBUTE] BOOLEAN OPTIONAL,
       type              [GROUP] Type
   }
        
   Type ::= [NO-INSERTIONS] CHOICE {
       typeRef  [NAME AS "type"] [ATTRIBUTE] QName,
       type     ElementFormType
   }
        
   Type ::= [NO-INSERTIONS] CHOICE {
       typeRef  [NAME AS "type"] [ATTRIBUTE] QName,
       type     ElementFormType
   }
        
   ElementFormType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       explicit    [ATTRIBUTE] BOOLEAN OPTIONAL,
       definition  [GROUP] CHOICE {
           reference        [GROUP] DefinedType,
           expanded         ExpandedType,
           ancestor         [ATTRIBUTE] INTEGER (1..MAX),
           namedBitList     NamedBitList,
           namedNumberList  NamedNumberList,
           enumerated       EnumeratedType,
           tagged           TaggedType,
           prefixed         EncodingPrefixedType,
           selection        SelectionType,
           instanceOf       InstanceOfType,
           fromClass        ObjectClassFieldType,
           fromObjects      InformationFromObjects,
           sequence         SequenceType,
           set              SetType,
           choice           ChoiceType,
           union            UnionType,
           sequenceOf       SequenceOfType,
           setOf            SetOfType,
           list             ListType,
           constrained      ConstrainedType
       }
   }
        
   ElementFormType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       explicit    [ATTRIBUTE] BOOLEAN OPTIONAL,
       definition  [GROUP] CHOICE {
           reference        [GROUP] DefinedType,
           expanded         ExpandedType,
           ancestor         [ATTRIBUTE] INTEGER (1..MAX),
           namedBitList     NamedBitList,
           namedNumberList  NamedNumberList,
           enumerated       EnumeratedType,
           tagged           TaggedType,
           prefixed         EncodingPrefixedType,
           selection        SelectionType,
           instanceOf       InstanceOfType,
           fromClass        ObjectClassFieldType,
           fromObjects      InformationFromObjects,
           sequence         SequenceType,
           set              SetType,
           choice           ChoiceType,
           union            UnionType,
           sequenceOf       SequenceOfType,
           setOf            SetOfType,
           list             ListType,
           constrained      ConstrainedType
       }
   }
        
   DefinedType ::= SEQUENCE {
       name       [GROUP] [NO-INSERTIONS] CHOICE {
           ref          [ATTRIBUTE] QName,
           elementType  [ATTRIBUTE] Name
       },
       context    [ATTRIBUTE] AnyURI OPTIONAL,
       embedded   [ATTRIBUTE] BOOLEAN OPTIONAL
   }
   (WITH COMPONENTS { ...,
        name (WITH COMPONENTS { ref PRESENT }) } |
    WITH COMPONENTS { ...,
        name (WITH COMPONENTS { elementType PRESENT }),
        embedded ABSENT })
        
   DefinedType ::= SEQUENCE {
       name       [GROUP] [NO-INSERTIONS] CHOICE {
           ref          [ATTRIBUTE] QName,
           elementType  [ATTRIBUTE] Name
       },
       context    [ATTRIBUTE] AnyURI OPTIONAL,
       embedded   [ATTRIBUTE] BOOLEAN OPTIONAL
   }
   (WITH COMPONENTS { ...,
        name (WITH COMPONENTS { ref PRESENT }) } |
    WITH COMPONENTS { ...,
        name (WITH COMPONENTS { elementType PRESENT }),
        embedded ABSENT })
        
   ExpandedType ::= SEQUENCE {
       name    [ATTRIBUTE] NCName OPTIONAL,
       module  ReferencedModule OPTIONAL,
       type    [GROUP] Type
   }
        
   ExpandedType ::= SEQUENCE {
       name    [ATTRIBUTE] NCName OPTIONAL,
       module  ReferencedModule OPTIONAL,
       type    [GROUP] Type
   }
        
   ReferencedModule ::= SEQUENCE {
        
   ReferencedModule ::= SEQUENCE {
        

name [ATTRIBUTE] ModuleReference OPTIONAL, identifier [ATTRIBUTE] DefinitiveIdentifier OPTIONAL, schemaIdentity [ATTRIBUTE] AnyURI OPTIONAL }

name[属性]ModuleReference可选,identifier[属性]DefinitiveIdentifier可选,schemaIdentity[属性]AnyURI可选}

   NamedBitList ::= SEQUENCE SIZE (1..MAX) OF namedBit NamedBit
        
   NamedBitList ::= SEQUENCE SIZE (1..MAX) OF namedBit NamedBit
        
   NamedBit ::= SEQUENCE {
       name        [ATTRIBUTE] NCName,
       identifier  [ATTRIBUTE] Identifier OPTIONAL,
       bit         [ATTRIBUTE] INTEGER (0..MAX)
   }
        
   NamedBit ::= SEQUENCE {
       name        [ATTRIBUTE] NCName,
       identifier  [ATTRIBUTE] Identifier OPTIONAL,
       bit         [ATTRIBUTE] INTEGER (0..MAX)
   }
        
   NamedNumberList ::= SEQUENCE SIZE (1..MAX) OF
       namedNumber NamedNumber
        
   NamedNumberList ::= SEQUENCE SIZE (1..MAX) OF
       namedNumber NamedNumber
        
   NamedNumber ::= SEQUENCE {
       name        [ATTRIBUTE] NCName,
       identifier  [ATTRIBUTE] Identifier OPTIONAL,
       number      [ATTRIBUTE] INTEGER
   }
        
   NamedNumber ::= SEQUENCE {
       name        [ATTRIBUTE] NCName,
       identifier  [ATTRIBUTE] Identifier OPTIONAL,
       number      [ATTRIBUTE] INTEGER
   }
        
   EnumeratedType ::= SEQUENCE {
       root       [GROUP] Enumeration,
       extension  SEQUENCE {
           exception  ExceptionSpec OPTIONAL,
           additions  [GROUP] Enumeration OPTIONAL
       } OPTIONAL
   }
        
   EnumeratedType ::= SEQUENCE {
       root       [GROUP] Enumeration,
       extension  SEQUENCE {
           exception  ExceptionSpec OPTIONAL,
           additions  [GROUP] Enumeration OPTIONAL
       } OPTIONAL
   }
        
   Enumeration ::= SEQUENCE SIZE (1..MAX) OF
       enumeration EnumerationItem
        
   Enumeration ::= SEQUENCE SIZE (1..MAX) OF
       enumeration EnumerationItem
        
   EnumerationItem ::= SEQUENCE {
       name        [ATTRIBUTE] NCName,
       identifier  [ATTRIBUTE] Identifier OPTIONAL,
       number      [ATTRIBUTE] INTEGER OPTIONAL
   }
        
   EnumerationItem ::= SEQUENCE {
       name        [ATTRIBUTE] NCName,
       identifier  [ATTRIBUTE] Identifier OPTIONAL,
       number      [ATTRIBUTE] INTEGER OPTIONAL
   }
        
   Tag ::= SEQUENCE {
       tagClass  [ATTRIBUTE] TagClass OPTIONAL,
       number    [ATTRIBUTE] INTEGER (0..MAX),
       tagging   [ATTRIBUTE] Tagging OPTIONAL
   }
        
   Tag ::= SEQUENCE {
       tagClass  [ATTRIBUTE] TagClass OPTIONAL,
       number    [ATTRIBUTE] INTEGER (0..MAX),
       tagging   [ATTRIBUTE] Tagging OPTIONAL
   }
        
   TaggedType ::= SEQUENCE {
       COMPONENTS OF Tag,
       type  [GROUP] Type
        
   TaggedType ::= SEQUENCE {
       COMPONENTS OF Tag,
       type  [GROUP] Type
        

}

}

   TagClass ::= ENUMERATED { universal, application, private }
        
   TagClass ::= ENUMERATED { universal, application, private }
        
   Tagging ::= ENUMERATED { explicit, implicit }
        
   Tagging ::= ENUMERATED { explicit, implicit }
        
   EncodingPrefixedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       prefixes  [GROUP] EncodingPrefixes,
       type      [GROUP] Type
   }
        
   EncodingPrefixedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       prefixes  [GROUP] EncodingPrefixes,
       type      [GROUP] Type
   }
        
   EncodingPrefixes ::= SEQUENCE SIZE (1..MAX) OF
       prefix [GROUP] EncodingPrefix
        
   EncodingPrefixes ::= SEQUENCE SIZE (1..MAX) OF
       prefix [GROUP] EncodingPrefix
        
   EncodingPrefix ::= [SINGULAR-INSERTIONS] CHOICE {
       tag   [NAME AS "TAG"] Tag,
       gser  [NAME AS "GSER"] GSER-EncodingInstruction,
       xer   [NAME AS "XER"] XER-EncodingInstruction
       -- plus encoding instructions
       -- for other encoding rules in the future
   }
        
   EncodingPrefix ::= [SINGULAR-INSERTIONS] CHOICE {
       tag   [NAME AS "TAG"] Tag,
       gser  [NAME AS "GSER"] GSER-EncodingInstruction,
       xer   [NAME AS "XER"] XER-EncodingInstruction
       -- plus encoding instructions
       -- for other encoding rules in the future
   }
        
   SelectionType ::= SEQUENCE {
       alternative  [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           component    [ATTRIBUTE] QName,
           element      [ATTRIBUTE] QName,
           attribute    [ATTRIBUTE] QName,
           group        [ATTRIBUTE] QName,
           member       [ATTRIBUTE] QName
       },
       type         [GROUP] Type
   }
        
   SelectionType ::= SEQUENCE {
       alternative  [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           component    [ATTRIBUTE] QName,
           element      [ATTRIBUTE] QName,
           attribute    [ATTRIBUTE] QName,
           group        [ATTRIBUTE] QName,
           member       [ATTRIBUTE] QName
       },
       type         [GROUP] Type
   }
        
   InstanceOfType ::= DefinedObjectClass
        
   InstanceOfType ::= DefinedObjectClass
        
   ObjectClassFieldType ::= SEQUENCE {
       objectClass  [GROUP] DefinedObjectClass,
       fieldName    [GROUP] FieldName
   }
        
   ObjectClassFieldType ::= SEQUENCE {
       objectClass  [GROUP] DefinedObjectClass,
       fieldName    [GROUP] FieldName
   }
        
   FieldName ::= [SINGULAR-INSERTIONS] CHOICE {
       fieldNameAtt  [NAME AS "fieldName"]
                         [ATTRIBUTE] PrimitiveFieldNames,
       fieldName     PrimitiveFieldNames
   }
        
   FieldName ::= [SINGULAR-INSERTIONS] CHOICE {
       fieldNameAtt  [NAME AS "fieldName"]
                         [ATTRIBUTE] PrimitiveFieldNames,
       fieldName     PrimitiveFieldNames
   }
        
   PrimitiveFieldNames ::= UTF8String
        
   PrimitiveFieldNames ::= UTF8String
        
   InformationFromObjects ::= [HOLLOW-INSERTIONS] SEQUENCE {
       referencedObjects  [GROUP] ReferencedObjects,
       fieldName          [GROUP] FieldName
   }
        
   InformationFromObjects ::= [HOLLOW-INSERTIONS] SEQUENCE {
       referencedObjects  [GROUP] ReferencedObjects,
       fieldName          [GROUP] FieldName
   }
        
   ReferencedObjects ::= [SINGULAR-INSERTIONS] CHOICE {
       object     [GROUP] Object,
       objectSet  [GROUP] ObjectSet
   }
        
   ReferencedObjects ::= [SINGULAR-INSERTIONS] CHOICE {
       object     [GROUP] Object,
       objectSet  [GROUP] ObjectSet
   }
        
   Insertions ::=
       ENUMERATED { none, hollow, singular, uniform, multiform }
        
   Insertions ::=
       ENUMERATED { none, hollow, singular, uniform, multiform }
        
   SequenceType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       insertions         [ATTRIBUTE] Insertions OPTIONAL,
       root               [GROUP] ComponentTypeList OPTIONAL,
       extensionAndFinal  [GROUP] [HOLLOW-INSERTIONS] SEQUENCE {
           extension          [HOLLOW-INSERTIONS] SEQUENCE {
               exception          ExceptionSpec OPTIONAL,
               additions          [GROUP] ExtensionAdditions OPTIONAL
           },
           root               [GROUP] ComponentTypeList OPTIONAL
       } OPTIONAL
   }
        
   SequenceType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       insertions         [ATTRIBUTE] Insertions OPTIONAL,
       root               [GROUP] ComponentTypeList OPTIONAL,
       extensionAndFinal  [GROUP] [HOLLOW-INSERTIONS] SEQUENCE {
           extension          [HOLLOW-INSERTIONS] SEQUENCE {
               exception          ExceptionSpec OPTIONAL,
               additions          [GROUP] ExtensionAdditions OPTIONAL
           },
           root               [GROUP] ComponentTypeList OPTIONAL
       } OPTIONAL
   }
        
   ComponentTypeList ::= SEQUENCE SIZE (1..MAX) OF
       componentType [GROUP] ComponentType
        
   ComponentTypeList ::= SEQUENCE SIZE (1..MAX) OF
       componentType [GROUP] ComponentType
        
   ComponentType ::= [NO-INSERTIONS] CHOICE {
       component     [GROUP] SequenceNamedType,
       optional      SEQUENCE {
           component     [GROUP] SequenceNamedType,
           default       Value OPTIONAL
       },
       componentsOf  Type
   }
        
   ComponentType ::= [NO-INSERTIONS] CHOICE {
       component     [GROUP] SequenceNamedType,
       optional      SEQUENCE {
           component     [GROUP] SequenceNamedType,
           default       Value OPTIONAL
       },
       componentsOf  Type
   }
        
   SequenceNamedType ::= NamedType
       (WITH COMPONENTS { ..., member ABSENT, item ABSENT })
        
   SequenceNamedType ::= NamedType
       (WITH COMPONENTS { ..., member ABSENT, item ABSENT })
        
   ExtensionAdditions ::= SEQUENCE SIZE (1..MAX) OF
       addition [GROUP] ExtensionAddition
        
   ExtensionAdditions ::= SEQUENCE SIZE (1..MAX) OF
       addition [GROUP] ExtensionAddition
        
   ExtensionAddition ::= [NO-INSERTIONS] CHOICE {
       extensionGroup  ExtensionAdditionGroup,
       componentType   [GROUP] ComponentType
   }
        
   ExtensionAddition ::= [NO-INSERTIONS] CHOICE {
       extensionGroup  ExtensionAdditionGroup,
       componentType   [GROUP] ComponentType
   }
        
   ExtensionAdditionGroup ::= [HOLLOW-INSERTIONS] SEQUENCE {
       version         [ATTRIBUTE] VersionNumber OPTIONAL,
       componentTypes  [GROUP] ComponentTypeList
   }
        
   ExtensionAdditionGroup ::= [HOLLOW-INSERTIONS] SEQUENCE {
       version         [ATTRIBUTE] VersionNumber OPTIONAL,
       componentTypes  [GROUP] ComponentTypeList
   }
        
   VersionNumber ::= INTEGER (2..MAX)
        
   VersionNumber ::= INTEGER (2..MAX)
        
   SetType ::= SequenceType
        
   SetType ::= SequenceType
        
   ChoiceOrUnionType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       insertions  [ATTRIBUTE] Insertions OPTIONAL,
       precedence  [ATTRIBUTE] PrecedenceList OPTIONAL,
       root        [GROUP] AlternativeTypeList,
       extension   [HOLLOW-INSERTIONS] SEQUENCE {
           exception   ExceptionSpec OPTIONAL,
           additions   [GROUP] ExtensionAdditionAlternatives OPTIONAL
       } OPTIONAL
   }
        
   ChoiceOrUnionType ::= [HOLLOW-INSERTIONS] SEQUENCE {
       insertions  [ATTRIBUTE] Insertions OPTIONAL,
       precedence  [ATTRIBUTE] PrecedenceList OPTIONAL,
       root        [GROUP] AlternativeTypeList,
       extension   [HOLLOW-INSERTIONS] SEQUENCE {
           exception   ExceptionSpec OPTIONAL,
           additions   [GROUP] ExtensionAdditionAlternatives OPTIONAL
       } OPTIONAL
   }
        
   PrecedenceList ::= [LIST] SEQUENCE SIZE (1..MAX) OF member QName
        
   PrecedenceList ::= [LIST] SEQUENCE SIZE (1..MAX) OF member QName
        
   AlternativeTypeList ::= SEQUENCE SIZE (1..MAX) OF
       component [GROUP] ChoiceOrUnionNamedType
        
   AlternativeTypeList ::= SEQUENCE SIZE (1..MAX) OF
       component [GROUP] ChoiceOrUnionNamedType
        
   ChoiceOrUnionNamedType ::= NamedType
       (WITH COMPONENTS { ..., item ABSENT, simpleContent ABSENT })
        
   ChoiceOrUnionNamedType ::= NamedType
       (WITH COMPONENTS { ..., item ABSENT, simpleContent ABSENT })
        
   ExtensionAdditionAlternatives ::= SEQUENCE SIZE (1..MAX) OF
       addition [GROUP] ExtensionAdditionAlternative
        
   ExtensionAdditionAlternatives ::= SEQUENCE SIZE (1..MAX) OF
       addition [GROUP] ExtensionAdditionAlternative
        
   ExtensionAdditionAlternative ::= [NO-INSERTIONS] CHOICE {
       extensionGroup  ExtensionAdditionAlternativesGroup,
       component       [GROUP] ChoiceOrUnionNamedType
   }
        
   ExtensionAdditionAlternative ::= [NO-INSERTIONS] CHOICE {
       extensionGroup  ExtensionAdditionAlternativesGroup,
       component       [GROUP] ChoiceOrUnionNamedType
   }
        
   ExtensionAdditionAlternativesGroup ::= [HOLLOW-INSERTIONS] SEQUENCE {
       version       [ATTRIBUTE] VersionNumber OPTIONAL,
       alternatives  [GROUP] AlternativeTypeList
   }
        
   ExtensionAdditionAlternativesGroup ::= [HOLLOW-INSERTIONS] SEQUENCE {
       version       [ATTRIBUTE] VersionNumber OPTIONAL,
       alternatives  [GROUP] AlternativeTypeList
   }
        
   ChoiceType ::= ChoiceOrUnionType
       (WITH COMPONENTS { ...,
           precedence ABSENT,
           root (WITH COMPONENT (INCLUDES ChoiceNamedType)),
           extension (WITH COMPONENTS { ...,
               additions (WITH COMPONENT (WITH COMPONENTS { ...,
                   extensionGroup (WITH COMPONENTS { ...,
                       alternatives (WITH COMPONENT
        
   ChoiceType ::= ChoiceOrUnionType
       (WITH COMPONENTS { ...,
           precedence ABSENT,
           root (WITH COMPONENT (INCLUDES ChoiceNamedType)),
           extension (WITH COMPONENTS { ...,
               additions (WITH COMPONENT (WITH COMPONENTS { ...,
                   extensionGroup (WITH COMPONENTS { ...,
                       alternatives (WITH COMPONENT
        
                           (INCLUDES ChoiceNamedType)) }),
                   component (INCLUDES ChoiceNamedType) })) }) })
        
                           (INCLUDES ChoiceNamedType)) }),
                   component (INCLUDES ChoiceNamedType) })) }) })
        
   ChoiceNamedType ::= ChoiceOrUnionNamedType
       (WITH COMPONENTS { ..., member ABSENT })
        
   ChoiceNamedType ::= ChoiceOrUnionNamedType
       (WITH COMPONENTS { ..., member ABSENT })
        
   UnionType ::= ChoiceOrUnionType
       (WITH COMPONENTS { ...,
           insertions ABSENT,
           root (WITH COMPONENT (INCLUDES UnionNamedType)),
           extension (WITH COMPONENTS { ...,
               additions (WITH COMPONENT (WITH COMPONENTS { ...,
                   extensionGroup (WITH COMPONENTS { ...,
                       alternatives (WITH COMPONENT
                           (INCLUDES UnionNamedType)) }),
                   component (INCLUDES UnionNamedType) })) }) })
        
   UnionType ::= ChoiceOrUnionType
       (WITH COMPONENTS { ...,
           insertions ABSENT,
           root (WITH COMPONENT (INCLUDES UnionNamedType)),
           extension (WITH COMPONENTS { ...,
               additions (WITH COMPONENT (WITH COMPONENTS { ...,
                   extensionGroup (WITH COMPONENTS { ...,
                       alternatives (WITH COMPONENT
                           (INCLUDES UnionNamedType)) }),
                   component (INCLUDES UnionNamedType) })) }) })
        
   UnionNamedType ::= ChoiceOrUnionNamedType
       (WITH COMPONENTS { ...,
           component ABSENT,
           element   ABSENT,
           attribute ABSENT,
           group     ABSENT })
        
   UnionNamedType ::= ChoiceOrUnionNamedType
       (WITH COMPONENTS { ...,
           component ABSENT,
           element   ABSENT,
           attribute ABSENT,
           group     ABSENT })
        
   SequenceOfOrListType ::= SEQUENCE {
       minSize    [ATTRIBUTE] INTEGER (0..MAX) OPTIONAL,
       maxSize    [ATTRIBUTE] INTEGER (0..MAX) OPTIONAL,
       component  [GROUP] NamedType
                      (WITH COMPONENTS { ...,
                          attribute     ABSENT,
                          member        ABSENT,
                          simpleContent ABSENT })
   }
        
   SequenceOfOrListType ::= SEQUENCE {
       minSize    [ATTRIBUTE] INTEGER (0..MAX) OPTIONAL,
       maxSize    [ATTRIBUTE] INTEGER (0..MAX) OPTIONAL,
       component  [GROUP] NamedType
                      (WITH COMPONENTS { ...,
                          attribute     ABSENT,
                          member        ABSENT,
                          simpleContent ABSENT })
   }
        
   SequenceOfType ::= SequenceOfOrListType
       (WITH COMPONENTS { ...,
           component (WITH COMPONENTS { ..., item ABSENT }) })
        
   SequenceOfType ::= SequenceOfOrListType
       (WITH COMPONENTS { ...,
           component (WITH COMPONENTS { ..., item ABSENT }) })
        
   SetOfType ::= SequenceOfType
        
   SetOfType ::= SequenceOfType
        
   ListType ::= SequenceOfOrListType
       (WITH COMPONENTS { ...,
           component (WITH COMPONENTS { ...,
                         component ABSENT,
                         element   ABSENT,
                         group     ABSENT }) })
        
   ListType ::= SequenceOfOrListType
       (WITH COMPONENTS { ...,
           component (WITH COMPONENTS { ...,
                         component ABSENT,
                         element   ABSENT,
                         group     ABSENT }) })
        
   ConstrainedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
        
   ConstrainedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
        

type [GROUP] Type, constraint [GROUP] Constraint }

类型[组]类型,约束[组]约束}

   Constraint ::= SEQUENCE {
       constraintSpec  [GROUP] [NO-INSERTIONS] CHOICE {
           subtype         [GROUP] ElementSetSpecs,
           constrainedBy   UserDefinedConstraint,
           table           TableConstraint,
           contents        ContentsConstraint
       },
       exception       ExceptionSpec OPTIONAL
   }
        
   Constraint ::= SEQUENCE {
       constraintSpec  [GROUP] [NO-INSERTIONS] CHOICE {
           subtype         [GROUP] ElementSetSpecs,
           constrainedBy   UserDefinedConstraint,
           table           TableConstraint,
           contents        ContentsConstraint
       },
       exception       ExceptionSpec OPTIONAL
   }
        
   UserDefinedConstraint ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       parameters  [GROUP] ConstraintParameters OPTIONAL
   }
        
   UserDefinedConstraint ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       parameters  [GROUP] ConstraintParameters OPTIONAL
   }
        
   ConstraintParameters ::= SEQUENCE SIZE (1..MAX) OF
       parameter [GROUP] UserDefinedConstraintParameter
        
   ConstraintParameters ::= SEQUENCE SIZE (1..MAX) OF
       parameter [GROUP] UserDefinedConstraintParameter
        
   UserDefinedConstraintParameter ::= [SINGULAR-INSERTIONS] CHOICE {
       valueParameter      SEQUENCE {
           type                [GROUP] Type,
           value               [GROUP] Value
       },
       valueSetParameter   SEQUENCE {
           type                [GROUP] Type,
           valueSet            [GROUP] ValueSet
       },
       objectParameter     SEQUENCE {
           objectClass         [GROUP] DefinedObjectClass,
           object              [GROUP] Object
       },
       objectSetParameter  SEQUENCE {
           objectClass         [GROUP] DefinedObjectClass,
           objectSet           [GROUP] ObjectSet
       },
       typeParameter       SEQUENCE {
           type                [GROUP] Type
       },
       classParameter      SEQUENCE {
           objectClass         [GROUP] DefinedObjectClass
       }
   }
        
   UserDefinedConstraintParameter ::= [SINGULAR-INSERTIONS] CHOICE {
       valueParameter      SEQUENCE {
           type                [GROUP] Type,
           value               [GROUP] Value
       },
       valueSetParameter   SEQUENCE {
           type                [GROUP] Type,
           valueSet            [GROUP] ValueSet
       },
       objectParameter     SEQUENCE {
           objectClass         [GROUP] DefinedObjectClass,
           object              [GROUP] Object
       },
       objectSetParameter  SEQUENCE {
           objectClass         [GROUP] DefinedObjectClass,
           objectSet           [GROUP] ObjectSet
       },
       typeParameter       SEQUENCE {
           type                [GROUP] Type
       },
       classParameter      SEQUENCE {
           objectClass         [GROUP] DefinedObjectClass
       }
   }
        
   TableConstraint ::= SEQUENCE {
        
   TableConstraint ::= SEQUENCE {
        

objectSet [GROUP] ObjectSet, componentRelation [GROUP] AtNotations OPTIONAL }

objectSet[GROUP]objectSet,componentRelation[GROUP]AtNotations可选}

   AtNotations ::= SEQUENCE SIZE (1..MAX) OF
       restrictBy AtNotation
        
   AtNotations ::= SEQUENCE SIZE (1..MAX) OF
       restrictBy AtNotation
        
   AtNotation ::= Markup
        
   AtNotation ::= Markup
        
   ContentsConstraint ::= SEQUENCE {
       containing  Type OPTIONAL,
       encodedBy   Value OPTIONAL
   } ((WITH COMPONENTS { ..., containing PRESENT }) |
      (WITH COMPONENTS { ..., encodedBy PRESENT }))
        
   ContentsConstraint ::= SEQUENCE {
       containing  Type OPTIONAL,
       encodedBy   Value OPTIONAL
   } ((WITH COMPONENTS { ..., containing PRESENT }) |
      (WITH COMPONENTS { ..., encodedBy PRESENT }))
        
   ExceptionSpec ::= SEQUENCE {
       type   [GROUP] Type,
       value  [GROUP] Value
   }
        
   ExceptionSpec ::= SEQUENCE {
       type   [GROUP] Type,
       value  [GROUP] Value
   }
        
   Value ::= [NO-INSERTIONS] CHOICE {
       literalValueAtt  [NAME AS "literalValue"] [ATTRIBUTE] UTF8String,
       literalValue     ElementFormLiteralValue,
       valueRef         [NAME AS "value"] [ATTRIBUTE] QName,
       value            ElementFormNotationalValue
   }
        
   Value ::= [NO-INSERTIONS] CHOICE {
       literalValueAtt  [NAME AS "literalValue"] [ATTRIBUTE] UTF8String,
       literalValue     ElementFormLiteralValue,
       valueRef         [NAME AS "value"] [ATTRIBUTE] QName,
       value            ElementFormNotationalValue
   }
        
   ElementFormLiteralValue ::= Markup
   -- If asnx:literal="false" then the governing type of
   -- ElementFormLiteralValue is ElementFormNotationalValue.
        
   ElementFormLiteralValue ::= Markup
   -- If asnx:literal="false" then the governing type of
   -- ElementFormLiteralValue is ElementFormNotationalValue.
        
   ElementFormNotationalValue ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           reference      [GROUP] Reference,
           expanded       ExpandedValue,
           fromObjects    InformationFromObjects,
           openTypeValue  SEQUENCE {
               type           [GROUP] Type,
               value          [GROUP] Value
           },
           components     [GROUP] ComponentValueList
       }
   }
        
   ElementFormNotationalValue ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           reference      [GROUP] Reference,
           expanded       ExpandedValue,
           fromObjects    InformationFromObjects,
           openTypeValue  SEQUENCE {
               type           [GROUP] Type,
               value          [GROUP] Value
           },
           components     [GROUP] ComponentValueList
       }
   }
        
   Reference ::= SEQUENCE {
       ref      [ATTRIBUTE] QName,
       context  [ATTRIBUTE] AnyURI OPTIONAL
        
   Reference ::= SEQUENCE {
       ref      [ATTRIBUTE] QName,
       context  [ATTRIBUTE] AnyURI OPTIONAL
        

}

}

   ExpandedValue ::= SEQUENCE {
       name    [ATTRIBUTE] NCName OPTIONAL,
       module  ReferencedModule OPTIONAL,
       value   [GROUP] Value
   }
        
   ExpandedValue ::= SEQUENCE {
       name    [ATTRIBUTE] NCName OPTIONAL,
       module  ReferencedModule OPTIONAL,
       value   [GROUP] Value
   }
        
   ComponentValueList ::= SEQUENCE SIZE (1..MAX) OF
       component [GROUP] NamedValue
        
   ComponentValueList ::= SEQUENCE SIZE (1..MAX) OF
       component [GROUP] NamedValue
        
   NamedValue ::= [SINGULAR-INSERTIONS] CHOICE {
       component      GenericNamedValue,
       element        GenericNamedValue,
       attribute      GenericNamedValue,
       group          GenericNamedValue,
       member         GenericNamedValue,
       item           GenericNamedValue,
       simpleContent  GenericNamedValue
   }
        
   NamedValue ::= [SINGULAR-INSERTIONS] CHOICE {
       component      GenericNamedValue,
       element        GenericNamedValue,
       attribute      GenericNamedValue,
       group          GenericNamedValue,
       member         GenericNamedValue,
       item           GenericNamedValue,
       simpleContent  GenericNamedValue
   }
        
   GenericNamedValue ::= SEQUENCE {
       name   [ATTRIBUTE] QName,
       value  [GROUP] Value
   }
        
   GenericNamedValue ::= SEQUENCE {
       name   [ATTRIBUTE] QName,
       value  [GROUP] Value
   }
        
   ValueSet ::= [NO-INSERTIONS] CHOICE {
       valueSetRef  [NAME AS "valueSet"] [ATTRIBUTE] QName,
           -- valueSetRef is not used in this version
       valueSet     ElementFormValueSet
   }
        
   ValueSet ::= [NO-INSERTIONS] CHOICE {
       valueSetRef  [NAME AS "valueSet"] [ATTRIBUTE] QName,
           -- valueSetRef is not used in this version
       valueSet     ElementFormValueSet
   }
        
   ElementFormValueSet ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           elementSetSpecs  [GROUP] ElementSetSpecs
       }
   }
        
   ElementFormValueSet ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           elementSetSpecs  [GROUP] ElementSetSpecs
       }
   }
        
   ElementSetSpecs ::= [HOLLOW-INSERTIONS] SEQUENCE {
       root       [GROUP] ValueElementSetSpec,
       extension  [HOLLOW-INSERTIONS] SEQUENCE {
           additions  [GROUP] ValueElementSetSpec OPTIONAL
       } OPTIONAL
   }
        
   ElementSetSpecs ::= [HOLLOW-INSERTIONS] SEQUENCE {
       root       [GROUP] ValueElementSetSpec,
       extension  [HOLLOW-INSERTIONS] SEQUENCE {
           additions  [GROUP] ValueElementSetSpec OPTIONAL
       } OPTIONAL
   }
        
   ValueElementSetSpec ::= ElementSetSpec
   (WITH COMPONENTS { ...,
        
   ValueElementSetSpec ::= ElementSetSpec
   (WITH COMPONENTS { ...,
        

object ABSENT, objectSet ABSENT, union (WITH COMPONENT (INCLUDES ValueElementSetSpec)), intersection (WITH COMPONENT (INCLUDES ValueElementSetSpec)), all (WITH COMPONENTS { ..., elements (INCLUDES ValueElementSetSpec), except (INCLUDES ValueElementSetSpec) }) })

不存在对象、不存在对象集、并集(与组件(包括ValueElementSetSpec))、交集(与组件(包括ValueElementSetSpec))、全部(与组件{…,元素(包括ValueElementSetSpec),除了(包括ValueElementSetSpec)})

   ElementSetSpec ::= [SINGULAR-INSERTIONS] CHOICE {
       literalValue    ElementFormLiteralValue,
       value           ElementFormNotationalValue,
       includes        Type,
       range           ValueRange,
       size            Constraint,
       typeConstraint  Type,
       from            Constraint,
       withComponent   Constraint,
       withComponents  MultipleTypeConstraints,
       pattern         Value,
       object          ElementFormObject,
       objectSet       ElementFormObjectSet,
       union           ElementSetSpecList,
       intersection    ElementSetSpecList,
       all             SEQUENCE {
           elements        [GROUP] ElementSetSpec OPTIONAL,
           except          ElementSetSpec
       }
   }
        
   ElementSetSpec ::= [SINGULAR-INSERTIONS] CHOICE {
       literalValue    ElementFormLiteralValue,
       value           ElementFormNotationalValue,
       includes        Type,
       range           ValueRange,
       size            Constraint,
       typeConstraint  Type,
       from            Constraint,
       withComponent   Constraint,
       withComponents  MultipleTypeConstraints,
       pattern         Value,
       object          ElementFormObject,
       objectSet       ElementFormObjectSet,
       union           ElementSetSpecList,
       intersection    ElementSetSpecList,
       all             SEQUENCE {
           elements        [GROUP] ElementSetSpec OPTIONAL,
           except          ElementSetSpec
       }
   }
        
   ElementSetSpecList ::= SEQUENCE SIZE (2..MAX) OF
       elements [GROUP] ElementSetSpec
        
   ElementSetSpecList ::= SEQUENCE SIZE (2..MAX) OF
       elements [GROUP] ElementSetSpec
        
   ValueRange ::= SEQUENCE {
       minimum  [GROUP] [NO-INSERTIONS] CHOICE {
           minInclusive  EndValue,
           minExclusive  EndValue
       } DEFAULT minInclusive:{},
       maximum  [GROUP] [NO-INSERTIONS] CHOICE {
           maxInclusive  EndValue,
           maxExclusive  EndValue
       } DEFAULT maxInclusive:{}
   }
        
   ValueRange ::= SEQUENCE {
       minimum  [GROUP] [NO-INSERTIONS] CHOICE {
           minInclusive  EndValue,
           minExclusive  EndValue
       } DEFAULT minInclusive:{},
       maximum  [GROUP] [NO-INSERTIONS] CHOICE {
           maxInclusive  EndValue,
           maxExclusive  EndValue
       } DEFAULT maxInclusive:{}
   }
        
   EndValue ::= [HOLLOW-INSERTIONS] SEQUENCE {
       value  [GROUP] Value OPTIONAL
   }
        
   EndValue ::= [HOLLOW-INSERTIONS] SEQUENCE {
       value  [GROUP] Value OPTIONAL
   }
        
   MultipleTypeConstraints ::= [HOLLOW-INSERTIONS] SEQUENCE {
        
   MultipleTypeConstraints ::= [HOLLOW-INSERTIONS] SEQUENCE {
        

partial [ATTRIBUTE] BOOLEAN DEFAULT FALSE, typeConstraints [GROUP] TypeConstraints }

部分[ATTRIBUTE]布尔默认值为FALSE,类型约束[GROUP]类型约束}

   TypeConstraints ::= SEQUENCE SIZE (1..MAX) OF
       namedConstraint [GROUP] NamedConstraint
        
   TypeConstraints ::= SEQUENCE SIZE (1..MAX) OF
       namedConstraint [GROUP] NamedConstraint
        
   NamedConstraint ::= [SINGULAR-INSERTIONS] CHOICE {
       component      GenericNamedConstraint,
       element        GenericNamedConstraint,
       attribute      GenericNamedConstraint,
       group          GenericNamedConstraint,
       member         GenericNamedConstraint,
       item           GenericNamedConstraint,
       simpleContent  GenericNamedConstraint
   }
        
   NamedConstraint ::= [SINGULAR-INSERTIONS] CHOICE {
       component      GenericNamedConstraint,
       element        GenericNamedConstraint,
       attribute      GenericNamedConstraint,
       group          GenericNamedConstraint,
       member         GenericNamedConstraint,
       item           GenericNamedConstraint,
       simpleContent  GenericNamedConstraint
   }
        
   GenericNamedConstraint ::= [HOLLOW-INSERTIONS] SEQUENCE {
       name        [ATTRIBUTE] QName,
       use         [ATTRIBUTE] PresenceConstraint OPTIONAL,
       constraint  [GROUP] Constraint OPTIONAL
   }
        
   GenericNamedConstraint ::= [HOLLOW-INSERTIONS] SEQUENCE {
       name        [ATTRIBUTE] QName,
       use         [ATTRIBUTE] PresenceConstraint OPTIONAL,
       constraint  [GROUP] Constraint OPTIONAL
   }
        
   PresenceConstraint ::= ENUMERATED { present, absent, optional }
        
   PresenceConstraint ::= ENUMERATED { present, absent, optional }
        
   ObjectClass ::= [SINGULAR-INSERTIONS] CHOICE {
       classRef  [NAME AS "class"] [ATTRIBUTE] QName,
       class     ElementFormObjectClass
   }
        
   ObjectClass ::= [SINGULAR-INSERTIONS] CHOICE {
       classRef  [NAME AS "class"] [ATTRIBUTE] QName,
       class     ElementFormObjectClass
   }
        
   DefinedObjectClass ::= ObjectClass
       (WITH COMPONENTS { ...,
           class (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ...,
                   objectClassDefn ABSENT }) }) })
        
   DefinedObjectClass ::= ObjectClass
       (WITH COMPONENTS { ...,
           class (WITH COMPONENTS { ...,
               definition (WITH COMPONENTS { ...,
                   objectClassDefn ABSENT }) }) })
        
   ElementFormObjectClass ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           reference        [GROUP] Reference,
           expanded         ExpandedObjectClass,
           objectClassDefn  [GROUP] ObjectClassDefn
       }
   }
        
   ElementFormObjectClass ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           reference        [GROUP] Reference,
           expanded         ExpandedObjectClass,
           objectClassDefn  [GROUP] ObjectClassDefn
       }
   }
        
   ExpandedObjectClass ::= SEQUENCE {
       name         [ATTRIBUTE] NCName OPTIONAL,
       module       ReferencedModule OPTIONAL,
        
   ExpandedObjectClass ::= SEQUENCE {
       name         [ATTRIBUTE] NCName OPTIONAL,
       module       ReferencedModule OPTIONAL,
        

objectClass [GROUP] ObjectClass }

objectClass[组]objectClass}

   ObjectClassDefn ::= SEQUENCE SIZE (1..MAX) OF
       fieldSpec [GROUP] FieldSpec
        
   ObjectClassDefn ::= SEQUENCE SIZE (1..MAX) OF
       fieldSpec [GROUP] FieldSpec
        
   FieldSpec ::= [SINGULAR-INSERTIONS] CHOICE {
       typeField       TypeField,
       valueField      ValueField,
       valueSetField   ValueSetField,
       objectField     ObjectField,
       objectSetField  ObjectSetField,
       optional        OptionalField
   }
        
   FieldSpec ::= [SINGULAR-INSERTIONS] CHOICE {
       typeField       TypeField,
       valueField      ValueField,
       valueSetField   ValueSetField,
       objectField     ObjectField,
       objectSetField  ObjectSetField,
       optional        OptionalField
   }
        
   OptionalField ::= SEQUENCE {
       field    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           typeField       TypeField,
           valueField      ValueField,
           valueSetField   ValueSetField,
           objectField     ObjectField,
           objectSetField  ObjectSetField
       },
       default  Setting OPTIONAL
   } (WITH COMPONENTS { ...,
         field (WITH COMPONENTS { typeField PRESENT }),
         default (WITH COMPONENTS { ...,
             value ABSENT,
             valueSet ABSENT,
             object ABSENT,
             objectSet ABSENT }) } |
      WITH COMPONENTS { ...,
         field (WITH COMPONENTS { valueField PRESENT }),
         default (WITH COMPONENTS { ...,
             type ABSENT,
             valueSet ABSENT,
             object ABSENT,
             objectSet ABSENT }) } |
      WITH COMPONENTS { ...,
         field (WITH COMPONENTS { valueSetField PRESENT }),
         default (WITH COMPONENTS { ...,
             type ABSENT,
             value ABSENT,
             object ABSENT,
             objectSet ABSENT }) } |
      WITH COMPONENTS { ...,
         field (WITH COMPONENTS { objectField PRESENT }),
         default (WITH COMPONENTS { ...,
        
   OptionalField ::= SEQUENCE {
       field    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           typeField       TypeField,
           valueField      ValueField,
           valueSetField   ValueSetField,
           objectField     ObjectField,
           objectSetField  ObjectSetField
       },
       default  Setting OPTIONAL
   } (WITH COMPONENTS { ...,
         field (WITH COMPONENTS { typeField PRESENT }),
         default (WITH COMPONENTS { ...,
             value ABSENT,
             valueSet ABSENT,
             object ABSENT,
             objectSet ABSENT }) } |
      WITH COMPONENTS { ...,
         field (WITH COMPONENTS { valueField PRESENT }),
         default (WITH COMPONENTS { ...,
             type ABSENT,
             valueSet ABSENT,
             object ABSENT,
             objectSet ABSENT }) } |
      WITH COMPONENTS { ...,
         field (WITH COMPONENTS { valueSetField PRESENT }),
         default (WITH COMPONENTS { ...,
             type ABSENT,
             value ABSENT,
             object ABSENT,
             objectSet ABSENT }) } |
      WITH COMPONENTS { ...,
         field (WITH COMPONENTS { objectField PRESENT }),
         default (WITH COMPONENTS { ...,
        

type ABSENT, value ABSENT, valueSet ABSENT, objectSet ABSENT }) } | WITH COMPONENTS { ..., field (WITH COMPONENTS { objectSetField PRESENT }), default (WITH COMPONENTS { ..., type ABSENT, value ABSENT, valueSet ABSENT, object ABSENT }) })

类型不存在、值不存在、值集不存在、对象集不存在}|带组件{…、字段(带组件{objectSetField PRESENT})、默认值(带组件{…、类型不存在、值不存在、值集不存在、对象不存在})

   TypeField ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] TypeFieldReference
   }
        
   TypeField ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] TypeFieldReference
   }
        
   TypeFieldReference ::= TypeReference
        
   TypeFieldReference ::= TypeReference
        
   ValueField ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] ValueFieldReference,
       unique      [ATTRIBUTE] BOOLEAN OPTIONAL,
       governor    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           type           [GROUP] Type,
           typeFromField  FieldName
       }
   } ((WITH COMPONENTS { ..., unique ABSENT }) |
      (WITH COMPONENTS { ...,
          governor (WITH COMPONENTS { ..., typeFromField ABSENT }) }))
        
   ValueField ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] ValueFieldReference,
       unique      [ATTRIBUTE] BOOLEAN OPTIONAL,
       governor    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           type           [GROUP] Type,
           typeFromField  FieldName
       }
   } ((WITH COMPONENTS { ..., unique ABSENT }) |
      (WITH COMPONENTS { ...,
          governor (WITH COMPONENTS { ..., typeFromField ABSENT }) }))
        
   ValueFieldReference ::= ValueReference
        
   ValueFieldReference ::= ValueReference
        
   ValueSetField ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] ValueSetFieldReference,
       governor    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           type           [GROUP] Type,
           typeFromField  FieldName
       }
   }
        
   ValueSetField ::= SEQUENCE {
       annotation  Annotation OPTIONAL,
       name        [ATTRIBUTE] ValueSetFieldReference,
       governor    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           type           [GROUP] Type,
           typeFromField  FieldName
       }
   }
        
   ValueSetFieldReference ::= TypeReference
        
   ValueSetFieldReference ::= TypeReference
        
   ObjectField ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectFieldReference,
       objectClass  [GROUP] DefinedObjectClass
        
   ObjectField ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectFieldReference,
       objectClass  [GROUP] DefinedObjectClass
        

}

}

   ObjectFieldReference ::= ObjectReference
        
   ObjectFieldReference ::= ObjectReference
        
   ObjectSetField ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectSetFieldReference,
       objectClass  [GROUP] DefinedObjectClass
   }
        
   ObjectSetField ::= SEQUENCE {
       annotation   Annotation OPTIONAL,
       name         [ATTRIBUTE] ObjectSetFieldReference,
       objectClass  [GROUP] DefinedObjectClass
   }
        
   ObjectSetFieldReference ::= ObjectSetReference
        
   ObjectSetFieldReference ::= ObjectSetReference
        
   Object ::= [NO-INSERTIONS] CHOICE {
       objectRef  [NAME AS "object"] [ATTRIBUTE] QName,
       object     ElementFormObject
   }
        
   Object ::= [NO-INSERTIONS] CHOICE {
       objectRef  [NAME AS "object"] [ATTRIBUTE] QName,
       object     ElementFormObject
   }
        
   ElementFormObject ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           reference    [GROUP] Reference,
           expanded     ExpandedObject,
           fromObjects  InformationFromObjects,
           fields       [GROUP] ObjectDefn
       }
   }
        
   ElementFormObject ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [SINGULAR-INSERTIONS] CHOICE {
           reference    [GROUP] Reference,
           expanded     ExpandedObject,
           fromObjects  InformationFromObjects,
           fields       [GROUP] ObjectDefn
       }
   }
        
   ExpandedObject ::= SEQUENCE {
       name    [ATTRIBUTE] NCName OPTIONAL,
       module  ReferencedModule OPTIONAL,
       object  [GROUP] Object
   }
        
   ExpandedObject ::= SEQUENCE {
       name    [ATTRIBUTE] NCName OPTIONAL,
       module  ReferencedModule OPTIONAL,
       object  [GROUP] Object
   }
        
   ObjectDefn ::= SEQUENCE OF field FieldSetting
        
   ObjectDefn ::= SEQUENCE OF field FieldSetting
        
   FieldSetting ::= [HOLLOW-INSERTIONS] SEQUENCE {
       name     [ATTRIBUTE] NCName,
       setting  [GROUP] Setting
   }
        
   FieldSetting ::= [HOLLOW-INSERTIONS] SEQUENCE {
       name     [ATTRIBUTE] NCName,
       setting  [GROUP] Setting
   }
        
   Setting ::= CHOICE {
       type       [GROUP] Type,
       value      [GROUP] Value,
       valueSet   [GROUP] ValueSet,
       object     [GROUP] Object,
       objectSet  [GROUP] ObjectSet
   }
        
   Setting ::= CHOICE {
       type       [GROUP] Type,
       value      [GROUP] Value,
       valueSet   [GROUP] ValueSet,
       object     [GROUP] Object,
       objectSet  [GROUP] ObjectSet
   }
        
   ObjectSet ::= [NO-INSERTIONS] CHOICE {
       objectSetRef  [NAME AS "objectSet"] [ATTRIBUTE] QName,
       objectSet     ElementFormObjectSet
   }
        
   ObjectSet ::= [NO-INSERTIONS] CHOICE {
       objectSetRef  [NAME AS "objectSet"] [ATTRIBUTE] QName,
       objectSet     ElementFormObjectSet
   }
        
   ElementFormObjectSet ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           reference      [GROUP] Reference,
           expanded       ExpandedObjectSet,
           objectSetSpec  [GROUP] ObjectSetSpec,
           fromObjects    InformationFromObjects
       }
   }
        
   ElementFormObjectSet ::= [HOLLOW-INSERTIONS] SEQUENCE {
       annotation  Annotation OPTIONAL,
       definition  [GROUP] [NO-INSERTIONS] CHOICE {
           reference      [GROUP] Reference,
           expanded       ExpandedObjectSet,
           objectSetSpec  [GROUP] ObjectSetSpec,
           fromObjects    InformationFromObjects
       }
   }
        
   ExpandedObjectSet ::= SEQUENCE {
       name       [ATTRIBUTE] NCName OPTIONAL,
       module     ReferencedModule OPTIONAL,
       objectSet  [GROUP] ObjectSet
   }
        
   ExpandedObjectSet ::= SEQUENCE {
       name       [ATTRIBUTE] NCName OPTIONAL,
       module     ReferencedModule OPTIONAL,
       objectSet  [GROUP] ObjectSet
   }
        
   ObjectSetSpec ::= [HOLLOW-INSERTIONS] SEQUENCE {
       root       [GROUP] ObjectElementSetSpec OPTIONAL,
       extension  [HOLLOW-INSERTIONS] SEQUENCE {
           additions  [GROUP] ObjectElementSetSpec OPTIONAL
       } OPTIONAL
   } ((WITH COMPONENTS { ..., root PRESENT }) |
      (WITH COMPONENTS { ..., extension PRESENT }))
        
   ObjectSetSpec ::= [HOLLOW-INSERTIONS] SEQUENCE {
       root       [GROUP] ObjectElementSetSpec OPTIONAL,
       extension  [HOLLOW-INSERTIONS] SEQUENCE {
           additions  [GROUP] ObjectElementSetSpec OPTIONAL
       } OPTIONAL
   } ((WITH COMPONENTS { ..., root PRESENT }) |
      (WITH COMPONENTS { ..., extension PRESENT }))
        
   ObjectElementSetSpec ::= ElementSetSpec
   (WITH COMPONENTS { ...,
       literalValue    ABSENT,
       value           ABSENT,
       includes        ABSENT,
       range           ABSENT,
       size            ABSENT,
       typeConstraint  ABSENT,
       from            ABSENT,
       withComponent   ABSENT,
       withComponents  ABSENT,
       pattern         ABSENT,
       union           (WITH COMPONENT (INCLUDES ObjectElementSetSpec)),
       intersection    (WITH COMPONENT (INCLUDES ObjectElementSetSpec)),
       all             (WITH COMPONENTS { ...,
           elements        (INCLUDES ObjectElementSetSpec),
           except          (INCLUDES ObjectElementSetSpec) }) })
        
   ObjectElementSetSpec ::= ElementSetSpec
   (WITH COMPONENTS { ...,
       literalValue    ABSENT,
       value           ABSENT,
       includes        ABSENT,
       range           ABSENT,
       size            ABSENT,
       typeConstraint  ABSENT,
       from            ABSENT,
       withComponent   ABSENT,
       withComponents  ABSENT,
       pattern         ABSENT,
       union           (WITH COMPONENT (INCLUDES ObjectElementSetSpec)),
       intersection    (WITH COMPONENT (INCLUDES ObjectElementSetSpec)),
       all             (WITH COMPONENTS { ...,
           elements        (INCLUDES ObjectElementSetSpec),
           except          (INCLUDES ObjectElementSetSpec) }) })
        
   EncodingControlSections ::= SEQUENCE SIZE (1..MAX) OF
        
   EncodingControlSections ::= SEQUENCE SIZE (1..MAX) OF
        

section [GROUP] EncodingControlSection

节[组]编码控制节

   EncodingControlSection ::= [SINGULAR-INSERTIONS] CHOICE {
       gser  [NAME AS "GSER"] GSER-EncodingInstructionAssignmentList,
       xer   [NAME AS "XER"] XER-EncodingInstructionAssignmentList
       -- plus encoding control sections
       -- for other encoding rules in the future
   }
        
   EncodingControlSection ::= [SINGULAR-INSERTIONS] CHOICE {
       gser  [NAME AS "GSER"] GSER-EncodingInstructionAssignmentList,
       xer   [NAME AS "XER"] XER-EncodingInstructionAssignmentList
       -- plus encoding control sections
       -- for other encoding rules in the future
   }
        

ENCODING-CONTROL RXER

编码控制RXER

       SCHEMA-IDENTITY  "urn:oid:1.3.6.1.4.1.21472.1.0.1"
       TARGET-NAMESPACE "urn:ietf:params:xml:ns:asnx" PREFIX "asnx"
        
       SCHEMA-IDENTITY  "urn:oid:1.3.6.1.4.1.21472.1.0.1"
       TARGET-NAMESPACE "urn:ietf:params:xml:ns:asnx" PREFIX "asnx"
        

COMPONENT module ModuleDefinition

组件模块定义

COMPONENT literal [ATTRIBUTE] BOOLEAN

组件文字[属性]布尔值

END

终止

Appendix B. ASN.X for ASN.X
附录B.ASN.X的ASN.X

This appendix is non-normative.

本附录为非规范性附录。

   <?xml version="1.0"?>
   <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                name="AbstractSyntaxNotation-X"
                identifier="1.3.6.1.4.1.21472.1.0.1"
                schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.1"
                targetNamespace="urn:ietf:params:xml:ns:asnx"
                targetPrefix="asnx"
                extensibilityImplied="true">
        
   <?xml version="1.0"?>
   <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                name="AbstractSyntaxNotation-X"
                identifier="1.3.6.1.4.1.21472.1.0.1"
                schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.1"
                targetNamespace="urn:ietf:params:xml:ns:asnx"
                targetPrefix="asnx"
                extensibilityImplied="true">
        

<annotation> Copyright (C) The IETF Trust (2007). This version of this ASN.X module is part of RFC 4912; see the RFC itself for full legal notices.

<annotation>版权所有(C)IETF信托基金(2007)。此版本的ASN.X模块是RFC 4912的一部分;有关完整的法律通知,请参见RFC本身。

Regarding this ASN.X module or any portion of it, the author makes no guarantees and is not responsible for any damage resulting from its use. The author grants irrevocable permission to anyone to use, modify, and distribute it in any way that does not diminish the rights of anyone else to use, modify, and distribute it, provided that redistributed derivative works do not contain misleading author or version information. Derivative works need not be licensed under similar terms. </annotation>

对于本ASN.X模块或其任何部分,作者不作任何保证,也不对其使用造成的任何损坏负责。作者向任何人授予不可撤销的使用、修改和分发许可,允许其以任何方式使用、修改和分发,但不得削弱任何其他人使用、修改和分发的权利,前提是重新分发的衍生作品不包含误导性的作者或版本信息。衍生作品无需根据类似条款获得许可</注释>

    <import name="GSER-EncodingInstructionNotation"
            identifier="1.3.6.1.4.1.21472.1.0.2"
            schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.2"
            namespace="urn:ietf:params:xml:ns:asnx"/>
        
    <import name="GSER-EncodingInstructionNotation"
            identifier="1.3.6.1.4.1.21472.1.0.2"
            schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.2"
            namespace="urn:ietf:params:xml:ns:asnx"/>
        
    <import name="XER-EncodingInstructionNotation"
            identifier="1.3.6.1.4.1.21472.1.0.3"
            schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.3"
            namespace="urn:ietf:params:xml:ns:asnx"/>
        
    <import name="XER-EncodingInstructionNotation"
            identifier="1.3.6.1.4.1.21472.1.0.3"
            schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.3"
            namespace="urn:ietf:params:xml:ns:asnx"/>
        
    <namedType name="ModuleDefinition">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="format" versionIndicator="true">
         <type>
          <constrained type="asnx:UTF8String">
           <literalValue>1.0</literalValue>
           <extension/>
          </constrained>
         </type>
        </attribute>
        <default literalValue="1.0"/>
       </optional>
       <attribute name="name" type="asnx:ModuleReference"/>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="targetNamespace" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="targetPrefix" type="asnx:NCName"/>
       </optional>
       <optional>
        <attribute name="tagDefault" type="asnx:TagDefault"/>
        <default literalValue="automatic"/>
       </optional>
       <optional>
        <attribute name="extensibilityImplied" type="asnx:BOOLEAN"/>
        <default literalValue="false"/>
       </optional>
        
    <namedType name="ModuleDefinition">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="format" versionIndicator="true">
         <type>
          <constrained type="asnx:UTF8String">
           <literalValue>1.0</literalValue>
           <extension/>
          </constrained>
         </type>
        </attribute>
        <default literalValue="1.0"/>
       </optional>
       <attribute name="name" type="asnx:ModuleReference"/>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="targetNamespace" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="targetPrefix" type="asnx:NCName"/>
       </optional>
       <optional>
        <attribute name="tagDefault" type="asnx:TagDefault"/>
        <default literalValue="automatic"/>
       </optional>
       <optional>
        <attribute name="extensibilityImplied" type="asnx:BOOLEAN"/>
        <default literalValue="false"/>
       </optional>
        
       <optional>
        <element name="export">
         <annotation> export is not used in this version </annotation>
         <type>
          <sequence/>
         </type>
        </element>
       </optional>
       <optional>
        <group name="imports" type="asnx:ImportList"/>
       </optional>
       <optional>
        <group name="assignments" type="asnx:AssignmentList"/>
       </optional>
       <optional>
        <element name="encodingControls"
                 type="asnx:EncodingControlSections"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
       <optional>
        <element name="export">
         <annotation> export is not used in this version </annotation>
         <type>
          <sequence/>
         </type>
        </element>
       </optional>
       <optional>
        <group name="imports" type="asnx:ImportList"/>
       </optional>
       <optional>
        <group name="assignments" type="asnx:AssignmentList"/>
       </optional>
       <optional>
        <element name="encodingControls"
                 type="asnx:EncodingControlSections"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ModuleReference" type="asnx:TypeReference"/>
        
    <namedType name="ModuleReference" type="asnx:TypeReference"/>
        
    <namedType name="DefinitiveIdentifier"
               type="asnx:OBJECT-IDENTIFIER"/>
        
    <namedType name="DefinitiveIdentifier"
               type="asnx:OBJECT-IDENTIFIER"/>
        
    <namedType name="TagDefault">
     <type>
      <enumerated>
       <enumeration name="explicit"/>
       <enumeration name="implicit"/>
       <enumeration name="automatic"/>
      </enumerated>
     </type>
    </namedType>
        
    <namedType name="TagDefault">
     <type>
      <enumerated>
       <enumeration name="explicit"/>
       <enumeration name="implicit"/>
       <enumeration name="automatic"/>
      </enumerated>
     </type>
    </namedType>
        
    <namedType name="Annotation" type="asnx:Markup"/>
        
    <namedType name="Annotation" type="asnx:Markup"/>
        
    <namedType name="ImportList">
     <type>
      <sequenceOf minSize="1">
       <element name="import" type="asnx:Import"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ImportList">
     <type>
      <sequenceOf minSize="1">
       <element name="import" type="asnx:Import"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="Import">
        
    <namedType name="Import">
        
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:ModuleReference"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="namespace" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="schemaLocation" type="asnx:AnyURI"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:ModuleReference"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="namespace" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="schemaLocation" type="asnx:AnyURI"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="AssignmentList">
     <type>
      <sequenceOf minSize="1">
       <group name="assignment" type="asnx:Assignment"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="AssignmentList">
     <type>
      <sequenceOf minSize="1">
       <group name="assignment" type="asnx:Assignment"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="Assignment">
     <type>
      <choice insertions="none">
       <element name="namedType" type="asnx:TypeAssignment"/>
       <element name="namedValue" type="asnx:ValueAssignment"/>
       <element name="namedValueSet"
                type="asnx:ValueSetTypeAssignment"/>
       <element name="namedClass" type="asnx:ObjectClassAssignment"/>
       <element name="namedObject" type="asnx:ObjectAssignment"/>
       <element name="namedObjectSet" type="asnx:ObjectSetAssignment"/>
       <group name="component" type="asnx:TopLevelNamedType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Assignment">
     <type>
      <choice insertions="none">
       <element name="namedType" type="asnx:TypeAssignment"/>
       <element name="namedValue" type="asnx:ValueAssignment"/>
       <element name="namedValueSet"
                type="asnx:ValueSetTypeAssignment"/>
       <element name="namedClass" type="asnx:ObjectClassAssignment"/>
       <element name="namedObject" type="asnx:ObjectAssignment"/>
       <element name="namedObjectSet" type="asnx:ObjectSetAssignment"/>
       <group name="component" type="asnx:TopLevelNamedType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="TypeAssignment">
     <type>
      <sequence>
       <optional>
        
    <namedType name="TypeAssignment">
     <type>
      <sequence>
       <optional>
        
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeReference"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeReference"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TypeReference">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[A-Z]\w*(-\w+)*"/>
       <!-- \w is equivalent to [a-zA-Z0-9] -->
      </constrained>
     </type>
    </namedType>
        
    <namedType name="TypeReference">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[A-Z]\w*(-\w+)*"/>
       <!-- \w is equivalent to [a-zA-Z0-9] -->
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ValueAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ValueReference"/>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ValueAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ValueReference"/>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ValueReference" type="asnx:Identifier"/>
        
    <namedType name="ValueReference" type="asnx:Identifier"/>
        
    <namedType name="Identifier">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[a-z]\w(-\w+)*"/>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="Identifier">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[a-z]\w(-\w+)*"/>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ValueSetTypeAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeReference"/>
       <group name="type" type="asnx:Type"/>
        
    <namedType name="ValueSetTypeAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeReference"/>
       <group name="type" type="asnx:Type"/>
        
       <group name="valueSet" type="asnx:ValueSet"/>
      </sequence>
     </type>
    </namedType>
        
       <group name="valueSet" type="asnx:ValueSet"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectClassAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectClassReference"/>
       <group name="objectClass" type="asnx:ObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectClassAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectClassReference"/>
       <group name="objectClass" type="asnx:ObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectClassReference">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[A-Z][A-Z0-9]*(-[A-Z0-9]+)*"/>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ObjectClassReference">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[A-Z][A-Z0-9]*(-[A-Z0-9]+)*"/>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ObjectAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
       <group name="object" type="asnx:Object"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
       <group name="object" type="asnx:Object"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectReference" type="asnx:ValueReference"/>
        
    <namedType name="ObjectReference" type="asnx:ValueReference"/>
        
    <namedType name="ObjectSetAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectSetReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
        
    <namedType name="ObjectSetAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectSetReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
        
       <group name="objectSet" type="asnx:ObjectSet"/>
      </sequence>
     </type>
    </namedType>
        
       <group name="objectSet" type="asnx:ObjectSet"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectSetReference" type="asnx:TypeReference"/>
        
    <namedType name="ObjectSetReference" type="asnx:TypeReference"/>
        
    <namedType name="TopLevelNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="component">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="element">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="attribute">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="group" use="absent"/>
        <element name="member" use="absent"/>
        <element name="item" use="absent"/>
        <element name="simpleContent" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="TopLevelNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="component">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="element">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="attribute">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="group" use="absent"/>
        <element name="member" use="absent"/>
        <element name="item" use="absent"/>
        <element name="simpleContent" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="NamedType">
        
    <namedType name="NamedType">
        
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:Element"/>
       <element name="element" type="asnx:Element"/>
       <element name="attribute" type="asnx:Attribute"/>
       <element name="group" type="asnx:InvisibleNamedType"/>
       <element name="member" type="asnx:InvisibleNamedType"/>
       <element name="item" type="asnx:InvisibleNamedType"/>
       <element name="simpleContent" type="asnx:InvisibleNamedType"/>
      </choice>
     </type>
    </namedType>
        
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:Element"/>
       <element name="element" type="asnx:Element"/>
       <element name="attribute" type="asnx:Attribute"/>
       <element name="group" type="asnx:InvisibleNamedType"/>
       <element name="member" type="asnx:InvisibleNamedType"/>
       <element name="item" type="asnx:InvisibleNamedType"/>
       <element name="simpleContent" type="asnx:InvisibleNamedType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Attribute">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="local">
           <withComponents partial="true">
            <attribute name="typeAsVersion" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="Attribute">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="local">
           <withComponents partial="true">
            <attribute name="typeAsVersion" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="Element">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="local">
           <withComponents partial="true">
            <attribute name="versionIndicator" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="Element">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="local">
           <withComponents partial="true">
            <attribute name="versionIndicator" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="InvisibleNamedType">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="reference" use="absent"/>
          <group name="local">
           <withComponents partial="true">
            <attribute name="typeAsVersion" use="absent"/>
            <attribute name="versionIndicator" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="InvisibleNamedType">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="reference" use="absent"/>
          <group name="local">
           <withComponents partial="true">
            <attribute name="typeAsVersion" use="absent"/>
            <attribute name="versionIndicator" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="GenericNamedType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:IdentifierOrEmpty"/>
       </optional>
       <group name="definition">
        <type>
         <choice>
          <group name="reference" type="asnx:DefinedComponent"/>
          <group name="local" type="asnx:LocalComponent"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="GenericNamedType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:IdentifierOrEmpty"/>
       </optional>
       <group name="definition">
        <type>
         <choice>
          <group name="reference" type="asnx:DefinedComponent"/>
          <group name="local" type="asnx:LocalComponent"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="IdentifierOrEmpty">
     <type>
      <constrained type="asnx:UTF8String">
       <union>
        <includes type="asnx:Identifier"/>
        <literalValue></literalValue>
       </union>
        
    <namedType name="IdentifierOrEmpty">
     <type>
      <constrained type="asnx:UTF8String">
       <union>
        <includes type="asnx:Identifier"/>
        <literalValue></literalValue>
       </union>
        
      </constrained>
     </type>
    </namedType>
        
      </constrained>
     </type>
    </namedType>
        
    <namedType name="DefinedComponent">
     <type>
      <constrained>
       <type>
        <sequence insertions="hollow">
         <group name="name">
          <type>
           <choice insertions="none">
            <attribute name="ref" type="asnx:QName"/>
            <attribute name="elementType" type="asnx:Name"/>
           </choice>
          </type>
         </group>
         <optional>
          <attribute name="namespace" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="context" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="embedded" type="asnx:BOOLEAN"/>
         </optional>
         <optional>
          <group name="prefixes" type="asnx:EncodingPrefixes"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="ref" use="present"/>
          </withComponents>
         </group>
         <attribute name="namespace" use="absent"/>
        </withComponents>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="elementType" use="present"/>
          </withComponents>
         </group>
         <attribute name="embedded" use="absent"/>
        </withComponents>
        
    <namedType name="DefinedComponent">
     <type>
      <constrained>
       <type>
        <sequence insertions="hollow">
         <group name="name">
          <type>
           <choice insertions="none">
            <attribute name="ref" type="asnx:QName"/>
            <attribute name="elementType" type="asnx:Name"/>
           </choice>
          </type>
         </group>
         <optional>
          <attribute name="namespace" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="context" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="embedded" type="asnx:BOOLEAN"/>
         </optional>
         <optional>
          <group name="prefixes" type="asnx:EncodingPrefixes"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="ref" use="present"/>
          </withComponents>
         </group>
         <attribute name="namespace" use="absent"/>
        </withComponents>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="elementType" use="present"/>
          </withComponents>
         </group>
         <attribute name="embedded" use="absent"/>
        </withComponents>
        
       </union>
      </constrained>
     </type>
    </namedType>
        
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="LocalComponent">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="typeAsVersion" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <attribute name="versionIndicator" type="asnx:BOOLEAN"/>
       </optional>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="LocalComponent">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="typeAsVersion" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <attribute name="versionIndicator" type="asnx:BOOLEAN"/>
       </optional>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Type">
     <type>
      <choice insertions="none">
       <attribute name="type" identifier="typeRef" type="asnx:QName"/>
       <element name="type" type="asnx:ElementFormType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Type">
     <type>
      <choice insertions="none">
       <attribute name="type" identifier="typeRef" type="asnx:QName"/>
       <element name="type" type="asnx:ElementFormType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementFormType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="explicit" type="asnx:BOOLEAN"/>
       </optional>
       <group name="definition">
        <type>
         <choice>
          <group name="reference" type="asnx:DefinedType"/>
          <element name="expanded" type="asnx:ExpandedType"/>
          <attribute name="ancestor">
           <type>
            <constrained type="asnx:INTEGER">
             <range>
              <minInclusive literalValue="1"/>
        
    <namedType name="ElementFormType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="explicit" type="asnx:BOOLEAN"/>
       </optional>
       <group name="definition">
        <type>
         <choice>
          <group name="reference" type="asnx:DefinedType"/>
          <element name="expanded" type="asnx:ExpandedType"/>
          <attribute name="ancestor">
           <type>
            <constrained type="asnx:INTEGER">
             <range>
              <minInclusive literalValue="1"/>
        
             </range>
            </constrained>
           </type>
          </attribute>
          <element name="namedBitList" type="asnx:NamedBitList"/>
          <element name="namedNumberList" type="asnx:NamedNumberList"/>
          <element name="enumerated" type="asnx:EnumeratedType"/>
          <element name="tagged" type="asnx:TaggedType"/>
          <element name="prefixed" type="asnx:EncodingPrefixedType"/>
          <element name="selection" type="asnx:SelectionType"/>
          <element name="instanceOf" type="asnx:InstanceOfType"/>
          <element name="fromClass" type="asnx:ObjectClassFieldType"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <element name="sequence" type="asnx:SequenceType"/>
          <element name="set" type="asnx:SetType"/>
          <element name="choice" type="asnx:ChoiceType"/>
          <element name="union" type="asnx:UnionType"/>
          <element name="sequenceOf" type="asnx:SequenceOfType"/>
          <element name="setOf" type="asnx:SetOfType"/>
          <element name="list" type="asnx:ListType"/>
          <element name="constrained" type="asnx:ConstrainedType"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
             </range>
            </constrained>
           </type>
          </attribute>
          <element name="namedBitList" type="asnx:NamedBitList"/>
          <element name="namedNumberList" type="asnx:NamedNumberList"/>
          <element name="enumerated" type="asnx:EnumeratedType"/>
          <element name="tagged" type="asnx:TaggedType"/>
          <element name="prefixed" type="asnx:EncodingPrefixedType"/>
          <element name="selection" type="asnx:SelectionType"/>
          <element name="instanceOf" type="asnx:InstanceOfType"/>
          <element name="fromClass" type="asnx:ObjectClassFieldType"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <element name="sequence" type="asnx:SequenceType"/>
          <element name="set" type="asnx:SetType"/>
          <element name="choice" type="asnx:ChoiceType"/>
          <element name="union" type="asnx:UnionType"/>
          <element name="sequenceOf" type="asnx:SequenceOfType"/>
          <element name="setOf" type="asnx:SetOfType"/>
          <element name="list" type="asnx:ListType"/>
          <element name="constrained" type="asnx:ConstrainedType"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="DefinedType">
     <type>
      <constrained>
       <type>
        <sequence>
         <group name="name">
          <type>
           <choice insertions="none">
            <attribute name="ref" type="asnx:QName"/>
            <attribute name="elementType" type="asnx:Name"/>
           </choice>
          </type>
         </group>
         <optional>
          <attribute name="context" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="embedded" type="asnx:BOOLEAN"/>
         </optional>
        
    <namedType name="DefinedType">
     <type>
      <constrained>
       <type>
        <sequence>
         <group name="name">
          <type>
           <choice insertions="none">
            <attribute name="ref" type="asnx:QName"/>
            <attribute name="elementType" type="asnx:Name"/>
           </choice>
          </type>
         </group>
         <optional>
          <attribute name="context" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="embedded" type="asnx:BOOLEAN"/>
         </optional>
        
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="ref" use="present"/>
          </withComponents>
         </group>
        </withComponents>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="elementType" use="present"/>
          </withComponents>
         </group>
         <attribute name="embedded" use="absent"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="ref" use="present"/>
          </withComponents>
         </group>
        </withComponents>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="elementType" use="present"/>
          </withComponents>
         </group>
         <attribute name="embedded" use="absent"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ExpandedType">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedType">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ReferencedModule">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:ModuleReference"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
        
    <namedType name="ReferencedModule">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:ModuleReference"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
        
       </optional>
      </sequence>
     </type>
    </namedType>
        
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="NamedBitList">
     <type>
      <sequenceOf minSize="1">
       <element name="namedBit" type="asnx:NamedBit"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="NamedBitList">
     <type>
      <sequenceOf minSize="1">
       <element name="namedBit" type="asnx:NamedBit"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="NamedBit">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
       <attribute name="bit">
        <type>
         <constrained type="asnx:INTEGER">
          <range>
           <minInclusive literalValue="0"/>
          </range>
         </constrained>
        </type>
       </attribute>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="NamedBit">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
       <attribute name="bit">
        <type>
         <constrained type="asnx:INTEGER">
          <range>
           <minInclusive literalValue="0"/>
          </range>
         </constrained>
        </type>
       </attribute>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="NamedNumberList">
     <type>
      <sequenceOf minSize="1">
       <element name="namedNumber" type="asnx:NamedNumber"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="NamedNumberList">
     <type>
      <sequenceOf minSize="1">
       <element name="namedNumber" type="asnx:NamedNumber"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="NamedNumber">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
        
    <namedType name="NamedNumber">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
        
       <attribute name="number" type="asnx:INTEGER"/>
      </sequence>
     </type>
    </namedType>
        
       <attribute name="number" type="asnx:INTEGER"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EnumeratedType">
     <type>
      <sequence>
       <group name="root" type="asnx:Enumeration"/>
       <optional>
        <element name="extension">
         <type>
          <sequence>
           <optional>
            <element name="exception" type="asnx:ExceptionSpec"/>
           </optional>
           <optional>
            <group name="additions" type="asnx:Enumeration"/>
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EnumeratedType">
     <type>
      <sequence>
       <group name="root" type="asnx:Enumeration"/>
       <optional>
        <element name="extension">
         <type>
          <sequence>
           <optional>
            <element name="exception" type="asnx:ExceptionSpec"/>
           </optional>
           <optional>
            <group name="additions" type="asnx:Enumeration"/>
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Enumeration">
     <type>
      <sequenceOf minSize="1">
       <element name="enumeration" type="asnx:EnumerationItem"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="Enumeration">
     <type>
      <sequenceOf minSize="1">
       <element name="enumeration" type="asnx:EnumerationItem"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="EnumerationItem">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
       <optional>
        <attribute name="number" type="asnx:INTEGER"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EnumerationItem">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
       <optional>
        <attribute name="number" type="asnx:INTEGER"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Tag">
     <type>
      <sequence>
       <optional>
        <attribute name="tagClass" type="asnx:TagClass"/>
       </optional>
       <attribute name="number">
        <type>
         <constrained type="asnx:INTEGER">
          <range>
           <minInclusive literalValue="0"/>
          </range>
         </constrained>
        </type>
       </attribute>
       <optional>
        <attribute name="tagging" type="asnx:Tagging"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Tag">
     <type>
      <sequence>
       <optional>
        <attribute name="tagClass" type="asnx:TagClass"/>
       </optional>
       <attribute name="number">
        <type>
         <constrained type="asnx:INTEGER">
          <range>
           <minInclusive literalValue="0"/>
          </range>
         </constrained>
        </type>
       </attribute>
       <optional>
        <attribute name="tagging" type="asnx:Tagging"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TaggedType">
     <type>
      <sequence>
       <componentsOf type="asnx:Tag"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TaggedType">
     <type>
      <sequence>
       <componentsOf type="asnx:Tag"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TagClass">
     <type>
      <enumerated>
       <enumeration name="universal"/>
       <enumeration name="application"/>
       <enumeration name="private"/>
      </enumerated>
     </type>
    </namedType>
        
    <namedType name="TagClass">
     <type>
      <enumerated>
       <enumeration name="universal"/>
       <enumeration name="application"/>
       <enumeration name="private"/>
      </enumerated>
     </type>
    </namedType>
        
    <namedType name="Tagging">
     <type>
      <enumerated>
       <enumeration name="explicit"/>
       <enumeration name="implicit"/>
      </enumerated>
     </type>
        
    <namedType name="Tagging">
     <type>
      <enumerated>
       <enumeration name="explicit"/>
       <enumeration name="implicit"/>
      </enumerated>
     </type>
        
    </namedType>
        
    </namedType>
        
    <namedType name="EncodingPrefixedType">
     <type>
      <sequence insertions="hollow">
       <group name="prefixes" type="asnx:EncodingPrefixes"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EncodingPrefixedType">
     <type>
      <sequence insertions="hollow">
       <group name="prefixes" type="asnx:EncodingPrefixes"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EncodingPrefixes">
     <type>
      <sequenceOf minSize="1">
       <group name="prefix" type="asnx:EncodingPrefix"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="EncodingPrefixes">
     <type>
      <sequenceOf minSize="1">
       <group name="prefix" type="asnx:EncodingPrefix"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="EncodingPrefix">
     <type>
      <choice insertions="singular">
       <element name="TAG" identifier="tag" type="asnx:Tag"/>
       <element name="GSER" identifier="gser"
                type="asnx:GSER-EncodingInstruction"/>
       <element name="XER" identifier="xer"
                type="asnx:XER-EncodingInstruction"/>
       <!-- plus encoding instructions
            for other encoding rules in the future -->
      </choice>
     </type>
    </namedType>
        
    <namedType name="EncodingPrefix">
     <type>
      <choice insertions="singular">
       <element name="TAG" identifier="tag" type="asnx:Tag"/>
       <element name="GSER" identifier="gser"
                type="asnx:GSER-EncodingInstruction"/>
       <element name="XER" identifier="xer"
                type="asnx:XER-EncodingInstruction"/>
       <!-- plus encoding instructions
            for other encoding rules in the future -->
      </choice>
     </type>
    </namedType>
        
    <namedType name="SelectionType">
     <type>
      <sequence>
       <group name="alternative">
        <type>
         <choice insertions="singular">
          <attribute name="component" type="asnx:QName"/>
          <attribute name="element" type="asnx:QName"/>
          <attribute name="attribute" type="asnx:QName"/>
          <attribute name="group" type="asnx:QName"/>
          <attribute name="member" type="asnx:QName"/>
         </choice>
        </type>
       </group>
       <group name="type" type="asnx:Type"/>
        
    <namedType name="SelectionType">
     <type>
      <sequence>
       <group name="alternative">
        <type>
         <choice insertions="singular">
          <attribute name="component" type="asnx:QName"/>
          <attribute name="element" type="asnx:QName"/>
          <attribute name="attribute" type="asnx:QName"/>
          <attribute name="group" type="asnx:QName"/>
          <attribute name="member" type="asnx:QName"/>
         </choice>
        </type>
       </group>
       <group name="type" type="asnx:Type"/>
        
      </sequence>
     </type>
    </namedType>
        
      </sequence>
     </type>
    </namedType>
        
    <namedType name="InstanceOfType" type="asnx:DefinedObjectClass"/>
        
    <namedType name="InstanceOfType" type="asnx:DefinedObjectClass"/>
        
    <namedType name="ObjectClassFieldType">
     <type>
      <sequence>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
       <group name="fieldName" type="asnx:FieldName"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectClassFieldType">
     <type>
      <sequence>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
       <group name="fieldName" type="asnx:FieldName"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="FieldName">
     <type>
      <choice insertions="singular">
       <attribute name="fieldName" identifier="fieldNameAtt"
                  type="asnx:PrimitiveFieldNames"/>
       <element name="fieldName" type="asnx:PrimitiveFieldNames"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="FieldName">
     <type>
      <choice insertions="singular">
       <attribute name="fieldName" identifier="fieldNameAtt"
                  type="asnx:PrimitiveFieldNames"/>
       <element name="fieldName" type="asnx:PrimitiveFieldNames"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="PrimitiveFieldNames" type="asnx:UTF8String"/>
        
    <namedType name="PrimitiveFieldNames" type="asnx:UTF8String"/>
        
    <namedType name="InformationFromObjects">
     <type>
      <sequence insertions="hollow">
       <group name="referencedObjects" type="asnx:ReferencedObjects"/>
       <group name="fieldName" type="asnx:FieldName"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="InformationFromObjects">
     <type>
      <sequence insertions="hollow">
       <group name="referencedObjects" type="asnx:ReferencedObjects"/>
       <group name="fieldName" type="asnx:FieldName"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ReferencedObjects">
     <type>
      <choice insertions="singular">
       <group name="object" type="asnx:Object"/>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ReferencedObjects">
     <type>
      <choice insertions="singular">
       <group name="object" type="asnx:Object"/>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Insertions">
     <type>
      <enumerated>
        
    <namedType name="Insertions">
     <type>
      <enumerated>
        
       <enumeration name="none"/>
       <enumeration name="hollow"/>
       <enumeration name="singular"/>
       <enumeration name="uniform"/>
       <enumeration name="multiform"/>
      </enumerated>
     </type>
    </namedType>
        
       <enumeration name="none"/>
       <enumeration name="hollow"/>
       <enumeration name="singular"/>
       <enumeration name="uniform"/>
       <enumeration name="multiform"/>
      </enumerated>
     </type>
    </namedType>
        
    <namedType name="SequenceType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="insertions" type="asnx:Insertions"/>
       </optional>
       <optional>
        <group name="root" type="asnx:ComponentTypeList"/>
       </optional>
       <optional>
        <group name="extensionAndFinal">
         <type>
          <sequence insertions="hollow">
           <element name="extension">
            <type>
             <sequence insertions="hollow">
              <optional>
               <element name="exception" type="asnx:ExceptionSpec"/>
              </optional>
              <optional>
               <group name="additions" type="asnx:ExtensionAdditions"/>
              </optional>
             </sequence>
            </type>
           </element>
           <optional>
            <group name="root" type="asnx:ComponentTypeList"/>
           </optional>
          </sequence>
         </type>
        </group>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="SequenceType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="insertions" type="asnx:Insertions"/>
       </optional>
       <optional>
        <group name="root" type="asnx:ComponentTypeList"/>
       </optional>
       <optional>
        <group name="extensionAndFinal">
         <type>
          <sequence insertions="hollow">
           <element name="extension">
            <type>
             <sequence insertions="hollow">
              <optional>
               <element name="exception" type="asnx:ExceptionSpec"/>
              </optional>
              <optional>
               <group name="additions" type="asnx:ExtensionAdditions"/>
              </optional>
             </sequence>
            </type>
           </element>
           <optional>
            <group name="root" type="asnx:ComponentTypeList"/>
           </optional>
          </sequence>
         </type>
        </group>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ComponentTypeList">
     <type>
      <sequenceOf minSize="1">
        
    <namedType name="ComponentTypeList">
     <type>
      <sequenceOf minSize="1">
        
       <group name="componentType" type="asnx:ComponentType"/>
      </sequenceOf>
     </type>
    </namedType>
        
       <group name="componentType" type="asnx:ComponentType"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ComponentType">
     <type>
      <choice insertions="none">
       <group name="component" type="asnx:SequenceNamedType"/>
       <element name="optional">
        <type>
         <sequence>
          <group name="component" type="asnx:SequenceNamedType"/>
          <optional>
           <element name="default" type="asnx:Value"/>
          </optional>
         </sequence>
        </type>
       </element>
       <element name="componentsOf" type="asnx:Type"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ComponentType">
     <type>
      <choice insertions="none">
       <group name="component" type="asnx:SequenceNamedType"/>
       <element name="optional">
        <type>
         <sequence>
          <group name="component" type="asnx:SequenceNamedType"/>
          <optional>
           <element name="default" type="asnx:Value"/>
          </optional>
         </sequence>
        </type>
       </element>
       <element name="componentsOf" type="asnx:Type"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="SequenceNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="member" use="absent"/>
        <element name="item" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="SequenceNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="member" use="absent"/>
        <element name="item" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditions">
     <type>
      <sequenceOf minSize="1">
       <group name="addition" type="asnx:ExtensionAddition"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditions">
     <type>
      <sequenceOf minSize="1">
       <group name="addition" type="asnx:ExtensionAddition"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ExtensionAddition">
     <type>
      <choice insertions="none">
       <element name="extensionGroup"
                type="asnx:ExtensionAdditionGroup"/>
        
    <namedType name="ExtensionAddition">
     <type>
      <choice insertions="none">
       <element name="extensionGroup"
                type="asnx:ExtensionAdditionGroup"/>
        
       <group name="componentType" type="asnx:ComponentType"/>
      </choice>
     </type>
    </namedType>
        
       <group name="componentType" type="asnx:ComponentType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionGroup">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="version" type="asnx:VersionNumber"/>
       </optional>
       <group name="componentTypes" type="asnx:ComponentTypeList"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionGroup">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="version" type="asnx:VersionNumber"/>
       </optional>
       <group name="componentTypes" type="asnx:ComponentTypeList"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="VersionNumber">
     <type>
      <constrained type="asnx:INTEGER">
       <range>
        <minInclusive literalValue="2"/>
       </range>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="VersionNumber">
     <type>
      <constrained type="asnx:INTEGER">
       <range>
        <minInclusive literalValue="2"/>
       </range>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="SetType" type="asnx:SequenceType"/>
        
    <namedType name="SetType" type="asnx:SequenceType"/>
        
    <namedType name="ChoiceOrUnionType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="insertions" type="asnx:Insertions"/>
       </optional>
       <optional>
        <attribute name="precedence" type="asnx:PrecedenceList"/>
       </optional>
       <group name="root" type="asnx:AlternativeTypeList"/>
       <optional>
        <element name="extension">
         <type>
          <sequence insertions="hollow">
           <optional>
            <element name="exception" type="asnx:ExceptionSpec"/>
           </optional>
           <optional>
            <group name="additions"
                   type="asnx:ExtensionAdditionAlternatives"/>
        
    <namedType name="ChoiceOrUnionType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="insertions" type="asnx:Insertions"/>
       </optional>
       <optional>
        <attribute name="precedence" type="asnx:PrecedenceList"/>
       </optional>
       <group name="root" type="asnx:AlternativeTypeList"/>
       <optional>
        <element name="extension">
         <type>
          <sequence insertions="hollow">
           <optional>
            <element name="exception" type="asnx:ExceptionSpec"/>
           </optional>
           <optional>
            <group name="additions"
                   type="asnx:ExtensionAdditionAlternatives"/>
        
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>
        
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="PrecedenceList">
     <type>
      <list minSize="1">
       <item name="member" type="asnx:QName"/>
      </list>
     </type>
    </namedType>
        
    <namedType name="PrecedenceList">
     <type>
      <list minSize="1">
       <item name="member" type="asnx:QName"/>
      </list>
     </type>
    </namedType>
        
    <namedType name="AlternativeTypeList">
     <type>
      <sequenceOf minSize="1">
       <group name="component" type="asnx:ChoiceOrUnionNamedType"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="AlternativeTypeList">
     <type>
      <sequenceOf minSize="1">
       <group name="component" type="asnx:ChoiceOrUnionNamedType"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ChoiceOrUnionNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="item" use="absent"/>
        <element name="simpleContent" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ChoiceOrUnionNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="item" use="absent"/>
        <element name="simpleContent" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionAlternatives">
     <type>
      <sequenceOf minSize="1">
       <group name="addition" type="asnx:ExtensionAdditionAlternative"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionAlternatives">
     <type>
      <sequenceOf minSize="1">
       <group name="addition" type="asnx:ExtensionAdditionAlternative"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionAlternative">
     <type>
      <choice insertions="none">
       <element name="extensionGroup"
        
    <namedType name="ExtensionAdditionAlternative">
     <type>
      <choice insertions="none">
       <element name="extensionGroup"
        
                type="asnx:ExtensionAdditionAlternativesGroup"/>
       <group name="component" type="asnx:ChoiceOrUnionNamedType"/>
      </choice>
     </type>
    </namedType>
        
                type="asnx:ExtensionAdditionAlternativesGroup"/>
       <group name="component" type="asnx:ChoiceOrUnionNamedType"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionAlternativesGroup">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="version" type="asnx:VersionNumber"/>
       </optional>
       <group name="alternatives" type="asnx:AlternativeTypeList"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExtensionAdditionAlternativesGroup">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="version" type="asnx:VersionNumber"/>
       </optional>
       <group name="alternatives" type="asnx:AlternativeTypeList"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ChoiceType">
     <type>
      <constrained type="asnx:ChoiceOrUnionType">
       <withComponents partial="true">
        <attribute name="precedence" use="absent"/>
        <group name="root">
         <withComponent>
          <includes type="asnx:ChoiceNamedType"/>
         </withComponent>
        </group>
        <element name="extension">
         <withComponents partial="true">
          <group name="additions">
           <withComponent>
            <withComponents partial="true">
             <element name="extensionGroup">
              <withComponents partial="true">
               <group name="alternatives">
                <withComponent>
                 <includes type="asnx:ChoiceNamedType"/>
                </withComponent>
               </group>
              </withComponents>
             </element>
             <group name="component">
              <includes type="asnx:ChoiceNamedType"/>
             </group>
            </withComponents>
           </withComponent>
          </group>
         </withComponents>
        
    <namedType name="ChoiceType">
     <type>
      <constrained type="asnx:ChoiceOrUnionType">
       <withComponents partial="true">
        <attribute name="precedence" use="absent"/>
        <group name="root">
         <withComponent>
          <includes type="asnx:ChoiceNamedType"/>
         </withComponent>
        </group>
        <element name="extension">
         <withComponents partial="true">
          <group name="additions">
           <withComponent>
            <withComponents partial="true">
             <element name="extensionGroup">
              <withComponents partial="true">
               <group name="alternatives">
                <withComponent>
                 <includes type="asnx:ChoiceNamedType"/>
                </withComponent>
               </group>
              </withComponents>
             </element>
             <group name="component">
              <includes type="asnx:ChoiceNamedType"/>
             </group>
            </withComponents>
           </withComponent>
          </group>
         </withComponents>
        
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ChoiceNamedType">
     <type>
      <constrained type="asnx:ChoiceOrUnionNamedType">
       <withComponents partial="true">
        <element name="member" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ChoiceNamedType">
     <type>
      <constrained type="asnx:ChoiceOrUnionNamedType">
       <withComponents partial="true">
        <element name="member" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="UnionType">
     <type>
      <constrained type="asnx:ChoiceOrUnionType">
       <withComponents partial="true">
        <attribute name="insertions" use="absent"/>
        <group name="root">
         <withComponent>
          <includes type="asnx:UnionNamedType"/>
         </withComponent>
        </group>
        <element name="extension">
         <withComponents partial="true">
          <group name="additions">
           <withComponent>
            <withComponents partial="true">
             <element name="extensionGroup">
              <withComponents partial="true">
               <group name="alternatives">
                <withComponent>
                 <includes type="asnx:UnionNamedType"/>
                </withComponent>
               </group>
              </withComponents>
             </element>
             <group name="component">
              <includes type="asnx:UnionNamedType"/>
             </group>
            </withComponents>
           </withComponent>
          </group>
         </withComponents>
        </element>
        
    <namedType name="UnionType">
     <type>
      <constrained type="asnx:ChoiceOrUnionType">
       <withComponents partial="true">
        <attribute name="insertions" use="absent"/>
        <group name="root">
         <withComponent>
          <includes type="asnx:UnionNamedType"/>
         </withComponent>
        </group>
        <element name="extension">
         <withComponents partial="true">
          <group name="additions">
           <withComponent>
            <withComponents partial="true">
             <element name="extensionGroup">
              <withComponents partial="true">
               <group name="alternatives">
                <withComponent>
                 <includes type="asnx:UnionNamedType"/>
                </withComponent>
               </group>
              </withComponents>
             </element>
             <group name="component">
              <includes type="asnx:UnionNamedType"/>
             </group>
            </withComponents>
           </withComponent>
          </group>
         </withComponents>
        </element>
        
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="UnionNamedType">
     <type>
      <constrained type="asnx:ChoiceOrUnionNamedType">
       <withComponents partial="true">
        <element name="component" use="absent"/>
        <element name="element" use="absent"/>
        <element name="attribute" use="absent"/>
        <element name="group" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="UnionNamedType">
     <type>
      <constrained type="asnx:ChoiceOrUnionNamedType">
       <withComponents partial="true">
        <element name="component" use="absent"/>
        <element name="element" use="absent"/>
        <element name="attribute" use="absent"/>
        <element name="group" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="SequenceOfOrListType">
     <type>
      <sequence>
       <optional>
        <attribute name="minSize">
         <type>
          <constrained type="asnx:INTEGER">
           <range>
            <minInclusive literalValue="0"/>
           </range>
          </constrained>
         </type>
        </attribute>
       </optional>
       <optional>
        <attribute name="maxSize">
         <type>
          <constrained type="asnx:INTEGER">
           <range>
            <minInclusive literalValue="0"/>
           </range>
          </constrained>
         </type>
        </attribute>
       </optional>
       <group name="component">
        <type>
         <constrained type="asnx:NamedType">
          <withComponents partial="true">
           <element name="attribute" use="absent"/>
        
    <namedType name="SequenceOfOrListType">
     <type>
      <sequence>
       <optional>
        <attribute name="minSize">
         <type>
          <constrained type="asnx:INTEGER">
           <range>
            <minInclusive literalValue="0"/>
           </range>
          </constrained>
         </type>
        </attribute>
       </optional>
       <optional>
        <attribute name="maxSize">
         <type>
          <constrained type="asnx:INTEGER">
           <range>
            <minInclusive literalValue="0"/>
           </range>
          </constrained>
         </type>
        </attribute>
       </optional>
       <group name="component">
        <type>
         <constrained type="asnx:NamedType">
          <withComponents partial="true">
           <element name="attribute" use="absent"/>
        
           <element name="member" use="absent"/>
           <element name="simpleContent" use="absent"/>
          </withComponents>
         </constrained>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
           <element name="member" use="absent"/>
           <element name="simpleContent" use="absent"/>
          </withComponents>
         </constrained>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="SequenceOfType">
     <type>
      <constrained type="asnx:SequenceOfOrListType">
       <withComponents partial="true">
        <group name="component">
         <withComponents partial="true">
          <element name="item" use="absent"/>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="SequenceOfType">
     <type>
      <constrained type="asnx:SequenceOfOrListType">
       <withComponents partial="true">
        <group name="component">
         <withComponents partial="true">
          <element name="item" use="absent"/>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="SetOfType" type="asnx:SequenceOfType"/>
        
    <namedType name="SetOfType" type="asnx:SequenceOfType"/>
        
    <namedType name="ListType">
     <type>
      <constrained type="asnx:SequenceOfOrListType">
       <withComponents partial="true">
        <group name="component">
         <withComponents partial="true">
          <element name="component" use="absent"/>
          <element name="element" use="absent"/>
          <element name="group" use="absent"/>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ListType">
     <type>
      <constrained type="asnx:SequenceOfOrListType">
       <withComponents partial="true">
        <group name="component">
         <withComponents partial="true">
          <element name="component" use="absent"/>
          <element name="element" use="absent"/>
          <element name="group" use="absent"/>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ConstrainedType">
     <type>
      <sequence insertions="hollow">
       <group name="type" type="asnx:Type"/>
       <group name="constraint" type="asnx:Constraint"/>
      </sequence>
        
    <namedType name="ConstrainedType">
     <type>
      <sequence insertions="hollow">
       <group name="type" type="asnx:Type"/>
       <group name="constraint" type="asnx:Constraint"/>
      </sequence>
        
     </type>
    </namedType>
        
     </type>
    </namedType>
        
    <namedType name="Constraint">
     <type>
      <sequence>
       <group name="constraintSpec">
        <type>
         <choice insertions="none">
          <group name="subtype" type="asnx:ElementSetSpecs"/>
          <element name="constrainedBy"
                   type="asnx:UserDefinedConstraint"/>
          <element name="table" type="asnx:TableConstraint"/>
          <element name="contents" type="asnx:ContentsConstraint"/>
         </choice>
        </type>
       </group>
       <optional>
        <element name="exception" type="asnx:ExceptionSpec"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Constraint">
     <type>
      <sequence>
       <group name="constraintSpec">
        <type>
         <choice insertions="none">
          <group name="subtype" type="asnx:ElementSetSpecs"/>
          <element name="constrainedBy"
                   type="asnx:UserDefinedConstraint"/>
          <element name="table" type="asnx:TableConstraint"/>
          <element name="contents" type="asnx:ContentsConstraint"/>
         </choice>
        </type>
       </group>
       <optional>
        <element name="exception" type="asnx:ExceptionSpec"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="UserDefinedConstraint">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <group name="parameters" type="asnx:ConstraintParameters"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="UserDefinedConstraint">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <group name="parameters" type="asnx:ConstraintParameters"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ConstraintParameters">
     <type>
      <sequenceOf minSize="1">
       <group name="parameter"
              type="asnx:UserDefinedConstraintParameter"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ConstraintParameters">
     <type>
      <sequenceOf minSize="1">
       <group name="parameter"
              type="asnx:UserDefinedConstraintParameter"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="UserDefinedConstraintParameter">
     <type>
        
    <namedType name="UserDefinedConstraintParameter">
     <type>
        
      <choice insertions="singular">
       <element name="valueParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
          <group name="value" type="asnx:Value"/>
         </sequence>
        </type>
       </element>
       <element name="valueSetParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
          <group name="valueSet" type="asnx:ValueSet"/>
         </sequence>
        </type>
       </element>
       <element name="objectParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
          <group name="object" type="asnx:Object"/>
         </sequence>
        </type>
       </element>
       <element name="objectSetParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
          <group name="objectSet" type="asnx:ObjectSet"/>
         </sequence>
        </type>
       </element>
       <element name="typeParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
         </sequence>
        </type>
       </element>
       <element name="classParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
         </sequence>
        </type>
       </element>
      </choice>
        
      <choice insertions="singular">
       <element name="valueParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
          <group name="value" type="asnx:Value"/>
         </sequence>
        </type>
       </element>
       <element name="valueSetParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
          <group name="valueSet" type="asnx:ValueSet"/>
         </sequence>
        </type>
       </element>
       <element name="objectParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
          <group name="object" type="asnx:Object"/>
         </sequence>
        </type>
       </element>
       <element name="objectSetParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
          <group name="objectSet" type="asnx:ObjectSet"/>
         </sequence>
        </type>
       </element>
       <element name="typeParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
         </sequence>
        </type>
       </element>
       <element name="classParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
         </sequence>
        </type>
       </element>
      </choice>
        
     </type>
    </namedType>
        
     </type>
    </namedType>
        
    <namedType name="TableConstraint">
     <type>
      <sequence>
       <group name="objectSet" type="asnx:ObjectSet"/>
       <optional>
        <group name="componentRelation" type="asnx:AtNotations"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TableConstraint">
     <type>
      <sequence>
       <group name="objectSet" type="asnx:ObjectSet"/>
       <optional>
        <group name="componentRelation" type="asnx:AtNotations"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="AtNotations">
     <type>
      <sequenceOf minSize="1">
       <element name="restrictBy" type="asnx:AtNotation"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="AtNotations">
     <type>
      <sequenceOf minSize="1">
       <element name="restrictBy" type="asnx:AtNotation"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="AtNotation" type="asnx:Markup"/>
        
    <namedType name="AtNotation" type="asnx:Markup"/>
        
    <namedType name="ContentsConstraint">
     <type>
      <constrained>
       <type>
        <sequence>
         <optional>
          <element name="containing" type="asnx:Type"/>
         </optional>
         <optional>
          <element name="encodedBy" type="asnx:Value"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <element name="containing" use="present"/>
        </withComponents>
        <withComponents partial="true">
         <element name="encodedBy" use="present"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ContentsConstraint">
     <type>
      <constrained>
       <type>
        <sequence>
         <optional>
          <element name="containing" type="asnx:Type"/>
         </optional>
         <optional>
          <element name="encodedBy" type="asnx:Value"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <element name="containing" use="present"/>
        </withComponents>
        <withComponents partial="true">
         <element name="encodedBy" use="present"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ExceptionSpec">
     <type>
      <sequence>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExceptionSpec">
     <type>
      <sequence>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Value">
     <type>
      <choice insertions="none">
       <attribute name="literalValue" identifier="literalValueAtt"
                  type="asnx:UTF8String"/>
       <element name="literalValue"
                type="asnx:ElementFormLiteralValue"/>
       <attribute name="value" identifier="valueRef" type="asnx:QName"/>
       <element name="value" type="asnx:ElementFormNotationalValue"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Value">
     <type>
      <choice insertions="none">
       <attribute name="literalValue" identifier="literalValueAtt"
                  type="asnx:UTF8String"/>
       <element name="literalValue"
                type="asnx:ElementFormLiteralValue"/>
       <attribute name="value" identifier="valueRef" type="asnx:QName"/>
       <element name="value" type="asnx:ElementFormNotationalValue"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementFormLiteralValue" type="asnx:Markup">
     <annotation>
      If asnx:literal="false" then the governing type of
      ElementFormLiteralValue is ElementFormNotationalValue.
     </annotation>
    </namedType>
        
    <namedType name="ElementFormLiteralValue" type="asnx:Markup">
     <annotation>
      If asnx:literal="false" then the governing type of
      ElementFormLiteralValue is ElementFormNotationalValue.
     </annotation>
    </namedType>
        
    <namedType name="ElementFormNotationalValue">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedValue"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <element name="openTypeValue">
           <type>
            <sequence>
             <group name="type" type="asnx:Type"/>
             <group name="value" type="asnx:Value"/>
            </sequence>
        
    <namedType name="ElementFormNotationalValue">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedValue"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <element name="openTypeValue">
           <type>
            <sequence>
             <group name="type" type="asnx:Type"/>
             <group name="value" type="asnx:Value"/>
            </sequence>
        
           </type>
          </element>
          <group name="components" type="asnx:ComponentValueList"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
           </type>
          </element>
          <group name="components" type="asnx:ComponentValueList"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Reference">
     <type>
      <sequence>
       <attribute name="ref" type="asnx:QName"/>
       <optional>
        <attribute name="context" type="asnx:AnyURI"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Reference">
     <type>
      <sequence>
       <attribute name="ref" type="asnx:QName"/>
       <optional>
        <attribute name="context" type="asnx:AnyURI"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedValue">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedValue">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ComponentValueList">
     <type>
      <sequenceOf minSize="1">
       <group name="component" type="asnx:NamedValue"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ComponentValueList">
     <type>
      <sequenceOf minSize="1">
       <group name="component" type="asnx:NamedValue"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="NamedValue">
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:GenericNamedValue"/>
       <element name="element" type="asnx:GenericNamedValue"/>
        
    <namedType name="NamedValue">
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:GenericNamedValue"/>
       <element name="element" type="asnx:GenericNamedValue"/>
        
       <element name="attribute" type="asnx:GenericNamedValue"/>
       <element name="group" type="asnx:GenericNamedValue"/>
       <element name="member" type="asnx:GenericNamedValue"/>
       <element name="item" type="asnx:GenericNamedValue"/>
       <element name="simpleContent" type="asnx:GenericNamedValue"/>
      </choice>
     </type>
    </namedType>
        
       <element name="attribute" type="asnx:GenericNamedValue"/>
       <element name="group" type="asnx:GenericNamedValue"/>
       <element name="member" type="asnx:GenericNamedValue"/>
       <element name="item" type="asnx:GenericNamedValue"/>
       <element name="simpleContent" type="asnx:GenericNamedValue"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="GenericNamedValue">
     <type>
      <sequence>
       <attribute name="name" type="asnx:QName"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="GenericNamedValue">
     <type>
      <sequence>
       <attribute name="name" type="asnx:QName"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ValueSet">
     <type>
      <choice insertions="none">
       <attribute name="valueSet" identifier="valueSetRef"
                  type="asnx:QName">
        <annotation>
         valueSet attribute is not used in this version
        </annotation>
       </attribute>
       <element name="valueSet" type="asnx:ElementFormValueSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ValueSet">
     <type>
      <choice insertions="none">
       <attribute name="valueSet" identifier="valueSetRef"
                  type="asnx:QName">
        <annotation>
         valueSet attribute is not used in this version
        </annotation>
       </attribute>
       <element name="valueSet" type="asnx:ElementFormValueSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementFormValueSet">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="elementSetSpecs" type="asnx:ElementSetSpecs"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ElementFormValueSet">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="elementSetSpecs" type="asnx:ElementSetSpecs"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ElementSetSpecs">
     <type>
      <sequence insertions="hollow">
       <group name="root" type="asnx:ValueElementSetSpec"/>
       <optional>
        <element name="extension">
         <type>
          <sequence insertions="hollow">
           <optional>
            <group name="additions" type="asnx:ValueElementSetSpec"/>
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ElementSetSpecs">
     <type>
      <sequence insertions="hollow">
       <group name="root" type="asnx:ValueElementSetSpec"/>
       <optional>
        <element name="extension">
         <type>
          <sequence insertions="hollow">
           <optional>
            <group name="additions" type="asnx:ValueElementSetSpec"/>
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ValueElementSetSpec">
     <type>
      <constrained type="asnx:ElementSetSpec">
       <withComponents partial="true">
        <element name="object" use="absent"/>
        <element name="objectSet" use="absent"/>
        <element name="union">
         <withComponent>
          <includes type="asnx:ValueElementSetSpec"/>
         </withComponent>
        </element>
        <element name="intersection">
         <withComponent>
          <includes type="asnx:ValueElementSetSpec"/>
         </withComponent>
        </element>
        <element name="all">
         <withComponents partial="true">
          <group name="elements">
           <includes type="asnx:ValueElementSetSpec"/>
          </group>
          <element name="except">
           <includes type="asnx:ValueElementSetSpec"/>
          </element>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
        
    <namedType name="ValueElementSetSpec">
     <type>
      <constrained type="asnx:ElementSetSpec">
       <withComponents partial="true">
        <element name="object" use="absent"/>
        <element name="objectSet" use="absent"/>
        <element name="union">
         <withComponent>
          <includes type="asnx:ValueElementSetSpec"/>
         </withComponent>
        </element>
        <element name="intersection">
         <withComponent>
          <includes type="asnx:ValueElementSetSpec"/>
         </withComponent>
        </element>
        <element name="all">
         <withComponents partial="true">
          <group name="elements">
           <includes type="asnx:ValueElementSetSpec"/>
          </group>
          <element name="except">
           <includes type="asnx:ValueElementSetSpec"/>
          </element>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
        
    </namedType>
        
    </namedType>
        
    <namedType name="ElementSetSpec">
     <type>
      <choice insertions="singular">
       <element name="literalValue"
                type="asnx:ElementFormLiteralValue"/>
       <element name="value" type="asnx:ElementFormNotationalValue"/>
       <element name="includes" type="asnx:Type"/>
       <element name="range" type="asnx:ValueRange"/>
       <element name="size" type="asnx:Constraint"/>
       <element name="typeConstraint" type="asnx:Type"/>
       <element name="from" type="asnx:Constraint"/>
       <element name="withComponent" type="asnx:Constraint"/>
       <element name="withComponents"
                type="asnx:MultipleTypeConstraints"/>
       <element name="pattern" type="asnx:Value"/>
       <element name="object" type="asnx:ElementFormObject"/>
       <element name="objectSet" type="asnx:ElementFormObjectSet"/>
       <element name="union" type="asnx:ElementSetSpecList"/>
       <element name="intersection" type="asnx:ElementSetSpecList"/>
       <element name="all">
        <type>
         <sequence>
          <optional>
           <group name="elements" type="asnx:ElementSetSpec"/>
          </optional>
          <element name="except" type="asnx:ElementSetSpec"/>
         </sequence>
        </type>
       </element>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementSetSpec">
     <type>
      <choice insertions="singular">
       <element name="literalValue"
                type="asnx:ElementFormLiteralValue"/>
       <element name="value" type="asnx:ElementFormNotationalValue"/>
       <element name="includes" type="asnx:Type"/>
       <element name="range" type="asnx:ValueRange"/>
       <element name="size" type="asnx:Constraint"/>
       <element name="typeConstraint" type="asnx:Type"/>
       <element name="from" type="asnx:Constraint"/>
       <element name="withComponent" type="asnx:Constraint"/>
       <element name="withComponents"
                type="asnx:MultipleTypeConstraints"/>
       <element name="pattern" type="asnx:Value"/>
       <element name="object" type="asnx:ElementFormObject"/>
       <element name="objectSet" type="asnx:ElementFormObjectSet"/>
       <element name="union" type="asnx:ElementSetSpecList"/>
       <element name="intersection" type="asnx:ElementSetSpecList"/>
       <element name="all">
        <type>
         <sequence>
          <optional>
           <group name="elements" type="asnx:ElementSetSpec"/>
          </optional>
          <element name="except" type="asnx:ElementSetSpec"/>
         </sequence>
        </type>
       </element>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementSetSpecList">
     <type>
      <sequenceOf minSize="2">
       <group name="elements" type="asnx:ElementSetSpec"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ElementSetSpecList">
     <type>
      <sequenceOf minSize="2">
       <group name="elements" type="asnx:ElementSetSpec"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ValueRange">
     <type>
      <sequence>
       <optional>
        <group name="minimum">
        
    <namedType name="ValueRange">
     <type>
      <sequence>
       <optional>
        <group name="minimum">
        
         <type>
          <choice insertions="none">
           <element name="minInclusive" type="asnx:EndValue"/>
           <element name="minExclusive" type="asnx:EndValue"/>
          </choice>
         </type>
        </group>
        <default>
         <literalValue>
          <minInclusive/>
         </literalValue>
        </default>
       </optional>
       <optional>
        <group name="maximum">
         <type>
          <choice insertions="none">
           <element name="maxInclusive" type="asnx:EndValue"/>
           <element name="maxExclusive" type="asnx:EndValue"/>
          </choice>
         </type>
        </group>
        <default>
         <literalValue>
          <maxInclusive/>
         </literalValue>
        </default>
       </optional>
      </sequence>
     </type>
    </namedType>
        
         <type>
          <choice insertions="none">
           <element name="minInclusive" type="asnx:EndValue"/>
           <element name="minExclusive" type="asnx:EndValue"/>
          </choice>
         </type>
        </group>
        <default>
         <literalValue>
          <minInclusive/>
         </literalValue>
        </default>
       </optional>
       <optional>
        <group name="maximum">
         <type>
          <choice insertions="none">
           <element name="maxInclusive" type="asnx:EndValue"/>
           <element name="maxExclusive" type="asnx:EndValue"/>
          </choice>
         </type>
        </group>
        <default>
         <literalValue>
          <maxInclusive/>
         </literalValue>
        </default>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EndValue">
     <type>
      <sequence insertions="hollow">
       <optional>
        <group name="value" type="asnx:Value"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="EndValue">
     <type>
      <sequence insertions="hollow">
       <optional>
        <group name="value" type="asnx:Value"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="MultipleTypeConstraints">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="partial" type="asnx:BOOLEAN"/>
        <default literalValue="false"/>
        
    <namedType name="MultipleTypeConstraints">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="partial" type="asnx:BOOLEAN"/>
        <default literalValue="false"/>
        
       </optional>
       <group name="typeConstraints" type="asnx:TypeConstraints"/>
      </sequence>
     </type>
    </namedType>
        
       </optional>
       <group name="typeConstraints" type="asnx:TypeConstraints"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TypeConstraints">
     <type>
      <sequenceOf minSize="1">
       <group name="namedConstraint" type="asnx:NamedConstraint"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="TypeConstraints">
     <type>
      <sequenceOf minSize="1">
       <group name="namedConstraint" type="asnx:NamedConstraint"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="NamedConstraint">
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:GenericNamedConstraint"/>
       <element name="element" type="asnx:GenericNamedConstraint"/>
       <element name="attribute" type="asnx:GenericNamedConstraint"/>
       <element name="group" type="asnx:GenericNamedConstraint"/>
       <element name="member" type="asnx:GenericNamedConstraint"/>
       <element name="item" type="asnx:GenericNamedConstraint"/>
       <element name="simpleContent"
                type="asnx:GenericNamedConstraint"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="NamedConstraint">
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:GenericNamedConstraint"/>
       <element name="element" type="asnx:GenericNamedConstraint"/>
       <element name="attribute" type="asnx:GenericNamedConstraint"/>
       <element name="group" type="asnx:GenericNamedConstraint"/>
       <element name="member" type="asnx:GenericNamedConstraint"/>
       <element name="item" type="asnx:GenericNamedConstraint"/>
       <element name="simpleContent"
                type="asnx:GenericNamedConstraint"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="GenericNamedConstraint">
     <type>
      <sequence insertions="hollow">
       <attribute name="name" type="asnx:QName"/>
       <optional>
        <attribute name="use" type="asnx:PresenceConstraint"/>
       </optional>
       <optional>
        <group name="constraint" type="asnx:Constraint"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="GenericNamedConstraint">
     <type>
      <sequence insertions="hollow">
       <attribute name="name" type="asnx:QName"/>
       <optional>
        <attribute name="use" type="asnx:PresenceConstraint"/>
       </optional>
       <optional>
        <group name="constraint" type="asnx:Constraint"/>
       </optional>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="PresenceConstraint">
     <type>
      <enumerated>
       <enumeration name="present"/>
       <enumeration name="absent"/>
        
    <namedType name="PresenceConstraint">
     <type>
      <enumerated>
       <enumeration name="present"/>
       <enumeration name="absent"/>
        
       <enumeration name="optional"/>
      </enumerated>
     </type>
    </namedType>
        
       <enumeration name="optional"/>
      </enumerated>
     </type>
    </namedType>
        
    <namedType name="ObjectClass">
     <type>
      <choice insertions="singular">
       <attribute name="class" identifier="classRef" type="asnx:QName"/>
       <element name="class" type="asnx:ElementFormObjectClass"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ObjectClass">
     <type>
      <choice insertions="singular">
       <attribute name="class" identifier="classRef" type="asnx:QName"/>
       <element name="class" type="asnx:ElementFormObjectClass"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="DefinedObjectClass">
     <type>
      <constrained type="asnx:ObjectClass">
       <withComponents partial="true">
        <element name="class">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="objectClassDefn" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="DefinedObjectClass">
     <type>
      <constrained type="asnx:ObjectClass">
       <withComponents partial="true">
        <element name="class">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="objectClassDefn" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ElementFormObjectClass">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedObjectClass"/>
          <group name="objectClassDefn" type="asnx:ObjectClassDefn"/>
         </choice>
        </type>
       </group>
      </sequence>
        
    <namedType name="ElementFormObjectClass">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedObjectClass"/>
          <group name="objectClassDefn" type="asnx:ObjectClassDefn"/>
         </choice>
        </type>
       </group>
      </sequence>
        
     </type>
    </namedType>
        
     </type>
    </namedType>
        
    <namedType name="ExpandedObjectClass">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="objectClass" type="asnx:ObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedObjectClass">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="objectClass" type="asnx:ObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectClassDefn">
     <type>
      <sequenceOf minSize="1">
       <group name="fieldSpec" type="asnx:FieldSpec"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="ObjectClassDefn">
     <type>
      <sequenceOf minSize="1">
       <group name="fieldSpec" type="asnx:FieldSpec"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="FieldSpec">
     <type>
      <choice insertions="singular">
       <element name="typeField" type="asnx:TypeField"/>
       <element name="valueField" type="asnx:ValueField"/>
       <element name="valueSetField" type="asnx:ValueSetField"/>
       <element name="objectField" type="asnx:ObjectField"/>
       <element name="objectSetField" type="asnx:ObjectSetField"/>
       <element name="optional" type="asnx:OptionalField"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="FieldSpec">
     <type>
      <choice insertions="singular">
       <element name="typeField" type="asnx:TypeField"/>
       <element name="valueField" type="asnx:ValueField"/>
       <element name="valueSetField" type="asnx:ValueSetField"/>
       <element name="objectField" type="asnx:ObjectField"/>
       <element name="objectSetField" type="asnx:ObjectSetField"/>
       <element name="optional" type="asnx:OptionalField"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="OptionalField">
     <type>
      <constrained>
       <type>
        <sequence>
         <group name="field">
          <type>
           <choice insertions="singular">
            <element name="typeField" type="asnx:TypeField"/>
            <element name="valueField" type="asnx:ValueField"/>
        
    <namedType name="OptionalField">
     <type>
      <constrained>
       <type>
        <sequence>
         <group name="field">
          <type>
           <choice insertions="singular">
            <element name="typeField" type="asnx:TypeField"/>
            <element name="valueField" type="asnx:ValueField"/>
        
            <element name="valueSetField" type="asnx:ValueSetField"/>
            <element name="objectField" type="asnx:ObjectField"/>
            <element name="objectSetField" type="asnx:ObjectSetField"/>
           </choice>
          </type>
         </group>
         <optional>
          <element name="default" type="asnx:Setting"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="typeField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="valueField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="valueSetField" use="present"/>
          </withComponents>
         </group>
        
            <element name="valueSetField" type="asnx:ValueSetField"/>
            <element name="objectField" type="asnx:ObjectField"/>
            <element name="objectSetField" type="asnx:ObjectSetField"/>
           </choice>
          </type>
         </group>
         <optional>
          <element name="default" type="asnx:Setting"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="typeField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="valueField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="valueSetField" use="present"/>
          </withComponents>
         </group>
        
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="objectField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="objectSetField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="objectField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="objectSetField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="TypeField">
     <type>
      <sequence>
       <optional>
        
    <namedType name="TypeField">
     <type>
      <sequence>
       <optional>
        
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeFieldReference"/>
      </sequence>
     </type>
    </namedType>
        
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeFieldReference"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="TypeFieldReference" type="asnx:TypeReference"/>
        
    <namedType name="TypeFieldReference" type="asnx:TypeReference"/>
        
    <namedType name="ValueField">
     <type>
      <constrained>
       <type>
        <sequence>
         <optional>
          <element name="annotation" type="asnx:Annotation"/>
         </optional>
         <attribute name="name" type="asnx:ValueFieldReference"/>
         <optional>
          <attribute name="unique" type="asnx:BOOLEAN"/>
         </optional>
         <group name="governor">
          <type>
           <choice insertions="singular">
            <group name="type" type="asnx:Type"/>
            <element name="typeFromField" type="asnx:FieldName"/>
           </choice>
          </type>
         </group>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <attribute name="unique" use="absent"/>
        </withComponents>
        <withComponents partial="true">
         <group name="governor">
          <withComponents partial="true">
           <element name="typeFromField" use="absent"/>
          </withComponents>
         </group>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ValueField">
     <type>
      <constrained>
       <type>
        <sequence>
         <optional>
          <element name="annotation" type="asnx:Annotation"/>
         </optional>
         <attribute name="name" type="asnx:ValueFieldReference"/>
         <optional>
          <attribute name="unique" type="asnx:BOOLEAN"/>
         </optional>
         <group name="governor">
          <type>
           <choice insertions="singular">
            <group name="type" type="asnx:Type"/>
            <element name="typeFromField" type="asnx:FieldName"/>
           </choice>
          </type>
         </group>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <attribute name="unique" use="absent"/>
        </withComponents>
        <withComponents partial="true">
         <group name="governor">
          <withComponents partial="true">
           <element name="typeFromField" use="absent"/>
          </withComponents>
         </group>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ValueFieldReference" type="asnx:ValueReference"/>
        
    <namedType name="ValueFieldReference" type="asnx:ValueReference"/>
        
    <namedType name="ValueSetField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ValueSetFieldReference"/>
       <group name="governor">
        <type>
         <choice insertions="singular">
          <group name="type" type="asnx:Type"/>
          <element name="typeFromField" type="asnx:FieldName"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ValueSetField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ValueSetFieldReference"/>
       <group name="governor">
        <type>
         <choice insertions="singular">
          <group name="type" type="asnx:Type"/>
          <element name="typeFromField" type="asnx:FieldName"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ValueSetFieldReference" type="asnx:TypeReference"/>
        
    <namedType name="ValueSetFieldReference" type="asnx:TypeReference"/>
        
    <namedType name="ObjectField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectFieldReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectFieldReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectFieldReference" type="asnx:ObjectReference"/>
        
    <namedType name="ObjectFieldReference" type="asnx:ObjectReference"/>
        
    <namedType name="ObjectSetField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectSetFieldReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectSetField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectSetFieldReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
      </sequence>
     </type>
    </namedType>
        

<namedType name="ObjectSetFieldReference"

<namedType name=“ObjectSetFieldReference”

               type="asnx:ObjectSetReference"/>
        
               type="asnx:ObjectSetReference"/>
        
    <namedType name="Object">
     <type>
      <choice insertions="none">
       <attribute name="object" identifier="objectRef"
                  type="asnx:QName"/>
       <element name="object" type="asnx:ElementFormObject"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Object">
     <type>
      <choice insertions="none">
       <attribute name="object" identifier="objectRef"
                  type="asnx:QName"/>
       <element name="object" type="asnx:ElementFormObject"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementFormObject">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="singular">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedObject"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <group name="fields" type="asnx:ObjectDefn"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ElementFormObject">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="singular">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedObject"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <group name="fields" type="asnx:ObjectDefn"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedObject">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="object" type="asnx:Object"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedObject">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="object" type="asnx:Object"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectDefn">
        
    <namedType name="ObjectDefn">
        
     <type>
      <sequenceOf>
       <element name="field" type="asnx:FieldSetting"/>
      </sequenceOf>
     </type>
    </namedType>
        
     <type>
      <sequenceOf>
       <element name="field" type="asnx:FieldSetting"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="FieldSetting">
     <type>
      <sequence insertions="hollow">
       <attribute name="name" type="asnx:NCName"/>
       <group name="setting" type="asnx:Setting"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="FieldSetting">
     <type>
      <sequence insertions="hollow">
       <attribute name="name" type="asnx:NCName"/>
       <group name="setting" type="asnx:Setting"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="Setting">
     <type>
      <choice>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
       <group name="valueSet" type="asnx:ValueSet"/>
       <group name="object" type="asnx:Object"/>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="Setting">
     <type>
      <choice>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
       <group name="valueSet" type="asnx:ValueSet"/>
       <group name="object" type="asnx:Object"/>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ObjectSet">
     <type>
      <choice insertions="none">
       <attribute name="objectSet" identifier="objectSetRef"
                  type="asnx:QName"/>
       <element name="objectSet" type="asnx:ElementFormObjectSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ObjectSet">
     <type>
      <choice insertions="none">
       <attribute name="objectSet" identifier="objectSetRef"
                  type="asnx:QName"/>
       <element name="objectSet" type="asnx:ElementFormObjectSet"/>
      </choice>
     </type>
    </namedType>
        
    <namedType name="ElementFormObjectSet">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
        
    <namedType name="ElementFormObjectSet">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
        
          <element name="expanded" type="asnx:ExpandedObjectSet"/>
          <group name="objectSetSpec" type="asnx:ObjectSetSpec"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
          <element name="expanded" type="asnx:ExpandedObjectSet"/>
          <group name="objectSetSpec" type="asnx:ObjectSetSpec"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedObjectSet">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ExpandedObjectSet">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </sequence>
     </type>
    </namedType>
        
    <namedType name="ObjectSetSpec">
     <type>
      <constrained>
       <type>
        <sequence insertions="hollow">
         <optional>
          <group name="root" type="asnx:ObjectElementSetSpec"/>
         </optional>
         <optional>
          <element name="extension">
           <type>
            <sequence insertions="hollow">
             <optional>
              <group name="additions" type="asnx:ObjectElementSetSpec"/>
             </optional>
            </sequence>
           </type>
          </element>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
        
    <namedType name="ObjectSetSpec">
     <type>
      <constrained>
       <type>
        <sequence insertions="hollow">
         <optional>
          <group name="root" type="asnx:ObjectElementSetSpec"/>
         </optional>
         <optional>
          <element name="extension">
           <type>
            <sequence insertions="hollow">
             <optional>
              <group name="additions" type="asnx:ObjectElementSetSpec"/>
             </optional>
            </sequence>
           </type>
          </element>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
        
         <group name="root" use="present"/>
        </withComponents>
        <withComponents partial="true">
         <element name="extension" use="present"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
         <group name="root" use="present"/>
        </withComponents>
        <withComponents partial="true">
         <element name="extension" use="present"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ObjectElementSetSpec">
     <type>
      <constrained type="asnx:ElementSetSpec">
       <withComponents partial="true">
        <element name="literalValue" use="absent"/>
        <element name="value" use="absent"/>
        <element name="includes" use="absent"/>
        <element name="range" use="absent"/>
        <element name="size" use="absent"/>
        <element name="typeConstraint" use="absent"/>
        <element name="from" use="absent"/>
        <element name="withComponent" use="absent"/>
        <element name="withComponents" use="absent"/>
        <element name="pattern" use="absent"/>
        <element name="union">
         <withComponent>
          <includes type="asnx:ObjectElementSetSpec"/>
         </withComponent>
        </element>
        <element name="intersection">
         <withComponent>
          <includes type="asnx:ObjectElementSetSpec"/>
         </withComponent>
        </element>
        <element name="all">
         <withComponents partial="true">
          <group name="elements">
           <includes type="asnx:ObjectElementSetSpec"/>
          </group>
          <element name="except">
           <includes type="asnx:ObjectElementSetSpec"/>
          </element>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="ObjectElementSetSpec">
     <type>
      <constrained type="asnx:ElementSetSpec">
       <withComponents partial="true">
        <element name="literalValue" use="absent"/>
        <element name="value" use="absent"/>
        <element name="includes" use="absent"/>
        <element name="range" use="absent"/>
        <element name="size" use="absent"/>
        <element name="typeConstraint" use="absent"/>
        <element name="from" use="absent"/>
        <element name="withComponent" use="absent"/>
        <element name="withComponents" use="absent"/>
        <element name="pattern" use="absent"/>
        <element name="union">
         <withComponent>
          <includes type="asnx:ObjectElementSetSpec"/>
         </withComponent>
        </element>
        <element name="intersection">
         <withComponent>
          <includes type="asnx:ObjectElementSetSpec"/>
         </withComponent>
        </element>
        <element name="all">
         <withComponents partial="true">
          <group name="elements">
           <includes type="asnx:ObjectElementSetSpec"/>
          </group>
          <element name="except">
           <includes type="asnx:ObjectElementSetSpec"/>
          </element>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
        
    <namedType name="EncodingControlSections">
     <type>
      <sequenceOf minSize="1">
       <group name="section" type="asnx:EncodingControlSection"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="EncodingControlSections">
     <type>
      <sequenceOf minSize="1">
       <group name="section" type="asnx:EncodingControlSection"/>
      </sequenceOf>
     </type>
    </namedType>
        
    <namedType name="EncodingControlSection">
     <type>
      <choice insertions="singular">
       <element name="GSER" identifier="gser"
                type="asnx:GSER-EncodingInstructionAssignmentList"/>
       <element name="XER" identifier="xer"
                type="asnx:XER-EncodingInstructionAssignmentList"/>
       <!-- plus encoding control sections
            for other encoding rules in the future -->
      </choice>
     </type>
    </namedType>
        
    <namedType name="EncodingControlSection">
     <type>
      <choice insertions="singular">
       <element name="GSER" identifier="gser"
                type="asnx:GSER-EncodingInstructionAssignmentList"/>
       <element name="XER" identifier="xer"
                type="asnx:XER-EncodingInstructionAssignmentList"/>
       <!-- plus encoding control sections
            for other encoding rules in the future -->
      </choice>
     </type>
    </namedType>
        
    <element name="module" type="asnx:ModuleDefinition"/>
        
    <element name="module" type="asnx:ModuleDefinition"/>
        
    <attribute name="literal" type="asnx:BOOLEAN"/>
        
    <attribute name="literal" type="asnx:BOOLEAN"/>
        
   </asnx:module>
        
   </asnx:module>
        

Author's Address

作者地址

Dr. Steven Legg eB2Bcom Suite 3, Woodhouse Corporate Centre 935 Station Street Box Hill North, Victoria 3129 AUSTRALIA

Steven Legg博士eB2Bcom澳大利亚维多利亚州博克斯山北站街935号伍德豪斯企业中心3号套房,邮编:3129

   Phone: +61 3 9896 7830
   Fax:   +61 3 9896 7801
   EMail: steven.legg@eb2bcom.com
        
   Phone: +61 3 9896 7830
   Fax:   +61 3 9896 7801
   EMail: steven.legg@eb2bcom.com
        

Full Copyright Statement

完整版权声明

Copyright (C) The IETF Trust (2007).

版权所有(C)IETF信托基金(2007年)。

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件及其包含的信息以“原样”为基础提供,贡献者、他/她所代表或赞助的组织(如有)、互联网协会、IETF信托基金和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Intellectual Property

知识产权

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和BCP 79。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。