summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4912.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc4912.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc4912.txt')
-rw-r--r--doc/rfc/rfc4912.txt9243
1 files changed, 9243 insertions, 0 deletions
diff --git a/doc/rfc/rfc4912.txt b/doc/rfc/rfc4912.txt
new file mode 100644
index 0000000..2cbb439
--- /dev/null
+++ b/doc/rfc/rfc4912.txt
@@ -0,0 +1,9243 @@
+
+
+
+
+
+
+Network Working Group S. Legg
+Request for Comments: 4912 eB2Bcom
+Category: Experimental July 2007
+
+
+ Abstract Syntax Notation 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).
+
+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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 1]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+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
+
+
+
+
+Legg Experimental [Page 2]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 3]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+1. Introduction
+
+ 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.
+
+ 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.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 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.
+
+ 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
+
+
+
+Legg Experimental [Page 4]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ The ASN.X translation of the ASN.1 module in Appendix A is presented
+ in Appendix B.
+
+2. Conventions
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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".
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+Legg Experimental [Page 5]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+3. General Considerations
+
+ 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]).
+
+ 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.
+
+ 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.
+
+ 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".
+
+ Aside: White space in the [children] of <fieldName> and
+ <restrictBy> element items is explicitly covered under their
+ respective descriptions.
+
+ 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".
+
+ 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.
+
+ 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".
+
+
+
+
+Legg Experimental [Page 6]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Aside: In most cases, RXER itself permits comment and PI items in
+ the [children] of the element items with the [local name]
+ "literalValue".
+
+ Aside: Note that an ASN.X module may be transferred as data in a
+ protocol and that some protocols disallow processing instructions.
+
+ 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.
+
+ 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.
+
+ Aside: Non-canonical RXER allows all valid namespace prefixes and
+ all valid placements for their corresponding namespace declaration
+ attributes.
+
+ 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.
+
+3.1. Annotations
+
+ 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.
+
+ 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.
+
+
+
+Legg Experimental [Page 7]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+4. ModuleDefinition Translation
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ Aside: An ASN.1 module has a target namespace if it contains a
+ TARGET-NAMESPACE encoding instruction.
+
+ 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
+
+
+
+
+
+Legg Experimental [Page 8]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <asnx:module> element item. The [normalized value] of this attribute
+ item is the character string specified by the NCNameValue in the
+ Prefix.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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".
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+Legg Experimental [Page 9]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ An element item with the [local name] "annotation" MAY be added to
+ the [children] of the <asnx:module> element item.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ Example
+
+ MyModule DEFINITIONS
+ IMPLICIT TAGS
+ EXTENSIBILITY IMPLIED ::=
+ BEGIN
+
+ MyType ::= INTEGER
+
+ ENCODING-CONTROL RXER
+
+ SCHEMA-IDENTITY "http://example.com/id/MyModule"
+ TARGET-NAMESPACE "http://example.com/ns/MyModule"
+
+ COMPONENT myElement INTEGER
+
+ 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">
+
+ <namedType name="MyType" type="asnx:INTEGER"/>
+
+
+
+
+Legg Experimental [Page 10]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <element name="myElement" type="asnx:INTEGER"/>
+
+ </asnx:module>
+
+5. Translation of Assignments
+
+5.1. Referencing Named Constructs
+
+ 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.
+
+ 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].
+
+ 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:
+
+ (1) two or more type or value set assignments define the same
+ typereference, or
+
+ (2) two or more value assignments define the same valuereference, or
+
+ (3) two or more object class assignments define the same
+ objectclassreference, or
+
+ (4) two or more object assignments define the same objectreference,
+ or
+
+ (5) two or more object set assignments define the same
+ objectsetreference, or
+
+
+
+
+
+Legg Experimental [Page 11]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ (6) two or more top-level element components [RXEREI] have the same
+ local name, or
+
+ (7) two or more top-level attribute components [RXEREI] have the same
+ local name.
+
+ 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].
+
+ 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.
+
+ TARGET-NAMESPACE and SCHEMA-IDENTITY encoding instructions are
+ RECOMMENDED for every ASN.1 module.
+
+5.2. Importing Namespaces
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 12]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Definition (external module): An external module is any module other
+ than the module being translated and the AdditionalBasicDefinitions
+ module [RXER].
+
+ Aside: The AdditionalBasicDefinitions module is always assumed to
+ be imported, as are all the built-in types and object classes of
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+Legg Experimental [Page 13]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+5.3. TypeAssignment Translation
+
+ 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.
+
+ 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.
+
+ Example
+
+ MyType ::= INTEGER
+
+ <namedType name="MyType" type="asnx:INTEGER"/>
+
+5.4. ValueAssignment and XMLValueAssignment Translation
+
+ 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.
+
+ 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.
+
+ Example
+
+ myValue INTEGER ::= 10
+
+ <namedValue name="myValue" type="asnx:INTEGER" literalValue="10"/>
+
+
+
+
+
+
+Legg Experimental [Page 14]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+5.5. ValueSetTypeAssignment Translation
+
+ 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.
+
+ 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.
+
+ Example
+
+ MyValueSet INTEGER ::= { 10 }
+
+ <namedValueSet name="MyValueSet" type="asnx:INTEGER">
+ <valueSet>
+ <literalValue>10</literalValue>
+ </valueSet>
+ </namedValueSet>
+
+5.6. ObjectClassAssignment Translation
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 15]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ MY-CLASS ::= TYPE-IDENTIFIER
+
+ <namedClass name="MY-CLASS" class="asnx:TYPE-IDENTIFIER"/>
+
+5.7. ObjectAssignment Translation
+
+ 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.
+
+ 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.
+
+ Example
+
+ 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>
+
+5.8. ObjectSetAssignment Translation
+
+ 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.
+
+ 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
+
+
+
+Legg Experimental [Page 16]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ the right-hand side of the assignment SHALL be added to the
+ [children] or [attributes] of the <namedObjectSet> element item.
+
+ Example
+
+ MyObjectSet TYPE-IDENTIFIER ::= { myObject }
+
+ <namedObjectSet name="MyObjectSet" class="asnx:TYPE-IDENTIFIER">
+ <objectSet>
+ <object ref="tns:myObject"/>
+ </objectSet>
+ </namedObjectSet>
+
+5.9. ParameterizedAssignment Translation
+
+ 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).
+
+6. Translation of Types
+
+ 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.
+
+6.1. Identifier Replacement
+
+ 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.
+
+ Definition (reduction): The reduction of an NCName is the string of
+ characters resulting from the following operations performed in order
+ on the NCName:
+
+
+
+Legg Experimental [Page 17]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ (1) replace each full stop ('.', U+002E) and low line ('_', U+005F)
+ character with a hyphen character ('-', U+002D),
+
+ (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),
+
+ (3) remove leading and trailing hyphen characters,
+
+ (4) replace sequences of two or more hyphen characters with a single
+ hyphen, and
+
+ (5) convert the first character to lowercase if it is an uppercase
+ letter.
+
+ 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.
+
+6.2. DefinedType Translation
+
+ If a Type is a DefinedType in a ReferencedType, then the translation
+ of the Type is the translation of the 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.
+
+ 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).
+
+ 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
+
+
+
+Legg Experimental [Page 18]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ [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.
+
+ 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).
+
+ 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.
+
+ The translation of the DefinedType is the same whether the type
+ definition is referenced by a typereference or an
+ ExternalTypeReference.
+
+ 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.
+
+ 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.
+
+ 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
+
+
+
+Legg Experimental [Page 19]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ [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.
+
+ 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
+ }
+
+ <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).
+
+6.3. Translation of Built-in Types
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 20]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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]).
+
+ 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.
+
+ Example
+
+ 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
+
+ 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.
+
+ 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>
+
+
+
+Legg Experimental [Page 21]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Examples
+
+ 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>
+
+ [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>
+
+6.5. IntegerType Translation
+
+ 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.
+
+
+
+
+Legg Experimental [Page 22]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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) }
+
+ <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) }
+
+ <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>
+
+
+
+
+
+
+
+Legg Experimental [Page 23]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+6.6. EnumeratedType Translation
+
+ 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.
+
+ 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.
+
+ The translation of an EnumerationItem is an element item with the
+ [local name] "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.
+
+ 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
+
+
+
+Legg Experimental [Page 24]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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.
+
+ Examples
+
+ 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>
+
+ [RXER:VALUES ALL CAPITALIZED, red AS "Crimson"]
+ ENUMERATED { red, yellow, green, blue }
+
+ <type>
+ <enumerated>
+ <enumeration name="Crimson" identifier="red"/>
+ <enumeration name="Yellow"/>
+ <enumeration name="Green"/>
+ <enumeration name="Blue"/>
+ </enumerated>
+ </type>
+
+6.7. PrefixedType Translation
+
+ 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.
+
+ 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.
+
+
+
+
+
+Legg Experimental [Page 25]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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]).
+
+ 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
+
+
+
+Legg Experimental [Page 26]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+ }
+
+ <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>
+
+
+
+
+Legg Experimental [Page 27]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+6.7.1. Short Form TaggedType Translation
+
+ 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.
+
+ 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".
+
+ 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.
+
+ 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.
+
+ 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.
+
+ The translation of the Type in the TaggedType SHALL be added to the
+ [children] or [attributes] of the <tagged> element item.
+
+ Examples
+
+ [0] INTEGER
+
+ <type>
+ <tagged number="0" type="asnx:INTEGER"/>
+ </type>
+
+ [APPLICATION 10] IMPLICIT BOOLEAN
+
+ <type>
+ <tagged tagClass="application" number="10" tagging="implicit"
+ type="asnx:BOOLEAN"/>
+ </type>
+
+
+
+
+Legg Experimental [Page 28]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+6.7.2. Long Form TaggedType Translation
+
+ 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.
+
+ 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".
+
+ 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.
+
+ 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.
+
+ 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.
+
+ The translation of the Type in the TaggedType SHALL be added to the
+ [children] or [attributes] of the <prefixed> element item.
+
+ Examples
+
+ [0] INTEGER
+
+ <type>
+ <prefixed type="asnx:INTEGER">
+ <TAG number="0"/>
+ </prefixed>
+ </type>
+
+
+
+
+Legg Experimental [Page 29]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ [APPLICATION 10] IMPLICIT BOOLEAN
+
+ <type>
+ <prefixed type="asnx:BOOLEAN">
+ <TAG tagClass="application" number="10" tagging="implicit"/>
+ </prefixed>
+ </type>
+
+6.8. SelectionType Translation
+
+ 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.
+
+ 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].
+
+ The translation of the Type in the SelectionType SHALL be added to
+ the [children] or [attributes] of the <selection> element item.
+
+ Examples
+
+ field1 < MyChoiceType
+
+ <type>
+ <selection element="field1" type="tns:MyChoiceType"/>
+ </type>
+
+ 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>
+
+
+
+Legg Experimental [Page 30]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </selection>
+ </type>
+
+6.9. InstanceOfType Translation
+
+ 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.
+
+ Example
+
+ INSTANCE OF TYPE-IDENTIFIER
+
+ <type>
+ <instanceOf class="asnx:TYPE-IDENTIFIER"/>
+ </type>
+
+6.10. ObjectClassFieldType Translation
+
+ 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.
+
+ Example
+
+ OPERATION.&Linked.&ArgumentType
+
+ <type>
+ <fromClass class="tns:OPERATION"
+ fieldName="Linked/ArgumentType"/>
+ </type>
+
+
+
+
+
+
+
+
+Legg Experimental [Page 31]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+6.11. TypeFromObject and ValueSetFromObjects Translation
+
+ 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.
+
+ The translation of the ReferencedObjects instance in the
+ TypeFromObject or ValueSetFromObjects SHALL be added to the
+ [children] or [attributes] of the <fromObjects> element item.
+
+ The translation of the FieldName in the TypeFromObject or
+ ValueSetFromObjects SHALL be added to the [children] or [attributes]
+ of the <fromObjects> element item.
+
+ Example
+
+ invertMatrix.&Errors.&errorCode
+
+ <type>
+ <fromObjects object="tns:invertMatrix"
+ fieldName="Errors/errorCode"/>
+ </type>
+
+6.12. Translation of Combining Types
+
+ 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.
+
+6.12.1. NamedType Translation
+
+ 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.
+
+ The normal translation of a NamedType is an element item with the
+ [local name] determined as follows:
+
+ (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",
+
+
+
+Legg Experimental [Page 32]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ (2) else if the NamedType is subject to a GROUP encoding instruction,
+ then the [local name] is "group",
+
+ (3) else if the NamedType is subject to a SIMPLE-CONTENT encoding
+ instruction, then the [local name] is "simpleContent",
+
+ (4) otherwise, the [local name] is "element" or "component"
+ (translator's choice).
+
+ 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.
+
+ The member translation of a NamedType is an element item with the
+ [local name] "member".
+
+ The item translation of a NamedType is an element item with the
+ [local name] "item".
+
+ 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].
+
+ 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.
+
+ 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.
+
+ 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
+
+
+
+
+
+Legg Experimental [Page 33]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <simpleContent> element item. The [normalized value] of this
+ attribute item is the local name of the expanded name of the
+ 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.
+
+ 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.
+
+ 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.
+
+ 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).
+
+ 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.
+
+
+
+Legg Experimental [Page 34]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 35]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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
+ }
+
+ <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
+
+ 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
+
+
+
+Legg Experimental [Page 36]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ The translation of a ComponentType of the "NamedType" form is the
+ normal translation of the 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.
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 37]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Example
+
+ 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>
+
+6.12.3. SetType Translation
+
+ 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".
+
+
+
+
+
+
+
+Legg Experimental [Page 38]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+6.12.4. ChoiceType Translation
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 39]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ 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>
+
+6.12.5. Translation of UNION Types
+
+ 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.
+
+
+
+
+
+
+
+
+Legg Experimental [Page 40]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ [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>
+
+6.12.6. SequenceOfType Translation
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+Legg Experimental [Page 41]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Examples
+
+ SEQUENCE OF INTEGER
+
+ <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>
+
+6.12.7. Translation of LIST Types
+
+ 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.
+
+ Aside: A SequenceOfType is necessarily of the
+ "SEQUENCE OF NamedType" form for a LIST encoding instruction.
+
+ Example
+
+ [RXER:LIST] SEQUENCE OF number INTEGER
+
+ <type>
+ <list>
+ <item name="number" type="asnx:INTEGER"/>
+ </list>
+ </type>
+
+6.12.8. SetOfType Translation
+
+ 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".
+
+
+
+Legg Experimental [Page 42]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+6.12.9. Effect of Insertion Encoding Instructions
+
+ 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.
+
+ Example
+
+ [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>
+
+6.13. Translation of Constrained Types
+
+ 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
+
+
+
+Legg Experimental [Page 43]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ [attributes] of the <constrained> element item. The translation of
+ the Constraint SHALL be added to the [children] of the <constrained>
+ element item.
+
+ The translation of a ContainedType that is a TypeWithConstraint is
+ the translation of the 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.
+
+ 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.
+
+ 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).
+
+ 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.
+
+ 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.
+
+
+
+Legg Experimental [Page 44]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ The [normalized value] of this attribute item is the value of the
+ upper endpoint.
+
+ 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.
+
+ Examples
+
+ SEQUENCE (SIZE(1..MAX)) OF number INTEGER
+
+ <type>
+ <sequenceOf minSize="1">
+ <element name="number" type="asnx:INTEGER"/>
+ </sequenceOf>
+ </type>
+
+ SEQUENCE SIZE(0..10) OF number INTEGER
+
+ <type>
+ <sequenceOf maxSize="10">
+ <element name="number" type="asnx:INTEGER"/>
+ </sequenceOf>
+ </type>
+
+ SEQUENCE SIZE(1..limit) OF number INTEGER
+
+ <type>
+ <constrained>
+ <type>
+ <sequenceOf>
+ <element name="number" type="asnx:INTEGER"/>
+ </sequenceOf>
+ </type>
+ <size>
+ <range>
+ <minInclusive literalValue="1"/>
+ <maxInclusive value="tns:limit"/>
+ </range>
+
+
+
+
+
+Legg Experimental [Page 45]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </size>
+ </constrained>
+ </type>
+
+6.13.1. Constraint Translation
+
+ 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.
+
+ The translation of a ConstraintSpec is the translation of the
+ SubtypeConstraint or GeneralConstraint in the ConstraintSpec.
+
+ The translation of a SubtypeConstraint is the translation of the
+ ElementSetSpecs in the SubtypeConstraint.
+
+ The translation of a GeneralConstraint [X.682] is the translation of
+ the UserDefinedConstraint, TableConstraint, or ContentsConstraint in
+ the GeneralConstraint.
+
+6.13.2. UserDefinedConstraint Translation
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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
+
+
+
+Legg Experimental [Page 46]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <objectParameter> element item. The translation of the Object SHALL
+ be added to the [children] or [attributes] of the <objectParameter>
+ element item.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ Example
+
+ 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>
+
+6.13.3. TableConstraint Translation
+
+ 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.
+
+ 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
+
+
+
+Legg Experimental [Page 47]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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).
+
+ Examples
+
+ 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>
+
+ 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">
+
+
+
+Legg Experimental [Page 48]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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].
+
+ 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
+
+ The translation of a ContentsConstraint is an element item with the
+ [local name] "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.
+
+ 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.
+
+
+
+
+Legg Experimental [Page 49]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Example
+
+ OCTET STRING
+ (CONTAINING MyType
+ ENCODED BY { joint-iso-itu-t asn1(1) basic-encoding(1) })
+
+ <type>
+ <constrained type="asnx:OCTET-STRING">
+ <contents>
+ <containing type="tns:MyType"/>
+ <encodedBy literalValue="2.1.1"/>
+ </contents>
+ </constrained>
+ </type>
+
+6.13.5. ExceptionSpec Translation
+
+ The translation of an empty ExceptionSpec is empty.
+
+ The translation of a non-empty ExceptionSpec is an element item with
+ the [local name] "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.
+
+ 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.
+
+
+
+
+
+
+
+
+Legg Experimental [Page 50]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Examples
+
+ !10
+
+ <exception type="asnx:INTEGER" literalValue="10"/>
+
+ !myValue
+
+ <exception type="asnx:INTEGER" value="tns:myValue"/>
+
+ !PrintableString:"failure"
+
+ <exception type="asnx:PrintableString" literalValue="failure"/>
+
+7. Translation of Values
+
+ 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.
+
+ 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
+
+ (a) the BuiltinValue is a TaggedValue and the Value in the
+ TaggedValue is a notational value, or
+
+ (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
+
+
+
+
+
+Legg Experimental [Page 51]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ (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
+
+ (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
+
+ (2) the Value is a ReferencedValue, and
+
+ (a) the ReferencedValue is a ValueFromObject, or
+
+ (b) the ReferencedValue is a DefinedValue, and
+
+ (i) the DefinedValue is a valuereference (not a
+ DummyReference) or an ExternalValueReference, or
+
+ (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
+
+ (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
+
+ (3) the Value is an ObjectClassFieldValue, and
+
+ (a) the ObjectClassFieldValue is an OpenTypeFieldVal, or
+
+ (b) the ObjectClassFieldValue is a FixedTypeFieldVal, and
+
+ (i) the FixedTypeFieldVal is a BuiltinValue that satisfies
+ case (1), or
+
+ (ii) the FixedTypeFieldVal is a ReferencedValue that
+ satisfies case (2).
+
+ A literal value that is a BuiltinValue that is a SequenceValue,
+ SetValue, ChoiceValue, SequenceOfValue, or SetOfValue MAY be
+ translated as a notational value.
+
+
+
+
+
+Legg Experimental [Page 52]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+
+ 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.
+
+ 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
+
+ (2) attribute form translations of Value have been explicitly
+ disallowed in the context where the literal value appears, or
+
+ (3) the literal value has a nested notational value.
+
+ 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.
+
+ Each outermost <literalValue> element item is required to be
+ self-contained [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.
+
+
+
+Legg Experimental [Page 53]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Aside: A <literalValue> element item nested within another
+ <literalValue> element item is not required to be self-contained.
+
+ 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.
+
+ 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).
+
+ Example
+
+ zero INTEGER ::= 0
+
+ <namedValue name="zero" type="asnx:INTEGER" literalValue="0"/>
+
+ OR
+
+ <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.
+
+ 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.
+
+7.2. Translation of Notational Values
+
+ The translation of a notational value is the translation of the
+ BuiltinValue, ReferencedValue, or ObjectClassFieldValue in the
+ notational value.
+
+ The translation of a ReferencedValue is the translation of the
+ DefinedValue or ValueFromObject in the ReferencedValue.
+
+
+
+Legg Experimental [Page 54]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Aside: In the latter case, the element item will also have a
+ literal attribute item with the [normalized value] "false" or "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.
+
+ Examples
+
+ nothing INTEGER ::= 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>
+
+ 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>
+
+ 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"
+
+
+
+Legg Experimental [Page 55]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+
+ 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.
+
+ 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).
+
+ 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).
+
+ 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
+
+
+
+
+
+Legg Experimental [Page 56]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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).
+
+7.2.2. BuiltinValue Translation
+
+ The translation of a BuiltinValue is the translation of the
+ ChoiceValue, SequenceValue, SetValue, SequenceOfValue, SetOfValue, or
+ TaggedValue in the BuiltinValue.
+
+ 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).
+
+ 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.
+
+
+
+
+
+
+
+Legg Experimental [Page 57]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ Examples
+
+ -- 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>
+
+
+
+Legg Experimental [Page 58]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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.
+
+ <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 }
+ }
+
+ <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 }
+ }
+
+ <namedValue name="myValue3" type="tns:MyType">
+ <value>
+ <attribute name="one">
+ <value>
+
+
+
+Legg Experimental [Page 59]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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
+
+ 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.
+
+ The translation of the ReferencedObjects instance in the
+ ValueFromObject SHALL be added to the [children] or [attributes] of
+ the <fromObjects> element item.
+
+ The translation of the FieldName in the ValueFromObject SHALL be
+ added to the [children] or [attributes] of the <fromObjects> element
+ item.
+
+7.2.4. ObjectClassFieldValue Translation
+
+ If an ObjectClassFieldValue is a BuiltinValue in a FixedTypeFieldVal,
+ then the translation of the ObjectClassFieldValue is the translation
+ of the BuiltinValue.
+
+ If an ObjectClassFieldValue is a ReferencedValue in a
+ FixedTypeFieldVal, then the translation of the ObjectClassFieldValue
+ is the translation of the 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
+
+
+
+Legg Experimental [Page 60]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Example
+
+ 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>
+
+8. Translation of Value Sets
+
+ 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.
+
+ Example
+
+ { 1 | 3..7, ..., 9..19 EXCEPT ( 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>
+
+
+
+Legg Experimental [Page 61]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <literalValue>11</literalValue>
+ <literalValue>12</literalValue>
+ </union>
+ </except>
+ </all>
+ </extension>
+ </valueSet>
+
+8.1. ElementSetSpecs Translation
+
+ The translation of an ElementSetSpecs instance where the ellipsis
+ ("...") is not present is the translation of the ElementSetSpec in
+ the RootElementSetSpec.
+
+ 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.
+
+8.2. ElementSetSpec Translation
+
+ 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.
+
+ If an ElementSetSpec is a Unions instance, then the translation of
+ the ElementSetSpec is the translation of the Unions instance.
+
+ 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.
+
+ 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.
+
+
+
+Legg Experimental [Page 62]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ If an IntersectionElements instance is an Elements instance, then the
+ translation of the IntersectionElements instance is the translation
+ of the Elements instance.
+
+ The translation of an Elements instance is the translation of the
+ SubtypeElements, ObjectSetElements, or ElementSetSpec in the Elements
+ instance.
+
+8.3. SubtypeElements Translation
+
+ 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.
+
+ 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.
+
+ If a SubtypeElements instance is a ValueRange, then the translation
+ of the SubtypeElements instance is the translation of the 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.
+
+ 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.
+
+
+
+
+
+
+
+Legg Experimental [Page 63]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ If a SubtypeElements instance is an InnerTypeConstraints instance,
+ then the translation of the SubtypeElements instance is the
+ translation of the InnerTypeConstraints instance.
+
+ 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.
+
+8.3.1. ValueRange Translation
+
+ The translation of a ValueRange is an element item with the
+ [local name] "range".
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+Legg Experimental [Page 64]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ Examples
+
+ 1..10
+
+ <range>
+ <minInclusive literalValue="1"/>
+ <maxInclusive literalValue="10"/>
+ </range>
+
+ 0..MAX
+
+ <range>
+ <minInclusive literalValue="0"/>
+ </range>
+
+ 0<..<MAX
+
+ <range>
+ <minExclusive literalValue="0"/>
+ <maxExclusive/>
+ </range>
+
+8.3.2. InnerTypeConstraints Translation
+
+ 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.
+
+ 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.
+
+
+
+Legg Experimental [Page 65]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ 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".
+
+ 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.
+
+9. Translation of Object Classes
+
+ The translation of an ObjectClass is the translation of the
+ DefinedObjectClass, ObjectClassDefn, or ParameterizedObjectClass in
+ the ObjectClass.
+
+ The translation of a ParameterizedObjectClass is described in
+ Section 13.
+
+9.1. DefinedObjectClass Translation
+
+ If a DefinedObjectClass is an objectclassreference (not a
+ DummyReference), an ExternalObjectClassReference, or a
+ UsefulObjectClassReference, then the translation of the
+
+
+
+
+
+Legg Experimental [Page 66]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ DefinedObjectClass is either the attribute form translation of an
+ object class reference, or the element form translation of an object
+ class reference.
+
+ 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.
+
+ 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).
+
+ The translation of the DefinedObjectClass is the same whether the
+ object class definition is referenced by an objectclassreference or
+ an ExternalObjectClassReference.
+
+ If a DefinedObjectClass is a DummyReference, then the translation of
+ the DefinedObjectClass is the translation of the DummyReference (see
+ Section 13).
+
+
+
+Legg Experimental [Page 67]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+9.2. ObjectClassDefn Translation
+
+ 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.
+
+ The translation of a FieldSpec is the translation of the
+ TypeFieldSpec, FixedTypeValueFieldSpec, VariableTypeValueFieldSpec,
+ FixedTypeValueSetFieldSpec, VariableTypeValueSetFieldSpec,
+ ObjectFieldSpec, or ObjectSetFieldSpec in the FieldSpec.
+
+9.2.1. TypeFieldSpec Translation
+
+ The translation of a TypeFieldSpec where the TypeOptionalitySpec is
+ absent is an element item with the [local name] "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.
+
+ 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.
+
+ 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.
+
+ Example
+
+ CLASS {
+ &One,
+ &Two OPTIONAL,
+ &Three DEFAULT OBJECT IDENTIFIER
+ }
+
+
+
+
+
+Legg Experimental [Page 68]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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
+
+ The translation of a FixedTypeValueFieldSpec where the
+ ValueOptionalitySpec is absent is an element item with the
+ [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.
+
+ 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.
+
+ 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.
+
+
+
+
+Legg Experimental [Page 69]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ 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>
+
+9.2.3. FixedTypeValueSetFieldSpec Translation
+
+ The translation of a FixedTypeValueSetFieldSpec where the
+ ValueSetOptionalitySpec is absent is an element item with the
+ [local name] "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.
+
+ 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.
+
+ 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
+
+
+
+Legg Experimental [Page 70]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <valueSetField> element item. The translation of the Type in the
+ FixedTypeValueSetFieldSpec SHALL be added to the [children] or
+ [attributes] of the <valueSetField> element item.
+
+ Example
+
+ 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>
+
+9.2.4. VariableTypeValueFieldSpec Translation
+
+ The translation of a VariableTypeValueFieldSpec where the
+ ValueOptionalitySpec is absent is an element item with the
+ [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.
+
+ 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>
+
+
+
+Legg Experimental [Page 71]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ element item. The translation of the Value in the
+ ValueOptionalitySpec SHALL be added to the [children] or [attributes]
+ of the <default> 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 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.
+
+ Example
+
+ 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>
+
+
+
+
+
+
+
+Legg Experimental [Page 72]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+9.2.5. VariableTypeValueSetFieldSpec Translation
+
+ The translation of a VariableTypeValueSetFieldSpec where the
+ ValueSetOptionalitySpec is absent is an element item with the
+ [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.
+
+ 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.
+
+ 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>
+ <optional>
+ <typeField name="Syntax"/>
+ <default type="asnx:INTEGER"/>
+ </optional>
+
+
+
+Legg Experimental [Page 73]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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
+
+ 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.
+
+ 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].
+
+ 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).
+
+
+
+
+Legg Experimental [Page 74]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ &Linked.&ArgumentType
+
+ <fieldName>Linked/ArgumentType</fieldName>
+
+9.2.7. ObjectFieldSpec Translation
+
+ The translation of an ObjectFieldSpec where the ObjectOptionalitySpec
+ is absent is an element item with the [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.
+
+ 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.
+
+ 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.
+
+ Example
+
+ CLASS {
+ &one TYPE-IDENTIFIER,
+ &two ABSTRACT-SYNTAX OPTIONAL,
+ &three TYPE-IDENTIFIER DEFAULT myObject
+ }
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 75]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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
+
+ The translation of an ObjectSetFieldSpec where the
+ ObjectSetOptionalitySpec is absent is an element item with the
+ [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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 76]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ 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>
+
+10. Translation of Objects
+
+ The translation of an Object is the translation of the DefinedObject,
+ ObjectDefn, ObjectFromObject, or ParameterizedObject in the Object.
+
+ The translation of a ParameterizedObject is described in Section 13.
+
+10.1. DefinedObject Translation
+
+ 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.
+
+ 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).
+
+ 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
+
+
+
+Legg Experimental [Page 77]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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).
+
+ The translation of the DefinedObject is the same whether the object
+ definition is referenced by an objectreference or an
+ ExternalObjectReference.
+
+ 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).
+
+10.2. ObjectDefn Translation
+
+ An ObjectDefn that is a DefinedSyntax is first converted to the
+ equivalent DefaultSyntax and then translated.
+
+ 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.
+
+ 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
+
+
+
+Legg Experimental [Page 78]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ the Setting in the FieldSetting SHALL be added to the [children] or
+ [attributes] of the <field> element item.
+
+ Example
+
+ -- 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>
+
+ 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"/>
+
+
+
+Legg Experimental [Page 79]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </objectSet>
+ </field>
+ </object>
+ </namedObject>
+
+10.3. ObjectFromObject Translation
+
+ 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.
+
+ The translation of the ReferencedObjects instance in the
+ ObjectFromObject SHALL be added to the [children] or [attributes] of
+ the <fromObjects> element item.
+
+ The translation of the FieldName in the ObjectFromObject SHALL be
+ added to the [children] or [attributes] of the <fromObjects> element
+ item.
+
+11. Translation of Object Sets
+
+ 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.
+
+ 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.
+
+ If an ObjectSetSpec contains only a RootElementSetSpec, then the
+ translation of the ObjectSetSpec is the translation of the
+ ElementSetSpec in the RootElementSetSpec.
+
+
+
+
+
+
+Legg Experimental [Page 80]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ Nested within the ElementSetSpec will be one or more
+ ObjectSetElements instances.
+
+11.1. DefinedObjectSet Translation
+
+ 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.
+
+ 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).
+
+ 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"
+
+
+
+Legg Experimental [Page 81]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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).
+
+ The translation of the DefinedObjectSet is the same whether the
+ object definition is referenced by an objectsetreference or an
+ ExternalObjectSetReference.
+
+ 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).
+
+11.2. ObjectSetElements Translation
+
+ 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.
+
+ 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.
+
+ If an ObjectSetElements instance is an ObjectSetFromObjects, then the
+ translation of the ObjectSetElements instance is the translation of
+ the ObjectSetFromObjects.
+
+ If an ObjectSetElements instance is a ParameterizedObjectSet, then
+ the translation of the ObjectSetElements instance is the translation
+ of the ParameterizedObjectSet (see Section 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.
+
+
+
+
+
+
+Legg Experimental [Page 82]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+11.2.1. ObjectSetFromObjects Translation
+
+ 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.
+
+ The translation of the ReferencedObjects instance in the
+ ObjectSetFromObjects SHALL be added to the [children] or [attributes]
+ of the <fromObjects> element item.
+
+ The translation of the FieldName in the ObjectSetFromObjects SHALL be
+ added to the [children] or [attributes] of the <fromObjects> element
+ item.
+
+12. Translation of Information From Objects
+
+ If a ReferencedObjects instance is a DefinedObject (not a
+ DummyReference), then the translation of the ReferencedObjects
+ instance is the translation of the DefinedObject.
+
+ If a ReferencedObjects instance is a DefinedObjectSet (not a
+ DummyReference), then the translation of the ReferencedObjects
+ instance is the translation of the 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).
+
+ 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.
+
+13. Translation of Parameterized Definitions
+
+ 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.
+
+
+
+Legg Experimental [Page 83]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ In the case of a ParameterizedType, the substitute definition is the
+ Type on the right-hand side of the referenced
+ ParameterizedTypeAssignment.
+
+ 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]).
+
+ In the case of a ParameterizedValue, the substitute definition is the
+ Value on the right-hand side of the referenced
+ ParameterizedValueAssignment.
+
+ In the case of a ParameterizedObjectClass, the substitute definition
+ is the ObjectClass on the right-hand side of the referenced
+ ParameterizedObjectClassAssignment.
+
+
+
+Legg Experimental [Page 84]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ In the case of a ParameterizedObject, the substitute definition is
+ the Object on the right-hand side of the referenced
+ ParameterizedObjectAssignment.
+
+ In the case of a ParameterizedObjectSet, the substitute definition is
+ the ObjectSet on the right-hand side of the referenced
+ ParameterizedObjectSetAssignment.
+
+ 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.
+
+ 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.
+
+ 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
+
+ (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.
+
+ 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.
+
+ 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
+
+
+
+
+
+Legg Experimental [Page 85]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ Aside: ASN.1 does not permit the other kinds of parameterized
+ reference to be recursive.
+
+ 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:
+
+ (a) the translation of the substitute definition, or
+
+ (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.
+
+ The translation in case (b) is always allowed and provides
+ information to identify the referenced module and the referenced
+ definition.
+
+ 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.
+
+ 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.
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 86]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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).
+
+ 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.
+
+ In the case of a ParameterizedType or ParameterizedValueSetType, the
+ [normalized value] of this attribute item is the typereference of the
+ ParameterizedType or ParameterizedValueSetType.
+
+ In the case of a ParameterizedValue, the [normalized value] of this
+ attribute item is the valuereference of the ParameterizedValue.
+
+ In the case of a ParameterizedObjectClass, the [normalized value] of
+ this attribute item is the objectclassreference of the
+ ParameterizedObjectClass.
+
+ In the case of a ParameterizedObject, the [normalized value] of this
+ attribute item is the objectreference of the ParameterizedObject.
+
+ In the case of a ParameterizedObjectSet, the [normalized value] of
+ this attribute item is the objectsetreference of the
+ ParameterizedObjectSet.
+
+ The "name" attribute item MAY be omitted if:
+
+ (1) the conditions permitting the use of the translation in case (a)
+ are satisfied, or
+
+ (2) the reference is not a typereference, or
+
+
+
+
+
+
+Legg Experimental [Page 87]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ (3) the reference is a typereference that does not appear in any
+ TargetList in an XER encoding control section of the referenced
+ module.
+
+ The "name" attribute SHALL NOT appear in the translation of a
+ 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:
+
+ (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.
+
+ (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.
+
+ (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.
+
+ The [attributes] of the <module> element item MUST contain at least
+ one of the attribute items specified in cases (1), (2), and (3).
+
+ The translation of the substitute definition SHALL be added to the
+ [children] or [attributes] of the <expanded> element item.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 88]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ Example
+
+ Consider these module definitions:
+
+ Templates
+ DEFINITIONS
+ AUTOMATIC TAGS ::=
+ BEGIN
+
+ 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
+
+ IMPORTS
+ CollectionOfThings{}
+ FROM Templates
+ ;
+
+ 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:
+
+ <asnx:module name="Templates"/>
+
+ <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>
+
+
+
+Legg Experimental [Page 89]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <module name="ProtocolDefinitions"/>
+ <type ref="asnx:INTEGER"/>
+ </expanded>
+ </type>
+ </element>
+ </sequenceOf>
+ </type>
+ </expanded>
+ </type>
+ </namedType>
+
+ </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:
+
+ <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>
+
+ </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.
+
+
+
+
+
+Legg Experimental [Page 90]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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.
+
+ Example
+
+ Consider these type definitions, assumed to be defined in a module
+ that does not have an XER encoding control section:
+
+ Tree { ValueType } ::= SEQUENCE {
+ value [0] ValueType,
+ left-subtree [1] Tree { ValueType } OPTIONAL,
+ right-subtree [2] Tree { ValueType } OPTIONAL
+ }
+
+ 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:
+
+ <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:
+
+ SEQUENCE {
+ value [0] ValueType,
+ left-subtree [1] Tree { ValueType } OPTIONAL,
+ right-subtree [2] Tree { ValueType } OPTIONAL
+ }
+
+
+
+
+Legg Experimental [Page 91]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ ValueType is a DummyReference. The translation of the actual
+ parameter substitutes for the DummyReference. In this case, the
+ actual parameter is the INTEGER type.
+
+ The translation for the SEQUENCE type, up to the first component,
+ is added to the <tagged> element:
+
+ <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.
+
+ 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 -->
+
+
+
+Legg Experimental [Page 92]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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
+
+ 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.
+
+ 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.
+
+ Encoding control sections for other encoding rules will have
+ explicit representations in ASN.X.
+
+
+
+
+
+Legg Experimental [Page 93]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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.
+
+ 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].
+
+ Aside: The translation of an EncodingInstructionAssignmentList for
+ GSER, as it is currently defined, is always empty.
+
+ 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].
+
+15. Security Considerations
+
+ 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.
+
+ 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].
+
+16. Acknowledgements
+
+ 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.
+
+
+
+
+
+
+Legg Experimental [Page 94]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+17. References
+
+17.1. Normative References
+
+ [BCP14] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [URI] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
+ Resource Identifiers (URI): Generic Syntax", STD 66, RFC
+ 3986, January 2005.
+
+ [GSER] Legg, S., "Generic String Encoding Rules (GSER) for ASN.1
+ Types", RFC 3641, October 2003.
+
+ [GSEREI] Legg, S., "Encoding Instructions for the Generic String
+ Encoding Rules (GSER)", RFC 4792, January 2007.
+
+ [RXER] Legg, S. and D. Prager, "Robust XML Encoding Rules (RXER)
+ for Abstract Syntax Notation One (ASN.1)",
+ RFC 4910, July 2007.
+
+ [RXEREI] Legg, S., "Encoding Instructions for the Robust XML
+ Encoding Rules (RXER)",
+ RFC 4911, July 2007.
+
+ [GSEREIT] Legg, S., "Abstract Syntax Notation X (ASN.X)
+ Representation of Encoding Instructions for the Generic
+ String Encoding Rules (GSER)",
+ RFC 4913, July 2007.
+
+ [XEREIT] Legg, S., "Abstract Syntax Notation X (ASN.X)
+ Representation of Encoding Instructions for the XML
+ Encoding Rules (XER)",
+ RFC 4914, July 2007.
+
+ [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-1] ITU-T Recommendation X.680 (2002) Amendment 1 (10/03) |
+ ISO/IEC 8824-1:2002/Amd 1:2004, Support for EXTENDED-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.
+
+
+
+
+
+
+Legg Experimental [Page 95]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ [X.682] ITU-T Recommendation X.682 (07/02) | ISO/IEC 8824-3,
+ Information technology - Abstract Syntax Notation One
+ (ASN.1): Constraint specification.
+
+ [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.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-1] Amendment 1: (to ITU-T Rec. X.693 | ISO/IEC 8825-4) XER
+ encoding instructions and EXTENDED-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.
+
+ [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.
+
+ [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.
+
+ [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.
+
+ [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.
+
+ [UNICODE] The Unicode Consortium, "The Unicode Standard, Version
+ 4.0", Boston, MA, Addison-Wesley Developers Press, 2003.
+ ISBN 0-321-18578-1.
+
+
+
+
+
+
+Legg Experimental [Page 96]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+17.2. Informative References
+
+ [CXML] Boyer, J., "Canonical XML Version 1.0", W3C
+ Recommendation,
+ http://www.w3.org/TR/2001/REC-xml-c14n-20010315, March
+ 2001.
+
+ [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.
+
+ [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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 97]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+Appendix A. ASN.1 for ASN.X
+
+ 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) }
+
+ -- 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
+
+ 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)
+
+
+
+Legg Experimental [Page 98]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+ }
+
+ ModuleReference ::= TypeReference
+
+ DefinitiveIdentifier ::= OBJECT IDENTIFIER
+
+ TagDefault ::= ENUMERATED { explicit, implicit, automatic }
+
+ Annotation ::= Markup
+
+ 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
+ }
+
+ AssignmentList ::= SEQUENCE SIZE (1..MAX) OF
+ assignment [GROUP] Assignment
+
+ Assignment ::= [NO-INSERTIONS] CHOICE {
+ namedType TypeAssignment,
+ namedValue ValueAssignment,
+ namedValueSet ValueSetTypeAssignment,
+ namedClass ObjectClassAssignment,
+ namedObject ObjectAssignment,
+
+
+
+Legg Experimental [Page 99]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ namedObjectSet ObjectSetAssignment,
+ component [GROUP] TopLevelNamedType
+ }
+
+ 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]
+
+ ValueAssignment ::= SEQUENCE {
+ annotation Annotation OPTIONAL,
+ name [ATTRIBUTE] ValueReference,
+ type [GROUP] Type,
+ value [GROUP] Value
+ }
+
+ ValueReference ::= Identifier
+
+ Identifier ::= UTF8String (PATTERN "[a-z]\w(-\w+)*")
+
+ 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
+ }
+
+ 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
+ }
+
+ ObjectReference ::= ValueReference
+
+
+
+Legg Experimental [Page 100]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ ObjectSetAssignment ::= SEQUENCE {
+ annotation Annotation OPTIONAL,
+ name [ATTRIBUTE] ObjectSetReference,
+ objectClass [GROUP] DefinedObjectClass,
+ objectSet [GROUP] ObjectSet
+ }
+
+ 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 })
+
+ 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 }) }) })
+
+ Element ::= GenericNamedType
+ (WITH COMPONENTS { ...,
+ definition (WITH COMPONENTS { ...,
+ local (WITH COMPONENTS { ...,
+ versionIndicator ABSENT }) }) })
+
+
+
+
+
+Legg Experimental [Page 101]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+ }
+ }
+
+ 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 })
+
+ 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
+ }
+
+
+
+
+Legg Experimental [Page 102]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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 })
+
+ ExpandedType ::= SEQUENCE {
+ name [ATTRIBUTE] NCName OPTIONAL,
+ module ReferencedModule OPTIONAL,
+ type [GROUP] Type
+ }
+
+ ReferencedModule ::= SEQUENCE {
+
+
+
+Legg Experimental [Page 103]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ name [ATTRIBUTE] ModuleReference OPTIONAL,
+ identifier [ATTRIBUTE] DefinitiveIdentifier OPTIONAL,
+ schemaIdentity [ATTRIBUTE] AnyURI OPTIONAL
+ }
+
+ NamedBitList ::= SEQUENCE SIZE (1..MAX) OF namedBit NamedBit
+
+ NamedBit ::= SEQUENCE {
+ name [ATTRIBUTE] NCName,
+ identifier [ATTRIBUTE] Identifier OPTIONAL,
+ bit [ATTRIBUTE] INTEGER (0..MAX)
+ }
+
+ NamedNumberList ::= SEQUENCE SIZE (1..MAX) OF
+ namedNumber NamedNumber
+
+ 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
+ }
+
+ Enumeration ::= SEQUENCE SIZE (1..MAX) OF
+ enumeration EnumerationItem
+
+ 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
+ }
+
+ TaggedType ::= SEQUENCE {
+ COMPONENTS OF Tag,
+ type [GROUP] Type
+
+
+
+Legg Experimental [Page 104]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ }
+
+ TagClass ::= ENUMERATED { universal, application, private }
+
+ Tagging ::= ENUMERATED { explicit, implicit }
+
+ EncodingPrefixedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
+ prefixes [GROUP] EncodingPrefixes,
+ type [GROUP] Type
+ }
+
+ 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
+ }
+
+ 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
+
+ ObjectClassFieldType ::= SEQUENCE {
+ objectClass [GROUP] DefinedObjectClass,
+ fieldName [GROUP] FieldName
+ }
+
+ FieldName ::= [SINGULAR-INSERTIONS] CHOICE {
+ fieldNameAtt [NAME AS "fieldName"]
+ [ATTRIBUTE] PrimitiveFieldNames,
+ fieldName PrimitiveFieldNames
+ }
+
+ PrimitiveFieldNames ::= UTF8String
+
+
+
+
+Legg Experimental [Page 105]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ InformationFromObjects ::= [HOLLOW-INSERTIONS] SEQUENCE {
+ referencedObjects [GROUP] ReferencedObjects,
+ fieldName [GROUP] FieldName
+ }
+
+ ReferencedObjects ::= [SINGULAR-INSERTIONS] CHOICE {
+ object [GROUP] Object,
+ objectSet [GROUP] ObjectSet
+ }
+
+ 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
+ }
+
+ 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
+ }
+
+ SequenceNamedType ::= NamedType
+ (WITH COMPONENTS { ..., member ABSENT, item ABSENT })
+
+ ExtensionAdditions ::= SEQUENCE SIZE (1..MAX) OF
+ addition [GROUP] ExtensionAddition
+
+ ExtensionAddition ::= [NO-INSERTIONS] CHOICE {
+ extensionGroup ExtensionAdditionGroup,
+ componentType [GROUP] ComponentType
+ }
+
+
+
+
+Legg Experimental [Page 106]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ ExtensionAdditionGroup ::= [HOLLOW-INSERTIONS] SEQUENCE {
+ version [ATTRIBUTE] VersionNumber OPTIONAL,
+ componentTypes [GROUP] ComponentTypeList
+ }
+
+ VersionNumber ::= INTEGER (2..MAX)
+
+ 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
+ }
+
+ PrecedenceList ::= [LIST] SEQUENCE SIZE (1..MAX) OF member QName
+
+ AlternativeTypeList ::= SEQUENCE SIZE (1..MAX) OF
+ component [GROUP] ChoiceOrUnionNamedType
+
+ ChoiceOrUnionNamedType ::= NamedType
+ (WITH COMPONENTS { ..., item ABSENT, simpleContent ABSENT })
+
+ ExtensionAdditionAlternatives ::= SEQUENCE SIZE (1..MAX) OF
+ addition [GROUP] ExtensionAdditionAlternative
+
+ ExtensionAdditionAlternative ::= [NO-INSERTIONS] CHOICE {
+ extensionGroup ExtensionAdditionAlternativesGroup,
+ component [GROUP] ChoiceOrUnionNamedType
+ }
+
+ 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
+
+
+
+Legg Experimental [Page 107]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ (INCLUDES ChoiceNamedType)) }),
+ component (INCLUDES ChoiceNamedType) })) }) })
+
+ 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) })) }) })
+
+ 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 })
+ }
+
+ SequenceOfType ::= SequenceOfOrListType
+ (WITH COMPONENTS { ...,
+ component (WITH COMPONENTS { ..., item ABSENT }) })
+
+ SetOfType ::= SequenceOfType
+
+ ListType ::= SequenceOfOrListType
+ (WITH COMPONENTS { ...,
+ component (WITH COMPONENTS { ...,
+ component ABSENT,
+ element ABSENT,
+ group ABSENT }) })
+
+ ConstrainedType ::= [HOLLOW-INSERTIONS] SEQUENCE {
+
+
+
+Legg Experimental [Page 108]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+ }
+
+ UserDefinedConstraint ::= [HOLLOW-INSERTIONS] SEQUENCE {
+ annotation Annotation OPTIONAL,
+ parameters [GROUP] ConstraintParameters OPTIONAL
+ }
+
+ 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
+ }
+ }
+
+ TableConstraint ::= SEQUENCE {
+
+
+
+Legg Experimental [Page 109]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ objectSet [GROUP] ObjectSet,
+ componentRelation [GROUP] AtNotations OPTIONAL
+ }
+
+ AtNotations ::= SEQUENCE SIZE (1..MAX) OF
+ restrictBy AtNotation
+
+ AtNotation ::= Markup
+
+ ContentsConstraint ::= SEQUENCE {
+ containing Type OPTIONAL,
+ encodedBy Value OPTIONAL
+ } ((WITH COMPONENTS { ..., containing PRESENT }) |
+ (WITH COMPONENTS { ..., encodedBy PRESENT }))
+
+ 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
+ }
+
+ 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
+ }
+ }
+
+ Reference ::= SEQUENCE {
+ ref [ATTRIBUTE] QName,
+ context [ATTRIBUTE] AnyURI OPTIONAL
+
+
+
+Legg Experimental [Page 110]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ }
+
+ ExpandedValue ::= SEQUENCE {
+ name [ATTRIBUTE] NCName OPTIONAL,
+ module ReferencedModule OPTIONAL,
+ value [GROUP] Value
+ }
+
+ 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
+ }
+
+ 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
+ }
+
+ 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
+ }
+
+ ValueElementSetSpec ::= ElementSetSpec
+ (WITH COMPONENTS { ...,
+
+
+
+Legg Experimental [Page 111]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ object ABSENT,
+ objectSet ABSENT,
+ union (WITH COMPONENT (INCLUDES ValueElementSetSpec)),
+ intersection (WITH COMPONENT (INCLUDES ValueElementSetSpec)),
+ all (WITH COMPONENTS { ...,
+ elements (INCLUDES ValueElementSetSpec),
+ except (INCLUDES 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
+ }
+ }
+
+ 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:{}
+ }
+
+ EndValue ::= [HOLLOW-INSERTIONS] SEQUENCE {
+ value [GROUP] Value OPTIONAL
+ }
+
+ MultipleTypeConstraints ::= [HOLLOW-INSERTIONS] SEQUENCE {
+
+
+
+Legg Experimental [Page 112]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ partial [ATTRIBUTE] BOOLEAN DEFAULT FALSE,
+ typeConstraints [GROUP] TypeConstraints
+ }
+
+ 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
+ }
+
+ GenericNamedConstraint ::= [HOLLOW-INSERTIONS] SEQUENCE {
+ name [ATTRIBUTE] QName,
+ use [ATTRIBUTE] PresenceConstraint OPTIONAL,
+ constraint [GROUP] Constraint OPTIONAL
+ }
+
+ PresenceConstraint ::= ENUMERATED { present, absent, optional }
+
+ ObjectClass ::= [SINGULAR-INSERTIONS] CHOICE {
+ classRef [NAME AS "class"] [ATTRIBUTE] QName,
+ class ElementFormObjectClass
+ }
+
+ 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
+ }
+ }
+
+ ExpandedObjectClass ::= SEQUENCE {
+ name [ATTRIBUTE] NCName OPTIONAL,
+ module ReferencedModule OPTIONAL,
+
+
+
+Legg Experimental [Page 113]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ objectClass [GROUP] ObjectClass
+ }
+
+ 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
+ }
+
+ 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 { ...,
+
+
+
+Legg Experimental [Page 114]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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 }) })
+
+ TypeField ::= SEQUENCE {
+ annotation Annotation OPTIONAL,
+ name [ATTRIBUTE] TypeFieldReference
+ }
+
+ 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 }) }))
+
+ ValueFieldReference ::= ValueReference
+
+ ValueSetField ::= SEQUENCE {
+ annotation Annotation OPTIONAL,
+ name [ATTRIBUTE] ValueSetFieldReference,
+ governor [GROUP] [SINGULAR-INSERTIONS] CHOICE {
+ type [GROUP] Type,
+ typeFromField FieldName
+ }
+ }
+
+ ValueSetFieldReference ::= TypeReference
+
+ ObjectField ::= SEQUENCE {
+ annotation Annotation OPTIONAL,
+ name [ATTRIBUTE] ObjectFieldReference,
+ objectClass [GROUP] DefinedObjectClass
+
+
+
+Legg Experimental [Page 115]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ }
+
+ ObjectFieldReference ::= ObjectReference
+
+ ObjectSetField ::= SEQUENCE {
+ annotation Annotation OPTIONAL,
+ name [ATTRIBUTE] ObjectSetFieldReference,
+ objectClass [GROUP] DefinedObjectClass
+ }
+
+ ObjectSetFieldReference ::= ObjectSetReference
+
+ 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
+ }
+ }
+
+ ExpandedObject ::= SEQUENCE {
+ name [ATTRIBUTE] NCName OPTIONAL,
+ module ReferencedModule OPTIONAL,
+ object [GROUP] Object
+ }
+
+ ObjectDefn ::= SEQUENCE OF field FieldSetting
+
+ 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
+ }
+
+
+
+
+Legg Experimental [Page 116]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+ }
+ }
+
+ 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 }))
+
+ 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
+
+
+
+Legg Experimental [Page 117]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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
+ }
+
+ ENCODING-CONTROL 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"
+
+ COMPONENT module ModuleDefinition
+
+ COMPONENT literal [ATTRIBUTE] BOOLEAN
+
+ END
+
+Appendix B. ASN.X for 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">
+
+ <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.
+
+ 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>
+
+
+
+
+Legg Experimental [Page 118]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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"/>
+
+ <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>
+
+
+
+Legg Experimental [Page 119]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="DefinitiveIdentifier"
+ type="asnx:OBJECT-IDENTIFIER"/>
+
+ <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="ImportList">
+ <type>
+ <sequenceOf minSize="1">
+ <element name="import" type="asnx:Import"/>
+ </sequenceOf>
+ </type>
+ </namedType>
+
+ <namedType name="Import">
+
+
+
+Legg Experimental [Page 120]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 121]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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="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"/>
+
+
+
+Legg Experimental [Page 122]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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="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"/>
+
+
+
+Legg Experimental [Page 123]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <group name="objectSet" type="asnx:ObjectSet"/>
+ </sequence>
+ </type>
+ </namedType>
+
+ <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="NamedType">
+
+
+
+Legg Experimental [Page 124]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 125]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="IdentifierOrEmpty">
+ <type>
+ <constrained type="asnx:UTF8String">
+ <union>
+ <includes type="asnx:Identifier"/>
+ <literalValue></literalValue>
+ </union>
+
+
+
+Legg Experimental [Page 126]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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>
+
+
+
+Legg Experimental [Page 127]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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"/>
+
+
+
+Legg Experimental [Page 128]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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>
+
+
+
+Legg Experimental [Page 129]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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"/>
+
+
+
+Legg Experimental [Page 130]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </optional>
+ </sequence>
+ </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="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>
+
+
+
+Legg Experimental [Page 131]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 132]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 133]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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"/>
+
+
+
+Legg Experimental [Page 134]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </sequence>
+ </type>
+ </namedType>
+
+ <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="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="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="Insertions">
+ <type>
+ <enumerated>
+
+
+
+Legg Experimental [Page 135]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="ComponentTypeList">
+ <type>
+ <sequenceOf minSize="1">
+
+
+
+Legg Experimental [Page 136]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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="ExtensionAddition">
+ <type>
+ <choice insertions="none">
+ <element name="extensionGroup"
+ type="asnx:ExtensionAdditionGroup"/>
+
+
+
+Legg Experimental [Page 137]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="VersionNumber">
+ <type>
+ <constrained type="asnx:INTEGER">
+ <range>
+ <minInclusive literalValue="2"/>
+ </range>
+ </constrained>
+ </type>
+ </namedType>
+
+ <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"/>
+
+
+
+Legg Experimental [Page 138]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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="ExtensionAdditionAlternatives">
+ <type>
+ <sequenceOf minSize="1">
+ <group name="addition" type="asnx:ExtensionAdditionAlternative"/>
+ </sequenceOf>
+ </type>
+ </namedType>
+
+ <namedType name="ExtensionAdditionAlternative">
+ <type>
+ <choice insertions="none">
+ <element name="extensionGroup"
+
+
+
+Legg Experimental [Page 139]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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="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>
+
+
+
+Legg Experimental [Page 140]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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>
+
+
+
+Legg Experimental [Page 141]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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"/>
+
+
+
+Legg Experimental [Page 142]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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="ConstrainedType">
+ <type>
+ <sequence insertions="hollow">
+ <group name="type" type="asnx:Type"/>
+ <group name="constraint" type="asnx:Constraint"/>
+ </sequence>
+
+
+
+Legg Experimental [Page 143]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="ConstraintParameters">
+ <type>
+ <sequenceOf minSize="1">
+ <group name="parameter"
+ type="asnx:UserDefinedConstraintParameter"/>
+ </sequenceOf>
+ </type>
+ </namedType>
+
+ <namedType name="UserDefinedConstraintParameter">
+ <type>
+
+
+
+Legg Experimental [Page 144]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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>
+
+
+
+Legg Experimental [Page 145]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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>
+
+
+
+Legg Experimental [Page 146]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 147]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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="NamedValue">
+ <type>
+ <choice insertions="singular">
+ <element name="component" type="asnx:GenericNamedValue"/>
+ <element name="element" type="asnx:GenericNamedValue"/>
+
+
+
+Legg Experimental [Page 148]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 149]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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>
+
+
+
+Legg Experimental [Page 150]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="ValueRange">
+ <type>
+ <sequence>
+ <optional>
+ <group name="minimum">
+
+
+
+Legg Experimental [Page 151]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="MultipleTypeConstraints">
+ <type>
+ <sequence insertions="hollow">
+ <optional>
+ <attribute name="partial" type="asnx:BOOLEAN"/>
+ <default literalValue="false"/>
+
+
+
+Legg Experimental [Page 152]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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="PresenceConstraint">
+ <type>
+ <enumerated>
+ <enumeration name="present"/>
+ <enumeration name="absent"/>
+
+
+
+Legg Experimental [Page 153]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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>
+
+
+
+Legg Experimental [Page 154]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ </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="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"/>
+
+
+
+Legg Experimental [Page 155]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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>
+
+
+
+Legg Experimental [Page 156]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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>
+
+
+
+Legg Experimental [Page 157]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <element name="annotation" type="asnx:Annotation"/>
+ </optional>
+ <attribute name="name" type="asnx:TypeFieldReference"/>
+ </sequence>
+ </type>
+ </namedType>
+
+ <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="ValueFieldReference" type="asnx:ValueReference"/>
+
+
+
+Legg Experimental [Page 158]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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="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"
+
+
+
+Legg Experimental [Page 159]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ 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="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="ObjectDefn">
+
+
+
+Legg Experimental [Page 160]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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="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"/>
+
+
+
+Legg Experimental [Page 161]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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="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">
+
+
+
+Legg Experimental [Page 162]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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>
+
+
+
+Legg Experimental [Page 163]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+ <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>
+
+ <element name="module" type="asnx:ModuleDefinition"/>
+
+ <attribute name="literal" type="asnx:BOOLEAN"/>
+
+ </asnx:module>
+
+Author's Address
+
+ Dr. Steven Legg
+ eB2Bcom
+ Suite 3, Woodhouse Corporate Centre
+ 935 Station Street
+ Box Hill North, Victoria 3129
+ AUSTRALIA
+
+ Phone: +61 3 9896 7830
+ Fax: +61 3 9896 7801
+ EMail: steven.legg@eb2bcom.com
+
+
+
+
+
+
+
+
+
+
+
+
+Legg Experimental [Page 164]
+
+RFC 4912 Abstract Syntax Notation X July 2007
+
+
+Full Copyright Statement
+
+ Copyright (C) The IETF Trust (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.
+
+ 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.
+
+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.
+
+ 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.
+
+ 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.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+Legg Experimental [Page 165]
+