view Side-By-Side changes
INTERNET-DRAFT S. Leggdraft-legg-xed-asd-03.txtdraft-legg-xed-asd-04.txt eB2Bcom Intended Category: Standards TrackD. Prager April 11,July 14, 2005ASN.1 Schema: An XML Representation forAbstract Syntax NotationOne (ASN.1) SpecificationsX (ASN.X) Copyright (C) The Internet Society (2005). Status of this Memo By submitting this Internet-draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. By submitting this Internet-draft, I accept the provisions of Section 3 of BCP 78. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress". The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html Technical discussion of this document should take place on the XED developers mailing list <xeddev@eb2bcom.com>. Please send editorial comments directly to the editor <steven.legg@eb2bcom.com>. Further information is available on the XED website: www.xmled.info. This Internet-Draft expires on11 October 2005.14 January 2006. AbstractThis document definesAbstract Syntax Notation X (ASN.X) is a semantically equivalent Extensible MarkupLegg & Prager Expires 11 October 2005 [Page 1] INTERNET-DRAFT ASN.1 Schema April 11, 2005Language (XML) representation for Abstract Syntax Notation One (ASN.1)specifications called ASN.1 Schema. ASN.1 Schemaspecifications. ASN.X completely avoids the Legg Expires 14 January 2006 [Page 1] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 numerous ambiguities inherent in the ASN.1 language, thereforeASN.1 SchemaASN.X documents are much easier to parse and manage than original ASN.1 specifications. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . .43 2. Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. General Considerations . . . . . . . . . . . . . . . . . . . . 5 4. ModuleDefinition Translation . . . . . . . . . . . . . . . . .67 5. Translation of Assignments . . . . . . . . . . . . . . . . . .810 5.1. Referencing Named Constructs . . . . . . . . . . . . . .810 5.2. Importing Namespaces . . . . . . . . . . . . . . . . . .911 5.3. TypeAssignment Translation . . . . . . . . . . . . . . .1012 5.4. ValueAssignment and XMLValueAssignment Translation . . .1012 5.5. ValueSetTypeAssignment Translation . . . . . . . . . . .1112 5.6. ObjectClassAssignment Translation. . . . . . . . . . . .1113 5.7. ObjectAssignment Translation . . . . . . . . . . . . . .1213 5.8. ObjectSetAssignment Translation. . . . . . . . . . . . .1214 5.9. Parameterized Assignments. . . . . . . . . . . . . . . .1314 6. Translation of Types . . . . . . . . . . . . . . . . . . . . .1315 6.1. Identifier Replacement . . . . . . . . . . . . . . . . .1415 6.2. DefinedType Translation. . . . . . . . . . . . . . . . .1416 6.3. Translation of Predefined Types. . . . . . . . . . . . .2022 6.4. BitStringType Translation. . . . . . . . . . . . . . . .2223 6.5. IntegerType Translation. . . . . . . . . . . . . . . . .2325 6.6. EnumeratedType Translation . . . . . . . . . . . . . . .2426 6.7. PrefixedType Translation . . . . . . . . . . . . . . . .2527 6.7.1. TaggedType Translation . . . . . . . . . . . . .2729 6.8. SelectionType Translation . . . . . . . . . . . . . . .2830 6.9. InstanceOfType Translation . . . . . . . . . . . . . . .2931 6.10. ObjectClassFieldType Translation . . . . . . . . . . . .2931 6.11. TypeFromObject and ValueSetFromObjects Translation . . .3032 6.12. Translation of Combining Types . . . . . . . . . . . . .3032 6.12.1. NamedType Translation . . . . . . . . . . . . .3032 6.12.2. SequenceType Translation. . . . . . . . . . . .3335 6.12.3. SetType Translation . . . . . . . . . . . . . .3537 6.12.4. ChoiceType Translation. . . . . . . . . . . . .3537 6.12.5. Translation of UNION Types. . . . . . . . . . .3638 6.12.6. SequenceOfType Translation. . . . . . . . . . .3739 6.12.7. Translation of LIST Types . . . . . . . . . . .3840 6.12.8. SetOfType Translation . . . . . . . . . . . . .3840 6.13. Translation of Constrained Types . . . . . . . . . . . .3840 6.13.1. Constraint Translation. . . . . . . . . . . . .4042 6.13.2. UserDefinedConstraint Translation . . . . . . .4043 6.13.3. TableConstraint Translation . . . . . . . . . .41 Legg & Prager Expires 11 October 2005 [Page 2] INTERNET-DRAFT ASN.1 Schema April 11, 200543 6.13.4. ContentsConstraint Translation. . . . . . . . .4345 6.13.5. ExceptionSpec Translation . . . . . . . . . . .4346 Legg Expires 14 January 2006 [Page 2] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 6.14. Tag Defaults and Extension Defaults. . . . . . . . . . .4446 7. Translation of Values. . . . . . . . . . . . . . . . . . . . .4548 7.1. Translation of Literal Values. . . . . . . . . . . . . .4749 7.2. Translation ofMeta-values . . .Notational Values . . . . . . . . . . . .4851 7.2.1. DefinedValue Translation . . . . . . . . . . . .4852 7.2.2. BuiltinValue Translation . . . . . . . . . . . .5053 7.2.3. ValueFromObject Translation. . . . . . . . . . .5256 7.2.4. ObjectClassFieldValue Translation. . . . . . . .5356 8. Translation of Value Sets. . . . . . . . . . . . . . . . . . .5357 8.1. ElementSetSpecs Translation. . . . . . . . . . . . . . .5458 8.2. ElementSetSpec Translation . . . . . . . . . . . . . . .5458 8.3. SubtypeElements Translation. . . . . . . . . . . . . . .5559 8.3.1. ValueRange Translation . . . . . . . . . . . . .5660 8.3.2. InnerTypeConstraints Translation . . . . . . . .5761 9. Translation of Object Classes. . . . . . . . . . . . . . . . .5862 9.1. DefinedObjectClass Translation . . . . . . . . . . . . .5962 9.2. ObjectClassDefn Translation. . . . . . . . . . . . . . .6063 9.2.1. TypeFieldSpec Translation. . . . . . . . . . . .6064 9.2.2. FixedTypeValueFieldSpec Translation. . . . . . .6164 9.2.3. FixedTypeValueSetFieldSpec Translation . . . . .6266 9.2.4. VariableTypeValueFieldSpec Translation . . . . .6367 9.2.5. VariableTypeValueSetFieldSpec Translation. . . .6468 9.2.6. FieldName Translation. . . . . . . . . . . . . .6569 9.2.7. ObjectFieldSpec Translation. . . . . . . . . . .6670 9.2.8. ObjectSetFieldSpec Translation . . . . . . . . .6771 10. Translation of Objects . . . . . . . . . . . . . . . . . . . .6872 10.1. DefinedObject Translation . . . . . . . . . . . . . . .6872 10.2. ObjectDefn Translation. . . . . . . . . . . . . . . . .6973 10.3. ObjectFromObject Translation. . . . . . . . . . . . . .7175 11. Translation of Object Sets . . . . . . . . . . . . . . . . . .7175 11.1. DefinedObjectSet Translation. . . . . . . . . . . . . .7276 11.2. ObjectSetElements Translation . . . . . . . . . . . . .7377 11.2.1. ObjectSetFromObjects Translation . . . . . . .7378 12. Translation of Information From Objects. . . . . . . . . . . .7478 13. EncodingControlSection Translation . . . . . . . . . . . . . .7479 14. Security Considerations. . . . . . . . . . . . . . . . . . . .7579 15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .7580 16. IANA Considerations. . . . . . . . . . . . . . . . . . . . . .7580 Appendix A. ASN.1 forASN.1 SchemaASN.X. . . . . . . . . . . . . . . . .76 Appendix B. ASN.1 Schema for ASN.1 Schema. .. . . 80 Appendix B. ASN.X for ASN.X. . . . . . . . .93 Appendix C. An XML Schema for ASN.1 Schema. . . . . . . . . . ..13498 Normative References . . . . . . . . . . . . . . . . . . . . . ..134.139 Informative Reference . . . . . . . . . . . . . . . . . . . . ..136.141 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . ..136.141 Full Copyright Statement . . . . . . . . . . . . . . . . . . . ..136 Legg & Prager Expires 11 October 2005 [Page 3] INTERNET-DRAFT ASN.1 Schema April 11, 2005.141 1. Introduction A full parser for the Abstract Syntax Notation One (ASN.1) language Legg Expires 14 January 2006 [Page 3] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 [X.680] 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. In general such ambiguities can only be resolved once the entire specification has been parsed.The difficulty of parsing ASN.1 is an impediment to its wider adoption. This documentThere are other notations which 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)[XML][XML10][XML11] representation for ASN.1 specifications calledASN.1 Schema. ASN.1 SchemaAbstract Syntax Notation X (ASN.X). ASN.X completely avoids the inherent ambiguities of the ASN.1 language, thereforeASN.1 SchemaASN.X documents 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. AnASN.1 SchemaASN.X document is a well-formed and valid XML document[XML]conforming to XML namespaces[XMLNS]. ASN.1 Schema,[XMLNS10][XMLNS11]. ASN.X, together with the Robust XML Encoding Rules (RXER) [RXER], constitutes a schema language for XML documents that automatically provides more compact binary encodings for XML instance documents conforming toASN.1 Schema. ASN.1 SchemaASN.X. ASN.X definitions can also incorporatetypetype, element and attribute definitions from XML Schema [XSD1], RELAX NG [RNG] or Document Type Definitions (DTDs)[XML]. ASN.1 Schema[XML10][XML11]. ASN.X is defined in terms of rules for translating from an ASN.1 specification. This does not preclude anASN.1 SchemaASN.X document being written directly without a pre-existing ASN.1 specification, however such anASN.1 SchemaASN.X document is considered valid if and only if there exists in principle an ASN.1 specification which when translated would yield theASN.1 SchemaASN.X document. The format forASN.1 SchemaASN.X has also been designed so that the content of anASN.1 SchemaASN.X document 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 anASN.1 SchemaASN.X document using an RXER decoder and then re-encode the abstract value (for storage or 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. Legg& PragerExpires11 October 200514 January 2006 [Page 4] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 TheASN.1 SchemaASN.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","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 specification intoASN.1 Schemaan ASN.X document makes use of definitions from the XML Information Set (Infoset) [ISET]. In particular, information item property names are presented per the Infoset, e.g., [local name]. In the sections that follow,the term "element" shall"information item" will betakenabbreviated tomean an Infoset element"item", e.g., "element informationitem and "attribute" shallitem" is abbreviated to "element item". Element items will betakenreferred tomean an Infoset attribute information item. The [namespaceby their [local name]of anyin angle brackets, e.g., "the <type> elementor attribute generateditem" 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 thetranslation from an ASN.1 specification has no value unless specified otherwise.attribute item with the [local name] "type". This document uses the namespace prefix "asn1:" to stand for the namespace name "http://xmled.info/ns/ASN.1", though in practice any valid namespace prefix is permitted inASN.1 Schema.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. 3. General ConsiderationsApart from the [document element]ASN.X is defined in terms of rules for translating an ASN.1Schemaspecification into a synthetic Infoset. This synthetic Infoset is then serialized into a well-formed and valid XML documentinformation item,(the ASN.X document) in thetranslation of some ASN.1 construct belongs tosame manner that thecontent ofsynthetic Infoset for a Legg Expires 14 January 2006 [Page 5] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 non-canonical RXER encoding is serialized into anenclosing element. Where the translationXML document (see Section 5.11 of the specification for RXER [RXER]). ASIDE: The serialization permits CDATA sections, character references and parsed entity references. However, note that an ASN.X document 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 document, the translation of some ASN.1 construct belongs to the content of an enclosing element item. Where the translation of the construct is anelement,element item, it is appended to the [children] of the enclosingelement.element item. Elements MUST be appended tothe [children]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 character items 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". ASIDE: In most cases RXER itself permits comment and PI items in the [children] of element items with the [local name] "literalValue". ASIDE: Note that an ASN.X document may be transferred as data in a protocol and that some protocols disallow processing instructions. Legg Expires 14 January 2006 [Page 6] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 The [in-scope namespaces] and [namespace attributes] for <literalValue> and <restrictBy> element items are determined according to Section 5.9 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 5.3.1.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 5.3.1.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 5.3.2.1 of theenclosing element in the order described. Translators MAY add white space character information items (i.e., U+0020, U+0009, U+000Dspecification for RXER. ASIDE: Non-canonical RXER allows all valid namespace prefixes andU+000A)all valid placements for their corresponding namespace declaration attributes. Whenever an element item is added to the [children] ofthean enclosing elementto improveitem theLegg & Prager Expires 11 October 2005 [Page 5] INTERNET-DRAFT ASN.1 Schema April 11, 2005 layout. Whereenclosing element item becomes thetranslation[parent] of theconstruct iselement item. Whenever an attributeititem is added to the [attributes] ofthe enclosing element. The order of attributes is not significant. An ASN.1 Schema document is permitted to contain XML comments, processing instructions (PIs), CDATA sections, character references and parsed entity references in any position allowed for a well- formed and valid XML document [XML]. However, note thatanASN.1 Schema definition may be transferred as data in a protocol and that some protocols disallow processing instructions and entity references. Anyelementin an ASN.1 Schema documentitem the element item becomes the [owner element] of the attribute item. For each attribute item, the [specified] property ispermittedset tohave namespace declaration attributes [XMLNS]. Namespace declarations fortrue, thenamespace prefixes used in[attribute type] has no value and thetranslationvalue ofan ASN.1 module into an ASN.1 Schema document are REQUIRED.the [references] property is unknown. 4. ModuleDefinition Translation The translation of a ModuleDefinition [X.680] (an ASN.1 module) is a documentinformationitem. The [document element] of the documentinformationitem is an element item with the [local name]"schema""module" and the [namespace name] "http://xmled.info/ns/ASN.1". An ASN.1 module has a schema identity URI if it has 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 [document element] (i.e., the<asn1:schema> element).<asn1:module> element item). The [normalized value] of this Legg Expires 14 January 2006 [Page 7] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 attribute item is the schema identity URI of the module. An ASN.1 module has a target namespace if it has a TARGET-NAMESPACE encoding instruction, in which case the target namespace is the character string specified by the AnyURIValue of the TARGET-NAMESPACE encoding instruction. If the ASN.1 module being translated has a target namespace then an attribute item with the [local name] "targetNamespace" SHALL be added to the [attributes] of the [documentelement] (i.e., the <asn1:schema> element).element]. The [normalized value] of this attribute item is the target namespace of the module. In examples in thefollowing sectionsremainder of this document the namespace prefix "tns:" is used to stand for the target namespace of the module beingLegg & Prager Expires 11 October 2005 [Page 6] INTERNET-DRAFT ASN.1 Schema April 11, 2005translated. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the [document element]. 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 [document element]. The [normalized value] of this attribute item is the RXER character data translation [RXER]encodingof 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 [document element]. 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 [document element]. The [normalized value] of this attribute item is the first keyword in the TagDefault, 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 [document element]. If the ExtensionDefault in the ModuleDefinition is not empty then an attribute item with the [local name] "extensibilityImplied" and Legg Expires 14 January 2006 [Page 8] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 [normalized value] "true" or "1" SHALL be added to the [attributes] of the [document element]. 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 [document element]. 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 [document element]. If the EncodingControlSections in the ModuleDefinition contains an EncodingControlSection for RXER then the translation of each NamedType in a TopLevelComponent [RXEREI] in a TopLevelComponents in the EncodingInstructionAssignmentList SHALL be added to the [children] of the [document element]. The relative order of the top level components SHOULD be preserved in the translation, however theLegg & Prager Expires 11 October 2005 [Page 7] INTERNET-DRAFT ASN.1 Schema April 11, 2005translations of the top level components MAY be interspersed with the translations of the assignments in the AssignmentList. The translation of each EncodingControlSection in the EncodingControlSections in the ModuleDefinition of the module being translated SHALL be appended to the [children] of the [document element]. 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<asn1:schema<asn1:module xmlns:asn1="http://xmled.info/ns/ASN.1" name="MyModule" schemaIdentity="http://example.com/id/MyModule" targetNamespace="http://example.com/ns/MyModule" Legg Expires 14 January 2006 [Page 9] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 tagDefault="IMPLICIT" extensibilityImplied="true"> <namedType name="MyType" type="asn1:INTEGER"/> <element name="myElement" type="asn1:INTEGER"/></asn1:schema></asn1: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. InASN.1 Schema,ASN.X, the translation of the Assignment is regarded as associating a qualified name[XMLNS][XMLNS10][XMLNS11] with the Type, Value, ValueSet, ObjectClass, Object or ObjectSet.ASN.1 SchemaASN.X uses these qualified names inLegg & Prager Expires 11 October 2005 [Page 8] INTERNET-DRAFT ASN.1 Schema April 11, 2005place of the references in an ASN.1 specification. In every case, the local part of the qualified 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 theAssignment).Assignment, ignoring white space characters). If the ASN.1 module in which the Assignment is defined has a target namespace then this SHALL be the namespace name of the qualified name. The namespace prefix is determined according to Section 5.6.11.1 of the specification for RXER. If the ASN.1 module in which the Assignment is defined does not have a target namespace then the namespace name of the qualified name is absent (i.e., the name is unqualified). If an ASN.1 specification contains two or more modules without target namespaces then there exists the possibility of two or more distinct assignments in separate modules associated with the sameASN.1 SchemaASN.X name. An unambiguous translation toASN.1 SchemaASN.X does not exist in such a case unless each of the modules has a SCHEMA-IDENTITY encoding instruction. Consequently, if two or more modules without target namespaces are being translated intoASN.1 SchemaASN.X and the effective names of the top level NamedType instances [RXEREI] in those modules are not distinct (across those modules) or the defined type, object class, value, object and object set references are not distinct across those modules then, as a local action prior to the translation, a SCHEMA-IDENTITY encoding instruction MUST be added to each of the modules which does not already have a SCHEMA-IDENTITY encoding instruction. The character string (a URI) specified by the Legg Expires 14 January 2006 [Page 10] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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]. TARGET-NAMESPACE and SCHEMA-IDENTITY encoding instructions are RECOMMENDED for every ASN.1 module. 5.2. Importing Namespaces An element item with the [local name] "import" is added to the [children] of the [document element] for each external module, except the AdditionalBasicDefinitions module [RXER], containing Assignments that are referenced from the definitions in theASN.1 SchemaASN.X document. An attribute item with the [local name] "name" SHOULD be added to the [attributes] of the <import>element.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 theLegg & Prager Expires 11 October 2005 [Page 9] INTERNET-DRAFT ASN.1 Schema April 11, 2005ModuleDefinition of the external module is not empty then an attribute item with the [local name] "identifier" SHOULD be added to the [attributes] of the <import>element.element item. The [normalized value] of this attribute item is the RXERencodingcharacter 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.element item. The [normalized value] of this attribute item is the schema identity URI of the external module. If the external module has a target namespace then an attribute item with the [local name] "namespace" SHALL be added to the [attributes] of the <import>element.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.element item. The [normalized value] of this attribute item is a URI [URI] indicating the physical location of theASN.1 SchemaASN.X translation of the external module. The <import>elementselement items MUST precede any otherelementselement items in the [children] of the [document element]. Note that because of the way parameterized references are expanded inASN.1 Schema,ASN.X, the modules in the Imports of the ModuleDefinition may not Legg Expires 14 January 2006 [Page 11] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 correspond exactly to the <import>elements.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.element item. The [normalized value] of this attribute item is the typereference on the left hand side of the assignment. The content of the <namedType> element item is the translation of the Type on the right hand side of the assignment. Example MyType ::= INTEGER <namedType name="MyType" type="asn1: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.element item. TheLegg & Prager Expires 11 October 2005 [Page 10] INTERNET-DRAFT ASN.1 Schema April 11, 2005[normalized value] of this attribute item is the valuereference on the left hand side of the assignment. The content of the <namedValue> element item is the translation of the Type on the left hand side of the assignment followed by the translation of the Value on the right hand side of the assignment. An XMLValueAssignment is converted into the equivalent ValueAssignment and then translated as a ValueAssignment. Note that theASN.1 SchemaASN.X representation for a Value is unrelated to XMLTypedValue. Example myValue INTEGER ::= 10 <namedValue name="myValue" type="asn1:INTEGER"literal="10"/>literalValue="10"/> 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.element item. The [normalized value] of this attribute item is the typereference on the left hand side of the assignment. The content of the <namedValueSet> element item is the translation of the Type on the left hand side of the assignment Legg Expires 14 January 2006 [Page 12] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 followed by the translation of the ValueSet on the right hand side of the assignment. Example MyValueSet INTEGER ::= { 10 } <namedValueSet name="MyValueSet" type="asn1:INTEGER"> <valueSet><value>10</value><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.element item. The [normalized value] of this attribute item is the objectclassreference on the left hand side of the assignment. The content of the <namedClass> element item is the translation of the ObjectClass on the right hand side of the assignment.Legg & Prager Expires 11 October 2005 [Page 11] INTERNET-DRAFT ASN.1 Schema April 11, 2005Example MY-CLASS ::= TYPE-IDENTIFIER <namedClass name="MY-CLASS" class="asn1: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.element item. The [normalized value] of this attribute item is the objectreference on the left hand side of the assignment. The content of the <namedObject> element item is the translation of the DefinedObjectClass on the left hand side of the assignment followed by the translation of the Object on the right hand side of the assignment. Example myObject TYPE-IDENTIFIER ::= { INTEGER IDENTIFIED BY { 2 5 13 14 } } <namedObject name="myObject" class="asn1:TYPE-IDENTIFIER"> Legg Expires 14 January 2006 [Page 13] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <object> <field name="id"literal="2.5.13.14"/>literalValue="2.5.13.14"/> <field name="Type"type="asn1:INTEGER/>type="asn1:INTEGER"/> </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.element item. The [normalized value] of this attribute item is the objectsetreference on the left hand side of the assignment. The content of the <namedObjectSet> element item is the translation of the DefinedObjectClass on the left hand side of the assignment followed by the translation of the ObjectSet on the right hand side of the assignment. Example MyObjectSet TYPE-IDENTIFIER ::= { myObject } <namedObjectSet name="MyObjectSet" class="asn1:TYPE-IDENTIFIER"> <objectSet>Legg & Prager Expires 11 October 2005 [Page 12] INTERNET-DRAFT ASN.1 Schema April 11, 2005<object ref="tns:myObject"/> </objectSet> </namedObjectSet> 5.9. Parameterized Assignments The translation of an ASN.1 specification intoASN.1 SchemaASN.X replacesinstances ofany DummyReference [X.683] orreferencesreference to a parameterizeddefinitionsdefinition [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. 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. The definition that substitutes for a DummyReference or parameterized reference (e.g., the Object that substitutes for a ParameterizedObject) is potentially in a different module scope to the parameterized reference. Expanding a DummyReference or parameterized reference in-line puts the substitute definition into the module scope of the parameterized reference, which could therefore alter the interpretation of the substitute definition. However, only type definitions have dependencies on the module scope. Legg Expires 14 January 2006 [Page 14] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 Other kinds of definitions are not affected. A type definition is dependent on the TagDefault and ExtensionDefault of the module, and may also be affected by encoding instructions in an XML Encoding Rules (XER) [X.693] encoding control section [X.693-1]. Section 6.14 describesattributesattribute items that are added to the translation of a type definition to override the module defaults and ensure the appropriate interpretation with respect to tagging and extensibility. The solution with respect to XER encoding instructions is described by the procedure for translating XER encoding instructions intoASN.1 SchemaASN.X [XEREIT]. ASIDE: Type definitions are not dependent on their module's RXER or Generic String Encoding Rules (GSER) [GSER] encoding control section[GSEREI].[RXEREI][GSEREI]. 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 either as aLegg & Prager Expires 11 October 2005 [Page 13] INTERNET-DRAFT ASN.1 Schema April 11, 2005tagged ConstrainedType or a constrained TaggedType. For the purposes of the translation intoASN.1 SchemaASN.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[XMLNS].[XMLNS10]. The NCName is given pre-eminence in theASN.1 SchemaASN.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: The reduction of an NCName is the string of characters resulting from the following operations performed in order on the NCName: (1) replace each "." (U+002E) and "_" (U+005F) character with a "-" (U+002D) character, (2) remove every character except latin letters (U+0041-U+005A, U+0061-U+007A), decimal digits (U+0030-U+0039) and hyphens Legg Expires 14 January 2006 [Page 15] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 (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 the NCName replaces then the identifier will be explicitly given in the translation intoASN.1 Schema.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.Legg & Prager Expires 11 October 2005 [Page 14] INTERNET-DRAFT ASN.1 Schema April 11, 2005The attribute form translation of a type reference is an attribute item with the [local name] "type". The [normalized value] of this attribute item is the qualified name referencing the type definition (see Section 5.1). The attribute form translation SHALL NOT be used if the qualified name is shared by two or more type definitions in separate modules, i.e., is ambiguous. The element form translation of a type reference is an element item with the [local name] "type". An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <type>element.element item. The [normalized value] of this attribute item is the qualified name referencing the type definition. If the qualified name is shared by two or more type definitions in separate modules then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <type>element.element item. The [normalized value] of this attribute item is the character string value of the AnyURIValue of the SCHEMA-IDENTITY encoding instruction for the module containing the type definition referenced by the DefinedType. ASIDE: A SCHEMA-IDENTITY encoding instruction is obligatory in such cases (see Section 5.1). Legg Expires 14 January 2006 [Page 16] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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 either the attribute form translation of a foreign type reference, or the element form translation of a foreign type reference.IfThe attribute form translation SHALL NOT be used if the referenced type is an ASN.1 type or the RefParameters in the TYPE-REF encoding instruction is notempty then the attribute form of a foreign type reference cannot be used.empty. The attribute form translation of a foreign type reference is an attribute item with the [local name] "type". The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the QNameValue from the TYPE-REF encoding instruction. The element form translation of a foreign type reference is an element item with the [local name] "type". An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <type>element.element item. The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the QNameValue from the TYPE-REF encoding instruction. If the 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.element item. The [normalized value] of this attribute item is the string value of the AnyURIValue in the ContextParameter. If theLegg & Prager Expires 11 October 2005 [Page 15] INTERNET-DRAFTreferenced type is an ASN.1Schema April 11, 2005 CanonicalizationParametertype then 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, otherwise such an attribute item MAY be added to the [attributes] of the <type> element item. ASIDE: The embedded attribute item indicates whether a type ispresentdirectly referenced as a DefinedType or indirectly referenced through a TYPE-REF encoding instruction. An ASN.1 type can be referenced either way. If the embedded attribute item is absent and the reference is to an ASN.1 type then a DefinedType is assumed. Type definitions in other schema languages cannot be directly referenced. If theRefParameters inembedded attribute item is absent and the referenced type is not an ASN.1 type then a TYPE-REF encoding instructionthen an attribute with the [local name] "canonicalization" SHALL be added to the [attributes] of the <type> element. The [normalized value] of this attributeisthe string value of the AnyURIValue in the CanonicalizationParameter.assumed. Usually the translator is free to choose either the attribute form or Legg Expires 14 January 2006 [Page 17] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 element form translation for a type reference or foreign type reference, however in some contexts attribute forms of Type are explicitly disallowed. 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 attribute item with the [local name] "elementType" SHALL be added to the [attributes] of the <type>element.element item. The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the NameValue from the REF-AS-TYPE encoding instruction. If the 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.element item. The [normalized value] of this attribute item is the string value of the AnyURIValue in the ContextParameter.If the CanonicalizationParameter is present in the RefParameters in the REF-AS-TYPE encoding instruction then an attribute with the [local name] "canonicalization" SHALL be added to the [attributes] of the <type> element. The [normalized value] of this attribute is the string value of the AnyURIValue in the CanonicalizationParameter.Example CHOICE { one Foo, two [RXER:TYPE-REF { namespace-name "http://www.example.com/PO1", local-name "PurchaseOrderType" } ] AnyType, three [RXER:REF-AS-TYPE "product" CONTEXT "http://www.example.com/inventory" ] AnyType } <type xmlns:po="http://www.example.com/PO1"> <choice> <element name="one" type="tns:Foo"/> <element name="two" type="po:PurchaseOrderType"/> <element name="three"> <type elementType="product" context="http://www.example.com/inventory"/>Legg & Prager Expires 11 October 2005 [Page 16] INTERNET-DRAFT ASN.1 Schema April 11, 2005</element> </choice> </type> If a DefinedType is a DummyReference then the translation of the Type is the translation of the Type in the ActualParameter corresponding to the DummyReference. If a DefinedType is a ParameterizedType then the translation of the DefinedType is the translation of the ParameterizedType. Legg Expires 14 January 2006 [Page 18] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 If a DefinedType is a ParameterizedValueSetType then the translation of the DefinedType is the translation of the ParameterizedValueSetType. Definition: A ParameterizedType is recursively contained if its translation will be nested within the translation of another ParameterizedType to which it is equivalent. A ParameterizedValueSetType is recursively contained if its translation will be nested within the translation of another ParameterizedValueSetType to which it is equivalent. If a ParameterizedType is not recursively contained then the translation of the ParameterizedType is the translation of the Type on the right hand side of the referenced ParameterizedTypeAssignment. If a ParameterizedValueSetType is not recursively contained then the translation of the ParameterizedValueSetType is the translation of 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]). ASIDE: The Type that substitutes for a ParameterizedType, ParameterizedValueSetType or DummyReference is potentially in a different module scope to the surrounding translation, therefore the translation of the Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14. 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.element item. The [normalized value] of this attribute item is the decimal digit string representing the the integer value of one plus the number of intermediate enclosing <type>elementselement items between the <type>elementselement items resulting from the translations of the two equivalent instances of ParameterizedType orLegg & Prager Expires 11 October 2005 [Page 17] INTERNET-DRAFT ASN.1 Schema April 11, 2005ParameterizedValueSetType. A <type> element item with an ancestor attribute item is a reference to an ancestor <type>element.element item. This form for a <type> element item SHOULD NOT be used in original specifications written inASN.1 Schema.ASN.X. ASIDE: The form is only intended for the purpose of handling recursive parameterized type definitions in an ASN.1 specification being translated intoASN.1 Schema.ASN.X. Such definitions areself- referencingself-referencing but have no obvious name. It is also not easy to Legg Expires 14 January 2006 [Page 19] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 construct a suitable name from the surrounding context because recursive parameterized types can be embedded in other constructs, such as information objects, which are themselves unnamed. Example Consider these type definitions: 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 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 & Prager Expires 11 October 2005 [Page 18] INTERNET-DRAFT ASN.1 Schema April 11, 2005ValueType is a DummyReference. The translation of the actual parameter substitutes for the DummyReference. In this case the actual parameter is the type INTEGER. The translation for the SEQUENCE type, up to the first component, is added to the <tagged> element: <namedType name="NumberTree"> <type> Legg Expires 14 January 2006 [Page 20] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <tagged tagClass="APPLICATION" number="13"> <type><!-- Tree { INTEGER } --> <sequence> <element name="value"> <type> <tagged number="0"> <type ref="asn1:INTEGER"/><!-- 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="asn1:INTEGER"/><!-- ValueType --> </tagged> </type>Legg & Prager Expires 11 October 2005 [Page 19] INTERNET-DRAFT ASN.1 Schema April 11, 2005</element> <optional> <element name="left-subtree"> <type> <tagged number="1"> <type ancestor="2"/><!-- Tree { ValueType } --> </tagged> </type> </element> Legg Expires 14 January 2006 [Page 21] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </optional> <optional> <element name="right-subtree"> <type> <tagged number="2"> <type ancestor="2"/><!-- Tree { ValueType } --> </tagged> </type> </element> </optional> </sequence> </type> </tagged> </type> </namedType> 6.3. Translation of Predefined Types If a Type comprises one of the productions in Table 1 then the translation of the Type is either the attribute form or element form translation of that type. The attribute form translation of a Type comprising 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 with the namespace name "http://xmled.info/ns/ASN.1" and the local part as indicated in Table 1. Table 1: Reference Names for Predefined Types +----------------------------------+-------------------+ | ASN.1 Production | local part | +==================================+===================+ | BitStringType | | | without a NamedBitList | BIT-STRING | +----------------------------------+-------------------+ | BooleanType | BOOLEAN | | EmbeddedPDVType |EMBEDDED-PDV | | ExternalType | EXTERNAL | Legg & Prager Expires 11 October 2005 [Page 20] INTERNET-DRAFT ASN.1 Schema April 11, 2005EMBEDDED-PDV | | ExternalType | EXTERNAL | +----------------------------------+-------------------+ | IntegerType | | | without a NamedNumberList | INTEGER | +----------------------------------+-------------------+ | NullType | NULL | | ObjectIdentifierType | OBJECT-IDENTIFIER | | OctetStringType | OCTET-STRING | | RealType | REAL | | RelativeOIDType | RELATIVE-OID | Legg Expires 14 January 2006 [Page 22] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 +----------------------------------+-------------------+ | RestrictedCharacterStringType | | | BMPString | BMPString | | GeneralString | GeneralString | | GraphicString | GraphicString | | IA5String | IA5String | | ISO646String | ISO646String | | NumericString | NumericString | | PrintableString | PrintableString | | TeletexString | TeletexString | | T61String | T61String | | UniversalString | UniversalString | | UTF8String | UTF8String | | VideotexString | VideotexString | | VisibleString | VisibleString | +----------------------------------+-------------------+ | UnrestrictedCharacterStringType | CHARACTER-STRING | +----------------------------------+-------------------+ | UsefulType | | | GeneralizedTime | GeneralizedTime | | UTCTime | UTCTime | | ObjectDescriptor | ObjectDescriptor | +----------------------------------+-------------------+ The element form translation of a Type comprising one of the productions in Table 1 is an element item with the [local name] "type". An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <type>element.element item. The [normalized value] of this attribute item is a qualified name with the namespace name "http://xmled.info/ns/ASN.1" and the local part as indicated in Table 1. Example BOOLEAN <type ref="asn1:BOOLEAN"/> Usually the translator is free to choose either the attribute form orLegg & Prager Expires 11 October 2005 [Page 21] INTERNET-DRAFT ASN.1 Schema April 11, 2005element form translation for a Type, however in some contexts attribute forms of 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] "namedBitList" SHALL be added to the [children] of the <type>element.element item. The translation of each NamedBit in the Legg Expires 14 January 2006 [Page 23] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 NamedBitList SHALL be appended to the [children] of the <namedBitList>element.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.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 of the NamedBit, otherwise it is the identifier of 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>element,element item, otherwise an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <namedBit>element.element item. The [normalized value] of this attribute item is the identifier of the NamedBit. An attribute item with the [local name] "bit" SHALL be added to the [attributes] of the <namedBit>element.element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the number or DefinedValue of 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>Legg & Prager Expires 11 October 2005 [Page 22] INTERNET-DRAFT ASN.1 Schema April 11, 2005<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"/> Legg Expires 14 January 2006 [Page 24] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </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] "namedNumberList" SHALL be added to the [children] of the <type>element.element item. The translation of each NamedNumber in the NamedNumberList SHALL be appended to the [children] of the <namedNumberList>element.element item. 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.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 of the NamedNumber, otherwise it is the identifier of 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,element item, otherwise an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <namedNumber>element.element item. The [normalized value] of this attribute item is the identifier of the NamedNumber. An attribute item with the [local name] "number" SHALL be added to the [attributes] of the <namedNumber>element.element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the SignedNumber or DefinedValue of 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>Legg & Prager Expires 11 October 2005 [Page 23] INTERNET-DRAFT ASN.1 Schema April 11, 2005[RXER:VALUES ALL CAPITALIZED very-high AS "DANGEROUS"] INTEGER { low(25), medium(50), high(75), very-high(100) } <type> Legg Expires 14 January 2006 [Page 25] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedNumberList> <namedNumber name="Low" number="25"/> <namedNumber name="Medium" number="50"/> <namedNumber name="High" number="75"/> <namedNumber name="DANGEROUS" identifier="very-high" number="100"/> </namedNumberList> </type> 6.6. EnumeratedType Translation The translation of an EnumeratedType is an element item with the [local name] "type". An element item with the [local name] "enumerated" SHALL be added to the [children] of the <type>element.element item. The translation of each EnumerationItem in the RootEnumeration SHALL be appended to the [children] of the <enumerated>element.element item. If the ellipsis ("...") is present then an element item with the [local name] "extension" SHALL be appended to the [children] of the <enumerated>element,element item, and the translation of the ExceptionSpec (possibly empty) SHALL be added to the [children] of the <extension>element.element item. If an AdditionalEnumeration is present then the translation of each EnumerationItem in the AdditionalEnumeration SHALL be appended to the [children] of the <extension>element.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.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 <namedNumber>element,element item, otherwise an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <namedNumber>element.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.element item. If the EnumeratedType is subject to aLegg & Prager Expires 11 October 2005 [Page 24] INTERNET-DRAFT ASN.1 Schema April 11, 2005VALUES encoding instruction then the [normalized value] of this attribute item is the replacement name [RXEREI] for the identifier of the NamedNumber, otherwise it is the identifier of the NamedNumber. Legg Expires 14 January 2006 [Page 26] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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 <namedNumber>element,element item, otherwise an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <namedNumber>element.element item. The [normalized value] of this attribute item is the identifier of the NamedNumber. An attribute item with the [local name] "number" SHALL be added to the [attributes] of the <enumeration>element.element item. The [normalized value] of this attribute item is the digit string representation of the integer value of the SignedNumber or DefinedValue of the NamedNumber. Example 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 the translation of the TaggedType. If a PrefixedType is an EncodingPrefixedType and the EncodingReference is RXER, or the EncodingReference is empty and theLegg & Prager Expires 11 October 2005 [Page 25] INTERNET-DRAFT ASN.1 Schema April 11, 2005default encoding reference [X.680-1] for the module is RXER, then the translation of the PrefixedType is the translation of the Type in the Legg Expires 14 January 2006 [Page 27] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 EncodingPrefixedType. ASIDE: This is not suggesting that RXER encoding instructions are ignored. Encoding instructions for RXER are not explicitly represented inASN.1 Schema,ASN.X, but rather affect how an ASN.1 specification is translated into anASN.1 SchemaASN.X document (since the content of anASN.1 SchemaASN.X document 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 inASN.1 Schema.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.element item. If the EncodingReference of an EncodingPrefix is not empty then the translation of the EncodingPrefix is an element item with the encodingreference of the EncodingReference as the [local name]. The translation of the EncodingInstruction in the EncodingPrefix SHALL be added to the [children] of thiselement.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 thiselement.element item. The EncodingInstruction notation is different for each set of encoding instructions, and their translations intoASN.1 SchemaASN.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[GSER][GSEREI][GSEREI] and EXTENDED-XER[X.693][X.693-1]).[X.693-1]). If the<type>child <type> element item of a <prefixed> element item has noattributesattribute items and has a<prefixed>child <prefixed> element item then that<type>child <type> element item MAY be replaced by the content (bothattributesattribute items and childelements)element items) of the inner <prefixed>element. Legg & Prager Expires 11 October 2005 [Page 26] INTERNET-DRAFT ASN.1 Schema April 11, 2005element item. If two consecutive childelementselement items of a <prefixed> element item have the same [local name] (which will be an encodingreference) then Legg Expires 14 January 2006 [Page 28] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 the second child element item MAY be removed and have its [children] appended to the [children] of the first childelement.element item. These two rewriting steps MAY be applied to the result of a previous rewriting step if the necessary conditions still hold. Example These three definitions are equivalent. [XER:ATTRIBUTE] [XER:USE-UNION] [GSER:CHOICE-OF-STRINGS] MyChoiceType <type> <prefixed> <XER><attribute/></XER> <type> <prefixed> <XER><useUnion/></XER> <type> <prefixed type="tns:MyChoiceType"> <GSER><choiceOfStrings/></GSER> </prefixed> </type> </prefixed> </type> </prefixed> </type> <type> <prefixed type="tns:MyChoiceType"> <XER><attribute/><useUnion/></XER> <GSER><choiceOfStrings/></GSER> </prefixed> </type> 6.7.1. TaggedType Translation The translation of a TaggedType is an element item with the [local name] "type". An element item with the [local name] "tagged" SHALL be added to the [children] of the <type>element.element item. 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 <tagged>element.element item. The [normalized value] of this attribute item is the Class of the Tag, either "UNIVERSAL", "APPLICATION" or "PRIVATE".Legg & Prager Expires 11 October 2005 [Page 27] INTERNET-DRAFT ASN.1 Schema April 11, 2005If the TaggedType is of the "Tag IMPLICIT Type" form then an Legg Expires 14 January 2006 [Page 29] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 attribute item with the [local name] "tagging" and [normalized value] "IMPLICIT" SHALL be added to the [attributes] of the <tagged>element.element item. If the TaggedType is of the "Tag EXPLICIT Type" form then an attribute item with the [local name] "tagging" and [normalized value] "EXPLICIT" SHALL be added to the [attributes] of the <tagged>element.element item. If the TaggedType is of the "Tag Type" form and the Type in the TaggedType is a DummyReference then an attribute item with the [local name] "tagging" and [normalized value] "EXPLICIT" SHALL be added to the [attributes] of the <tagged>element.element item. The translation of the Type in the TaggedType SHALL be added to the content of the <tagged>element.element item. Examples [0] INTEGER <type> <tagged number="0" type="asn1:INTEGER"/> </type> [APPLICATION 10] IMPLICIT BOOLEAN <type> <tagged tagClass="APPLICATION" number="10" tagging="IMPLICIT" type="asn1:BOOLEAN"/> </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] "selection" SHALL be added to the [children] of the <type>element.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", "content" 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.element item. The [normalized value] of this attribute item is the RXERencoding [RXER]character data translation of the effective name [RXEREI] of the NamedType. Legg& PragerExpires11 October 200514 January 2006 [Page28]30] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 The translation of the Type in the SelectionType SHALL be added to the content of the <selection>element.element item. Example 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="asn1:INTEGER"/> </choice> </type> </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] "instanceOf" SHALL be added to the [children] of the <type>element.element item. The content of the <instanceOf> element item is the translation of the DefinedObjectClass in the InstanceOfType. Example INSTANCE OF TYPE-IDENTIFIER <type> <instanceOf class="asn1: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] "fromClass" SHALL be added to the [children] of the <type>element.element item. The content of the <fromClass> element item is the translationof theLegg& PragerExpires11 October 200514 January 2006 [Page29]31] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 of the DefinedObjectClass in the ObjectClassFieldType followed by the translation of the FieldName (see Section 9.2.6). Example OPERATION.&Linked.&ArgumentType <type> <fromClass class="tns:OPERATION" fieldName="Linked/ArgumentType"/> </type> 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] "fromObjects" SHALL be added to the [children] of the <type>element.element item. The translation of the ReferencedObjects in the TypeFromObject or ValueSetFromObjects SHALL be added to the content of the <fromObjects>element.element item. The translation of the FieldName in the TypeFromObject or ValueSetFromObjects SHALL be appended to the content of the <fromObjects>element.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 Legg& PragerExpires11 October 200514 January 2006 [Page30]32] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 of the translation of an enclosing combining type. If a NamedType is subject to an ATTRIBUTE or ATTRIBUTE-REF encoding instruction then the normal translation of the NamedType is an element item with the [local name] "attribute", otherwise if the NamedType is subject to a CONTENT encoding instruction then the normal translation of the NamedType is an element item with the [local name] "content", otherwise the normal translation of the NamedType is an element item with the [local name] "element". 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, CONTENT or TYPE-AS-VERSION encoding instruction. These encoding instructions are also mutuallyexclusive.exclusive [RXEREI]. 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>element.element item. For the normal translation, if a NamedType is not subject to an ATTRIBUTE, ATTRIBUTE-REF, 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>element.element item. For the normal, member and item translations, if a NamedType is not subject to an ATTRIBUTE-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>, <content>, <element>, <member> or <item>element,element item, as appropriate. The [normalized value] of this attribute item is the value of the local-name component of the effective name [RXEREI] of the NamedType. ASIDE: If there are no NAME, ATTRIBUTE-REF, ELEMENT-REF or REF-AS-ELEMENT encoding instructions then the value of the local-name component of the effective name of a NamedType is its identifier. If the reduction of the local-name component (an NCName) of the effective name of the NamedType is not the same as the identifier of the NamedType then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the <attribute>, <content>, <element>, <member> or <item>element,element item, asappropriate, otherwise anLegg& PragerExpires11 October 200514 January 2006 [Page31]33] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 appropriate, otherwise an attribute item with the [local name] "identifier" MAY be added to the [attributes] of the <attribute>, <content>, <element>, <member> or <item>element.element item. The [normalized value] of this attribute item is the identifier of the NamedType. 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> or <element>element, as appropriate. The [normalized value] of this attribute is the RXER encoding of the QNameValue from the encoding instruction.element item, as appropriate. The [normalized value] of this attribute item is the RXER character data translation of the QNameValue from the encoding instruction. An attribute item with the [local name] "embedded" and [normalized value] "true" or "1" MAY be added to the [attributes] of the <attribute> or <element> 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>element.element item. The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the NameValue from the REF-AS-ELEMENT encoding instruction. If the 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> or <element>element,element item, as appropriate. The [normalized value] of this attribute item is the string value of the AnyURIValue in the ContextParameter. Ifthe CanonicalizationParameter is present in the RefParameters in the encoding instruction then an attribute with the [local name] "canonicalization" SHALL be added to the [attributes] of the <attribute> or <element> element, as appropriate. The [normalized value] of this attribute is the string value of the AnyURIValue in the CanonicalizationParameter. Ifa NamedType is not subject to an ATTRIBUTE-REF, ELEMENT-REF or REF-AS-ELEMENT encoding instruction then the translation of the Type in the NamedType SHALL be added to the content of the <attribute>, <content>, <element>, <member> or <item>element,element item, as appropriate. If the enclosing combining type is a SEQUENCE, SET or CHOICE type and the Type in the NamedType is a DummyReference and the TagDefault for the module containing the NamedType is "AUTOMATIC TAGS" then an attribute form translation of the Type in the NamedType 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 Type in the NamedType. Where the automatic tagging transformationapplies,applies [X.680], this attribute item indicates that explicit tagging applies to the Type in the NamedType instead of the usual implicit tagging. Example CHOICE { Legg& PragerExpires11 October 200514 January 2006 [Page32]34] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 one INTEGER, two [RXER:ATTRIBUTE] BOOLEAN, three [RXER:ATTRIBUTE-REF { namespace-name "http://www.example.com/schema", local-name "foo" }] AnyType, four [RXER:ELEMENT-REF { namespace-name "http://www.example.com/schema", local-name "bar" }] AnyType, four [RXER:REF-AS-ELEMENT "product" CONTEXT "http://www.example.com/inventory"] AnyType, five [RXER:CONTENT] MySequence } <type> <choice xmlns:ex="http://www.example.com/schema"> <element name="one" type="asn1:INTEGER"/> <attribute name="two" type="asn1:BOOLEAN"/> <attribute ref="ex:foo"/> <element ref="ex:bar"/> <element elementType="product" context="http://www.example.com/inventory"/> <contentname=five"name="five" 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] "sequence" SHALL be added to the [children] of the <type>element.element item. The translation of each ComponentType in the ComponentTypeList of the initial RootComponentTypeList, if present, SHALL be appended to the [children] of the <sequence>element.element item. If the ExtensionAndException is present then an element item with the [local name] "extension" SHALL be appended to the [children] of the <sequence>element,element item, and the translation of the ExceptionSpec (possibly empty) SHALL be added to the [children] of the <extension>element.element item. The translation of each ExtensionAdditionGroup or ComponentType in the ExtensionAdditions (if any) SHALL be appended to the [children] of the <extension>element.element item. If the ExtensionEndMarker is present then the translation of each Legg& PragerExpires11 October 200514 January 2006 [Page33]35] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 ComponentType in the final RootComponentTypeList SHALL be appended to the [children] of the <sequence>element.element item. The translation of an ExtensionAdditionGroup is an element item with the [local name] "extensionGroup". If the VersionNumber is present then an attribute item with the [local name] "version" SHALL be added to the [attributes] of the <extensionGroup>element.element item. The [normalized value] of this attribute item is the number of the VersionNumber. The translation of each ComponentType in the ExtensionAdditionGroup SHALL be appended to the [children] of the <extensionGroup>element.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.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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the Value. 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 content of the <componentsOf>element.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="asn1:INTEGER"/>Legg& PragerExpires11 October 200514 January 2006 [Page34]36] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 <sequence> <element name="one" type="asn1:INTEGER"/> <optional> <attribute name="two" type="asn1:BOOLEAN"/> </optional> <extension> <extensionGroup version="2"> <element name="four" type="asn1:NULL"/> </extensionGroup> <componentsOf type="tns:MySequence"/> </extension> <optional> <element name="three" type="asn1:PrintableString"/> <defaultliteral="third"/>literalValue="third"/> </optional> </sequence> </type> 6.12.3. SetType Translation The translation of a SetType follows the same procedure as a SequenceType except that SetType replaces SequenceType, "SET" replaces "SEQUENCE", and the [local name] "set" is used instead of "sequence". 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] "choice" SHALL be added to the [children] of the <type>element.element item. The normal translation of each NamedType in the RootAlternativeTypeList SHALL be appended to the [children] of the <choice>element.element item. If the ExtensionAndException is present then an element item with the [local name] "extension" is appended to the [children] of the <choice>element,element item, and the translation of the ExceptionSpec (possibly empty) is added to the [children] of the <extension>element.element item. The translation of each ExtensionAdditionAlternativesGroup or NamedType in the ExtensionAdditionAlternatives (if any) SHALL be appended to the [children] of the <extension>element.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 is present then an attribute item with the [local name] Legg Expires 14 January 2006 [Page 37] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 "version" SHALL be added to the [attributes] of the <extensionGroup>element.element item. The [normalized value] of this attribute item is the number of the VersionNumber. The normal translation of each NamedType in theLegg & Prager Expires 11 October 2005 [Page 35] INTERNET-DRAFT ASN.1 Schema April 11, 2005ExtensionAdditionAlternativesGroup SHALL be appended to the [children] of the <extensionGroup>element.element item. Example CHOICE { one INTEGER, two [RXER:NAME AS "Two"] BOOLEAN, ..., [[ 2: three NULL ]], four PrintableString, ... } <type> <choice> <element name="one" type="asn1:INTEGER"/> <element name="Two" type="asn1:BOOLEAN"/> <extension> <extensionGroup version="2"> <element name="three" type="asn1:NULL"/> </extensionGroup> <element name="four" type="asn1: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 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.element item. The [normalized value] of this attribute item is the white space separated list of the RXERencodings [RXER]character data translations of the effective names [RXEREI] of the NamedType instances corresponding to the identifiers in the PrecedenceList. Legg Expires 14 January 2006 [Page 38] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 Example [RXER:UNION PRECEDENCE utf8 visible] CHOICE { printable PrintableString,Legg & Prager Expires 11 October 2005 [Page 36] INTERNET-DRAFT ASN.1 Schema April 11, 2005teletex TeletexString, visible [RXER:NAME AS "ascii"] VisibleString, ..., utf8 UTF8String } <type> <union precedence="utf8 ascii"> <member name="printable" type="asn1:PrintableString"/> <member name="teletex" type="asn1:TeletexString"/> <member name="ascii" identifier="visible" type="asn1:VisibleString"/> <extension> <member name="utf8" type="asn1: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] "sequenceOf" SHALL be added to the [children] of the <type>element.element item. If the SequenceOfType is of the "SEQUENCE OF NamedType" form then the normal translation of the NamedType SHALL be added to the content of the <sequenceOf>element.element item. If the SequenceOfType is of the "SEQUENCE OF Type" form then an element item with the [local name] "element" SHALL be added to the [children] of the <type>element.element item. An attribute item with the [local name] "name" and [normalized value] "item" SHALL be added to the [attributes] of the <element>element.element item. An attribute item with the [local name] "identifier" and empty [normalized value] SHALL be added to the [attributes] of the <element>element.element item. The translation of the Type SHALL be added to the content of the <element>element.element item. Examples SEQUENCE OF INTEGER <type> Legg Expires 14 January 2006 [Page 39] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <sequenceOf> <element name="item" identifier="" type="asn1:INTEGER"/> </sequenceOf> </type>Legg & Prager Expires 11 October 2005 [Page 37] INTERNET-DRAFT ASN.1 Schema April 11, 2005SEQUENCE OF counter INTEGER <type> <sequenceOf> <element name="counter" type="asn1: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] "list" SHALL be added to the [children] of the <type>element.element item. The item translation of the NamedType SHALL be added to the content of the <list>element.element item. ASIDE: 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="asn1:INTEGER"/> </list> </type> 6.12.8. SetOfType Translation The translation of a SetOfType follows the same procedure as a SequenceOfType except that SetOfType replaces SequenceOfType, "SET" replaces "SEQUENCE", and the [local name] "setOf" is used instead of "sequenceOf". 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] "constrained" SHALL be added to the [children] of the <type>element.element item. The content of the <constrained> element item is the Legg Expires 14 January 2006 [Page 40] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 translation of the Type followed by the translation of the Constraint. The translation of a ContainedType that is a TypeWithConstraint is the translation of the TypeWithConstraint.Legg & Prager Expires 11 October 2005 [Page 38] INTERNET-DRAFT ASN.1 Schema April 11, 2005Definition: 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: A SizeConstraint is a simple range if the Constraint in the SizeConstraint contains only a ValueRange (i.e., a ValueRange in a SubtypeElements in an Elements in a single IntersectionElements in a single Intersections in a Unions in an ElementSetSpec in a lone RootElementSetSpec in an ElementSetSpecs in a SubtypeConstraint in a lone ConstraintSpec in the Constraint) and both endpoints are simple. Definition: 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 in an Elements in a single IntersectionElements in a single Intersections in a Unions in an ElementSetSpec in a lone RootElementSetSpec in an ElementSetSpecs in a SubtypeConstraint in a lone 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 the translation of the 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 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 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.element item. 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] "constrained" SHALL be added to the [children] of the <type>element.element item. The content of the <constrained> element item is the translation of the parent type followed by the translation of the Constraint or SizeConstraint. Legg Expires 14 January 2006 [Page 41] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 Examples SEQUENCE (SIZE(1..MAX)) OF number INTEGER <type> <sequenceOf minSize="1"> <element name="number" type="asn1:INTEGER"/> </sequenceOf>Legg & Prager Expires 11 October 2005 [Page 39] INTERNET-DRAFT ASN.1 Schema April 11, 2005</type> SEQUENCE SIZE(0..10) OF number INTEGER <type> <sequenceOf maxSize="10"> <element name="number" type="asn1:INTEGER"/> </sequenceOf> </type> SEQUENCE SIZE(1..limit) OF number INTEGER <type> <constrained> <type> <sequenceOf> <element name="number" type="asn1:INTEGER"/> </sequenceOf> </type> <size> <range> <minInclusiveliteral="1"/>literalValue="1"/> <maxInclusive value="tns:limit"/> </range> </size> </constrained> </type> 6.13.1. Constraint Translation The translation of a Constraint is the translation of the ConstraintSpec followed by the translation of the ExceptionSpec (possibly empty). The translation of a ConstraintSpec is the translation of the contained SubtypeConstraint or GeneralConstraint. The translation of a SubtypeConstraint is the translation of the contained ElementSetSpecs. Legg Expires 14 January 2006 [Page 42] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 The translation of a GeneralConstraint is the translation of the contained UserDefinedConstraint, TableConstraint or ContentsConstraint. 6.13.2. UserDefinedConstraint Translation The translation of a UserDefinedConstraint is an element item with theLegg & Prager Expires 11 October 2005 [Page 40] INTERNET-DRAFT ASN.1 Schema April 11, 2005[local name] "constrainedBy". The translation of each UserDefinedConstraintParameter SHALL be appended to the [children] of the <constrainedBy>element.element item. The translation of a UserDefinedConstraintParameter of the "Governor : Value" form is an element item with the [local name] "valueParameter". The content of the <valueParameter> element item is the translation of the Type in the Governor followed by the translation of the Value. The translation of a UserDefinedConstraintParameter of the "Governor : ValueSet" form is an element item with the [local name] "valueSetParameter". The content of the <valueSetParameter> element item is the translation of the Type in the Governor followed by the translation of the ValueSet. The translation of a UserDefinedConstraintParameter of the "Governor : Object" form is an element item with the [local name] "objectParameter". The content of the <objectParameter> element item is the translation of the DefinedObjectClass in the Governor followed by the translation of the Object. The translation of a UserDefinedConstraintParameter of the "Governor : ObjectSet" form is an element item with the [local name] "objectSetParameter". The content of the <objectSetParameter> element item is the translation of the DefinedObjectClass in the Governor followed by the translation of the ObjectSet. 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 content of the <typeParameter>element.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 content of the <classParameter>element.element item. 6.13.3. TableConstraint Translation The translation of a TableConstraint that is a SimpleTableConstraint Legg Expires 14 January 2006 [Page 43] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 is an element item with the [local name] "table". The translation of the ObjectSet in the SimpleTableConstraint SHALL be added to the content of the <table>element.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 theLegg & Prager Expires 11 October 2005 [Page 41] INTERNET-DRAFT ASN.1 Schema April 11, 2005ComponentRelationConstraint SHALL be added to the content of the <table>element.element item. The translation of each AtNotation SHALL be appended to the [children] of the <table>element.element item. The translation of an AtNotation is an element item with the [local name] "restrictBy". Thecontent[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 "/" (U+002F) separated list of the RXERencodings [RXER]character data translations of the effective names [RXEREI] of the NamedType instances identified by the ComponentIdList identifiers. If a NamedType is subject to an ATTRIBUTE or ATTRIBUTE-REF encoding instruction then theencodingtranslation of the effective name is prefixed with the"@" (U+0040) character."@" (U+0040) character. 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 "/" character. 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. 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> Legg Expires 14 January 2006 [Page 44] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 SEQUENCE { iD [RXER:NAME AS "ID"] [RXER:ATTRIBUTE] TYPE-IDENTIFIER.&id({AllTypes}), value TYPE-IDENTIFIER.&Type({AllTypes}{@iD}) } <type> <sequence> <attribute name="ID"> <type> <constrained> <type> <fromClass class="asn1:TYPE-IDENTIFIER" fieldName="id"/> </type> <table objectset="tns:AllTypes"/> </constrained> </type>Legg & Prager Expires 11 October 2005 [Page 42] INTERNET-DRAFT ASN.1 Schema April 11, 2005</attribute> <element name="value"> <type> <constrained> <type> <fromClass class="asn1:TYPE-IDENTIFIER" fieldName="Type"/> </type> <table objectset="tns:AllTypes"> <restrictBy>@ID</restrictBy> </table> </constrained> </type> </element> </sequence> </type> 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.element item. The translation of the Type SHALL be added to the contents of the <containing>element.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.element item. The translation of the Value SHALL be added to the contents of the <encodedBy>element.element item. Legg Expires 14 January 2006 [Page 45] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 If the ContentsConstraint is of the "CONTAINING Type ENCODED BY Value" form then the content of the <contents> element item is an element item with the [local name] "containing" followed by an element item with the [local name] "encodedBy". The translation of the Type SHALL be added to the contents of the <containing>element,element item, and the translation of the Value SHALL be added to the contents of the <encodedBy>element.element item. 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 ExceptionSpec is a SignedNumber then the content of the <exception> element item is the translation of a notional INTEGER TypeLegg & Prager Expires 11 October 2005 [Page 43] INTERNET-DRAFT ASN.1 Schema April 11, 2005followed by the translation of a notional Value of the INTEGER type with the IntegerValue of SignedNumber. If the ExceptionSpec is a DefinedValue then the content of the <exception> element item is the translation of a notional INTEGER Type followed by the translation of the DefinedValue. If the ExceptionSpec is of the "Type : Value" form then the content of the <exception> element item is the translation of the Type followed by the translation of the Value. Examples !10 <exception type="asn1:INTEGER"literal="10"/>literalValue="10"/> !myValue <exception type="asn1:INTEGER" value="tns:myValue"/> !PrintableString:"failure" <exception type="asn1:PrintableString"literal="failure"/>literalValue="failure"/> 6.14. Tag Defaults and Extension Defaults When a DummyReference or parameterized reference is replaced by the definition it references the TagDefault and ExtensionDefault applying to any nested type definitions may no longer accord with the original ASN.1 specification. This section describesattributesattribute items that are Legg Expires 14 January 2006 [Page 46] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 added to the translation of a type definition so that the appropriate defaults for tagging and extensibility are applied. Definition: For encoding rules that use type tagging, a tag default affects how those tags are constructed. Its value is either EXPLICIT, IMPLICIT or AUTOMATIC. If the TagDefault in the ModuleDefinition for a module is empty then the tag default for the module is EXPLICIT, otherwise the tag default for the module is the first keyword in the TagDefault. The tag default for a Type is the tag default of the module containing the Type. Definition: An extension default indicates whether types are assumed to be extensible in the absence of an explicit extension marker (which translates into an <extension>element).element item). Its value is either TRUE or FALSE. If the ExtensionDefault in the ModuleDefinition for a module is empty then the extension default for the module is FALSE, otherwise the extension default for the module is TRUE. TheLegg & Prager Expires 11 October 2005 [Page 44] INTERNET-DRAFT ASN.1 Schema April 11, 2005extension default for a Type is the extension default of the module containing the Type. Definition: The contributing Type for a <type> element item is the Type whose translation produces the content of that <type>element.element item. ASIDE: The translation of a Type that is a DummyReference, ParameterizedType or ParameterizedValueSetType (in a DefinedType in a ReferencedType) is normally the translation of the referenced Type. In such cases, the referencing Type is therefore not a contributing Type. Definition: If a <type> element item is not enclosed by another <type> element item then the inherited tag default for that <type> element item is the tag default of the module whose translation contains the <type>element,element item, otherwise the inherited tag default for the <type> element item is the tag default of the contributing Type for the innermost enclosing <type>element.element item. If a contributing Type is not a DefinedType and is not one of the productions in Table 1 (see Section 6.3) and the inherited tag default for its associated <type> element item is not the same as the tag default of the contributing Type then an attribute item with the [local name] "tagDefault" SHALL be added to the [attributes] of the <type>element,element item, otherwise an attribute item with the [local name] "tagDefault" MAY be added to the [attributes] of the <type>element.element item. The [normalized value] of this attribute item is the tag default of the contributing Type. Definition: If a <type> element item is not enclosed by another Legg Expires 14 January 2006 [Page 47] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <type> element item then the inherited extension default for that <type> element item is the extension default of the module whose translation contains the <type>element,element item, otherwise the inherited extension default for the <type> element item is the extension default of the contributing Type for the innermost enclosing <type>element.element item. If a contributing Type is not a DefinedType and is not one of the productions in Table 1 and the inherited extension default for its associated <type> element item is not the same as the extension default of the contributing Type then an attribute item with the [local name] "extensibilityImplied" SHALL be added to the [attributes] of the <type>element,element item, otherwise an attribute item with the [local name] "extensibilityImplied" MAY be added to the [attributes] of the <type>element.element item. If the extension default is TRUE then the [normalized value] of this attribute item is "true" or "1", otherwise it is "false" or "0". 7. Translation of ValuesLegg & Prager Expires 11 October 2005 [Page 45] INTERNET-DRAFT ASN.1 Schema April 11, 2005A 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, theASN.1 SchemaASN.X translation of a Value is a mix of markup for literal values and markup for referencing notations(meta-values).(notational values). A Value is categorized by the following definitions. Definition: A Value is a literal value if and only if it is not ameta-value.notational value. Definition: A Value is ameta-valuenotational value if and only if: (a) the Value is a BuiltinValue, and (1) the BuiltinValue is a TaggedValue and the Value in the TaggedValue is ameta-value,notational value, or (2) the BuiltinValue is a SequenceValue or SetValue and the ComponentValueList of the SequenceValue or SetValue contains a NamedValue where the translation of the corresponding NamedType (from the governing type of the Value) is not an <element> element item and the Value of the NamedValue is ameta-value,notational value, or (3) the BuiltinValue is a ChoiceValue where the translation of the NamedType corresponding to the identifier of the ChoiceValue is not an <element> element item and the Value of the ChoiceValue is ameta-value,notational value, or Legg Expires 14 January 2006 [Page 48] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 (4) the BuiltinValue is a SequenceOfValue with a NamedValueList that contains a NamedValue where the translation of the corresponding NamedType (from the governing type of the Value) is not an <element> element item and the Value of the NamedValue is ameta-value,notational value, or (b) the Value is a ReferencedValue, and (1) the ReferencedValue is a ValueFromObject, or (2) 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 and the Value in the ActualParameter corresponding to the DummyReference is ameta-value,notational value, or (iii) the DefinedValue is a ParameterizedValue and the ValueLegg & Prager Expires 11 October 2005 [Page 46] INTERNET-DRAFT ASN.1 Schema April 11, 2005on the right hand side of the referenced ParameterizedValueAssignment is ameta-value,notational value, or (c) the Value is an ObjectClassFieldValue, and (1) the ObjectClassFieldValue is an OpenTypeFieldVal, or (2) the ObjectClassFieldValue is aFixedTypeFieldVal, and (i) the FixedTypeFieldValFixedTypeFieldVal, and (i) the FixedTypeFieldVal is a BuiltinValue that satisfies case (a), or (ii) the FixedTypeFieldVal is a ReferencedValue that satisfies case (b). A literal value that is a BuiltinValue that is a a SequenceValue, SetValue, ChoiceValue, SequenceOfValue or SetOfValue MAY be translated as a notational value. Definition: A notational value is directly nested (within aBuiltinValue that satisfies case (a), or (ii)literal value) if theFixedTypeFieldValinnermost enclosing Value is aReferencedValue that satisfies case (b).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. Legg Expires 14 January 2006 [Page 49] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 The attribute form translation of a literal value is an attribute item with the [local name]"literal""literalValue" whose [normalized value] is the RXERencodingcharacter data translation [RXER] of the Value. The attribute form translation of a literal value SHALL NOT be used if: (a) the RXER Infoset translation of the Value is not a character data translation [RXER] or is a character data translation that contains qualified names [XMLNS10], or (b) attribute forms of Value have been explicitly disallowed, or (c) the Value has a nested notational value. The element form translation of a literal value is an element item with the [local name]"value""literalValue" whose content is the RXERencodingInfoset translation of the Value, except that a value of the EXTERNAL type (or a subtype thereof) isencodedtranslated according to the associated type defined in Clause 34.5 of X.680 [X.680]. In addition, where the content of an element item in theencodingtranslation corresponds to a directly nestedmeta-valuenotational value the translation specified in Section 7.2.SHALLMUST be used instead(forfor the content of thatelement). If the content of anelementinitem, and an attribute item with theencoding corresponds[local name] "literal", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "false" or "0" (e.g., asn1:literal="false") MUST be added toathe [attributes] of that element item. Each outermost <literalValue> element item, and each nestedliteral Valueelement item thatiscorresponds to aBuiltinValue that istop level NamedType from a module with aSequenceValue, SetValue, ChoiceValue, SequenceOfValue or SetOfValue then thattarget namespace, 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. ASIDE: A <literalValue> element item nestedliteral Value MAYwithin another <literalValue> element item is not required to betranslated as a meta-value.self-contained. An attribute item with the [local name]"meta","literal", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value]"false""true" or"0""1" (e.g.,asn1:meta="false")asn1:literal="true") MAY be added tothe [attributes] of the <value> element.the [attributes] of the <literalValue> element item and/or any nested element item whose content corresponds to a literal value. ASIDE: Theasn1:metaasn1:literal attribute operates as a switch that indicates whether the content of the element containing the attribute is interpreted asASN.1 SchemaASN.X notation (ameta-value)notational value) or Legg Expires 14 January 2006 [Page 50] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 as an RXER encoding (a literal value).The attribute form translationFrom the perspective ofa literal value SHALL NOT be used if,an ASN.X document as the RXER encoding of an abstract value of theValue contains items other than Legg & Prager Expires 11 October 2005 [Page 47] INTERNET-DRAFT ASN.1 Schema April 11, 2005 character information items, attribute formsModuleDefinition type in Appendix A, the type ofValue have been explicitly disallowed, ortheValue has<literalValue> element is an unconstrained AnyType [RXER], not the governing type of the Value. This means that the Infoset representation of the <literalValue> element must be preserved in re-encodings of the ASN.X document, except where an element item corresponds to anested meta-value.top level NamedType from a module with a target namespace, in which case it is sufficient to preserve only the abstract value. The top level NamedType could be one defined in the same ASN.X document. Similarly, the type of the literalValue attribute is a UTF8String, not the governing type of the Value. This means that the exact characters of the [normalized value] of the attribute must be preserved in re-encodings of the ASN.X document. 7.2. Translation ofMeta-valuesNotational Values The translation of ameta-valuenotational value is the translation of either a BuiltinValue, a ReferencedValue or an ObjectClassFieldValue. The translation of a ReferencedValue is the translation of either a DefinedValue or a ValueFromObject. The translation for each these cases is described as creating an element item with the [local name] "value", which is appropriate for ameta-valuenotational value that stands on its own. However, ameta-valuenotational 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 literalValue.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] "http://xmled.info/ns/ASN.1" and [normalized value] "false" or "0" is added to the [attributes] of <literalValue> element item. Examples zero INTEGER ::= 0 <namedValue name="zero" type="asn1:INTEGER" literalValue="0"/> Legg Expires 14 January 2006 [Page 51] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 OR <namedValue name="zero" type="asn1:INTEGER"><value>0</value><!-- A literal value. --><literalValue>0</literalValue> </namedValue> nothing INTEGER ::= zero <namedValue name="nothing"type="asn1:INTEGER"/>type="asn1:INTEGER" value="tns:zero"/> OR <namedValue name="nothing" type="asn1:INTEGER"> <valueasn1:meta="true"ref="tns:zero"/><!-- Ameta-value.notational value. --> </namedValue> OR <namedValue name="nothing" type="asn1:INTEGER"> <literalValue xmlns:asn1="http://xmled.info/ns/ASN.1" xmlns:tns="http://example.com/ns/MyModule" asn1: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="asn1:INTEGER"/> </sequenceOf> </type><value><!-- A literal value. --><literalValue xmlns:asn1="http://xmled.info/ns/ASN.1" xmlns:tns="http://example.com/ns/MyModule"> <numberasn1:meta="true"asn1:literal="false" ref="tns:zero"/><!-- Ameta-value.notational value. --> <number>3</number><!-- A literal value. --> <number>7</number><!-- A literal value. --></value></literalValue> </namedValue> 7.2.1. DefinedValue TranslationLegg & Prager Expires 11 October 2005 [Page 48] INTERNET-DRAFT ASN.1 Schema April 11, 2005If 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. Legg Expires 14 January 2006 [Page 52] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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 the qualified name referencing the value definition (see Section 5.1). The attribute form translation SHALL NOT be used if the qualified name is shared by two or more value definitions in separate modules, i.e., is ambiguous. The element form translation of a value reference is an element item with the [local name] "value". An attributewith the [local name] "meta", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <value> element. An attributeitem with the [local name] "ref" SHALL be added to the [attributes] of the <value>element.element item. The [normalized value] of this attribute item is the qualified name referencing the value definition (see Section 5.1). If the qualified name is shared by two or more value definitions in separate modules then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <value>element.element item. The [normalized value] of this attribute item is the character string value of the AnyURIValue of the SCHEMA-IDENTITY encoding instruction for the module containing the value definition referenced by the DefinedValue. ASIDE: A SCHEMA-IDENTITY encoding instruction is obligatory in such cases (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 particular, the attribute form translation SHALL NOT be used for a DefinedValue that is directly nested in a literal value. If a DefinedValue is a DummyReference then the translation of the DefinedValue is the translation of the Value in the ActualParameter corresponding to the DummyReference. If a DefinedValue is a ParameterizedValue then the translation of the Value is the translation of the Value on the right hand side of the referenced ParameterizedValueAssignment. ASIDE:Since this section is describing the translation of a DefinedValue for a meta-value, theThe Value that substitutes for a DummyReference or ParameterizedValue in a DefinedValue in a ReferencedValue in a notational value is necessarily also ameta-value. Legg & Prager Expires 11 October 2005 [Page 49] INTERNET-DRAFT ASN.1 Schema April 11, 2005notational value. 7.2.2. BuiltinValue Translation The translation of a BuiltinValue is the translation of either a ChoiceValue, a SequenceValue, a SequenceOfValue, a SetValue or a TaggedValue. The translation of a TaggedValue is the translation of the contained Legg Expires 14 January 2006 [Page 53] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 Value (which is necessarily ameta-value).notational value). The translation of a ChoiceValue is an element item with the [local name] "value". Anattribute with the [local name] "meta", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <value> element. Anelement item with the same [local name] (i.e., "attribute", "element", "content" or "member") as the translation of the NamedType corresponding to the identifier in the ChoiceValue SHALL be added to the [children] of the <value>element.element item. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <attribute>, <element>, <content> or <member>element.element item. The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the effective name of the NamedType. The translation of the Value in the ChoiceValue SHALL be added to the content of the <attribute>, <element>, <content> or <member>element.element item. The translation of a SequenceValue or SetValue is an element item with the [local name] "value".An attribute with the [local name] "meta", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <value> element.The translation of each NamedValue in the ComponentValueList of the SequenceValue or SetValue SHALL be appended to the [children] of the <value>element,element item, in the order in which their corresponding NamedType instances appear in the definition of thegoverning type. The translation of a SequenceOfValue is an element with the [local name] "value". An attribute with the [local name] "meta", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "true" or "1" SHALL be added to the [attributes]governing type. The translation of a SequenceOfValue is an element item with the<value> element.[local name] "value". If the SequenceOfValue has a NamedValueList then the translation of each NamedValue in the NamedValueList SHALL be appended to the [children] of the <value>element.element item. If the SequenceOfValue has a ValueList then an element item with the [local name] "element" SHALL be appended to the [children] of the <value> element item for each Value in the ValueList. An attribute item with the [local name] "name" and [normalized value] "item" SHALL be addedLegg & Prager Expires 11 October 2005 [Page 50] INTERNET-DRAFT ASN.1 Schema April 11, 2005to the [attributes] of the <element>element.element item. The translation of the Value (from the ValueList) SHALL be added to the content of the <element>element.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", "content" or "item". An attribute item with the [local name] "name" SHALL be added to the [attributes] of theelement.element item. The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the effective name of the NamedType. The translation of the Value in the NamedValue SHALL be added to the content of theelement.element item. Examples Legg Expires 14 January 2006 [Page 54] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 -- 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="asn1:INTEGER"/> <element name="two" type="asn1:INTEGER"/> <attribute name="three"> <type> <list> <item name="number" type="asn1:INTEGER"/> </list> </type> </attribute> </sequence> </type> </namedType> myValue1 MyType ::= { one 456, two 123, three { number 123, number 456 } } --No meta-values.All literal values. <namedValue name="myValue1" type="tns:MyType"><value<literalValue one="456" three="123 456"> <two>123</two></value> Legg & Prager Expires 11 October 2005 [Page 51] INTERNET-DRAFT ASN.1 Schema April 11, 2005</literalValue> </namedValue> myValue2 MyType ::= { one 456, two myObject.&number, -- only the value for component "two" is ameta-valuenotational value three { number 123, number 456 } } <namedValue name="myValue2" type="tns:MyType"><value<literalValue xmlns:asn1="http://xmled.info/ns/ASN.1" xmlns:tns="http://example.com/ns/MyModule" one="456" three="123 456"> <twoasn1:meta="true">asn1:literal="false"> Legg Expires 14 January 2006 [Page 55] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <fromObjects object="tns:myObject" fieldName="number"/> </two></value></literalValue> </namedValue> myValue3 MyType ::= { one myObject.&number, two 123, three { number 123, number myObject.&number } } <namedValue name="myValue3" type="tns:MyType"><value asn1:meta="true"><value> <attribute name="one"><value asn1:meta="true"><value> <fromObjects object="tns:myObject" fieldName="number"/> </value> </attribute> <element name="two"literal="123"/>literalValue="123"/> <attribute name="three"><value asn1:meta="true"><value> <item name="number"literal="123"/>literalValue="123"/> <item name="number"><value asn1:meta="true"><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". Anattribute with the [local name] "meta", Legg & Prager Expires 11 October 2005 [Page 52] INTERNET-DRAFT ASN.1 Schema April 11, 2005 [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <value> element. Anelement item with the [local name] "fromObjects" SHALL be added to the [children] of the <value>element.element item. The translation of the ReferencedObjects in the ValueFromObject SHALL be added to the content of the <fromObjects>element.element item. The translation of the FieldName in the ValueFromObject SHALL be appended to the content of the <fromObjects>element.element item. 7.2.4. ObjectClassFieldValue Translation If an ObjectClassFieldValue is a BuiltinValue in a FixedTypeFieldVal Legg Expires 14 January 2006 [Page 56] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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". Anattribute with the [local name] "meta", [namespace name] "http://xmled.info/ns/ASN.1" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the <value> element. Anelement item with the [local name] "openTypeValue" SHALL be added to the [children] of the <value>element.element item. The translation of the Type in the OpenTypeFieldVal SHALL be added to the content of the <openTypeValue>element.element item. The translation of the Value in the OpenTypeFieldVal SHALL be appended to the content of the <openTypeValue>element.element item. Example myValue TYPE-IDENTIFIER.&Type ::= INTEGER:123 <namedValue name="myValue"> <type> <fromClass class="asn1:TYPE-IDENTIFIER" fieldName="Type"/> </type><value asn1:meta="true"><value> <openTypeValue type="asn1:INTEGER"literal="123"/>literalValue="123"/> </value> </namedValue> 8. Translation of Value SetsLegg & Prager Expires 11 October 2005 [Page 53] INTERNET-DRAFT ASN.1 Schema April 11, 2005The translation of a ValueSet is an element item with the [local name] "valueSet". The translation of the ElementSetSpecs in the ValueSet SHALL be added to the [children] of the <valueSet>element.element item. Example { 1 | 3..7, ..., 9..19 EXCEPT ( 11 | 12 ) } <valueSet> <union><value>1</value><literalValue>1</literalValue> <range> <minInclusiveliteral="3"/>literalValue="3"/> <maxInclusiveliteral="7"/>literalValue="7"/> </range> </union> Legg Expires 14 January 2006 [Page 57] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <extension> <all> <range> <minInclusiveliteral="9"/>literalValue="9"/> <maxInclusiveliteral="19"/>literalValue="19"/> </range> <except> <union><value>11</value> <value>12</value><literalValue>11</literalValue> <literalValue>12</literalValue> </union> </except> </all> </extension> </valueSet> 8.1. ElementSetSpecs Translation The translation of an ElementSetSpecs where the ellipsis ("...") is not present is the translation of the ElementSetSpec in the RootElementSetSpec. The translation of an ElementSetSpecs 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 then the translation of the ElementSetSpec in the AdditionalElementSetSpec SHALL be added to the [children] of the <extension>element.element item. 8.2. ElementSetSpec Translation If the ElementSetSpec is of the "ALL Exclusions" form then theLegg & Prager Expires 11 October 2005 [Page 54] INTERNET-DRAFT ASN.1 Schema April 11, 2005translation 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.element item. The translation of the Elements in the Exclusions SHALL be added to the [children] of the <except>element.element item. If the ElementSetSpec is of the "Unions" form then the translation of the ElementSetSpec is the translation of the Unions. If the Unions has only one Intersections then the translation of the Unions is the translation of that Intersections, otherwise the translation of the Unions is an element item with the [local name] "union". The translation of each Intersections SHALL be appended to the [children] of the <union>element.element item. If the Intersections has only one IntersectionElements then the Legg Expires 14 January 2006 [Page 58] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 translation of the Intersections is the translation of that IntersectionElements, otherwise the translation of the Intersections is an element item with the [local name] "intersection". The translation of each IntersectionElements SHALL be appended to the [children] of the <intersection>element.element item. If the IntersectionElements is of the "Elems Exclusions" form then the translation of the IntersectionElements is an element item with the [local name] "all". The content of the <all> element item is the translation of the Elements in the Elems followed by an element item with the [local name] "except". The translation of the Elements in the Exclusions SHALL be added to the [children] of the <except>element.element item. If the IntersectionElements is of the "Elements" form then the translation of the IntersectionElements is the translation of the Elements. The translation of an Elements is the translation of the SubtypeElements, ObjectSetElements or ElementSetSpec, as appropriate. 8.3. SubtypeElements Translation If a SubtypeElements is a SingleValue then the translation of the SubtypeElements is the translation of the Value, except that an attribute form of the Value translation SHALL NOT be used. If a SubtypeElements is a ContainedSubtype then the translation of the SubtypeElements is an element item with the [local name] "includes". The translation of the Type in the ContainedSubtype SHALL be added to the content of the <includes>element.element item. If a SubtypeElements is a ValueRange then the translation of theLegg & Prager Expires 11 October 2005 [Page 55] INTERNET-DRAFT ASN.1 Schema April 11, 2005SubtypeElements is the translation of the ValueRange. If a SubtypeElements is a SizeConstraint then the translation of the SubtypeElements is an element item with the [local name] "size". The content of the <size> element item is the translation of the Constraint in the SizeConstraint. If a SubtypeElements is a TypeConstraint then the translation of the SubtypeElements is an element item with the [local name] "typeConstraint". The content of the <typeConstraint> element item is the translation of the Type in the TypeConstraint. If a SubtypeElements is a PermittedAlphabet then the translation of the SubtypeElements is an element item with the [local name] "from". The content of the <from> element item is the translation of the Legg Expires 14 January 2006 [Page 59] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 Constraint in the PermittedAlphabet. If a SubtypeElements is an InnerTypeConstraints then the translation of the SubtypeElements is the translation of the InnerTypeConstraints. If a SubtypeElements is a PatternConstraint then the translation of the SubtypeElements is an element item with the [local name] "pattern". The content of the <pattern> element item is the translation of the Value in the PatternConstraint. 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.element item. If the LowerEndValue is not "MIN" then the content of the <minExclusive> element item is the translation of the Value in the LowerEndValue. If the LowerEndpoint in the ValueRange is of the "LowerEndValue" form and the LowerEndValue is not "MIN" then an element item with the [local name] "minInclusive" SHALL be added to the [children] of the <range>element.element item. The content of the <minInclusive> element item is the translation of the Value in the LowerEndValue. 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.element item. If the UpperEndpoint in the ValueRange is of the "< UpperEndValue"Legg & Prager Expires 11 October 2005 [Page 56] INTERNET-DRAFT ASN.1 Schema April 11, 2005form then an element item with the [local name] "maxExclusive" SHALL be added to the [children] of the <range>element.element item. If the UpperEndValue is not "MAX" then the content of the <maxExclusive> element item is the translation of the Value in the UpperEndValue. If the UpperEndpoint in the ValueRange is of the "UpperEndValue" form and the UpperEndValue is not "MAX" then an element item with the [local name] "maxInclusive" SHALL be added to the [children] of the <range>element.element item. The content of the <maxInclusive> element item is the translation of the Value in the UpperEndValue. 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 Legg Expires 14 January 2006 [Page 60] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <range>element.element item. Examples 1..10 <range> <minInclusiveliteral="1"/>literalValue="1"/> <maxInclusiveliteral="10"/>literalValue="10"/> </range> 0..MAX <range> <minInclusiveliteral="0"/>literalValue="0"/> </range> 0<..<MAX <range> <minExclusiveliteral="0"/>literalValue="0"/> <maxExclusive/> </range> 8.3.2. InnerTypeConstraints Translation The translation of an InnerTypeConstraints of the "WITH COMPONENT SingleTypeConstraint" form is an element item with the [local name] "withComponent". The content of the <withComponent> element item is the translation of the Constraint in the SingleTypeConstraint. The translation of an InnerTypeConstraints of the "WITH COMPONENTS MultipleTypeConstraints" form is an element item with the [local name] "withComponents".Legg & Prager Expires 11 October 2005 [Page 57] INTERNET-DRAFT ASN.1 Schema April 11, 2005If the MultipleTypeConstraints 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.element item. If the MultipleTypeConstraints 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.element item. The translation of each NamedConstraint in the MultipleTypeConstraints SHALL be appended to the [children] of the <withComponents>element.element item. Legg Expires 14 January 2006 [Page 61] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 The translation of a NamedConstraint is an element item with the same [local name] (i.e., "attribute", "element", "content" or "member") as the translation of the NamedType corresponding to the identifier of the NamedConstraint. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <attribute>, <element>, <content> or <member>element,element item, as appropriate. The [normalized value] of this attribute item is the RXERencodingcharacter data translation of the effective name of the NamedType corresponding to the identifier of the NamedConstraint. If the PresenceConstraint of the ComponentConstraint of the NamedConstraint is not empty then an attribute item with the [local name] "use" SHALL be added to the [attributes] of the <component>element.element item. The [normalized value] of this attribute item is the text of the PresenceConstraint, either "PRESENT", "ABSENT" or "OPTIONAL". If the ValueConstraint in the ComponentConstraint of the NamedConstraint is not empty then the the translation of the Constraint in the ValueConstraint SHALL be added to the [children] of the <attribute>, <element>, <content> or <member>element,element item, as appropriate. 9. Translation of Object Classes The translation of an ObjectClass is the translation of either a DefinedObjectClass, an ObjectClassDefn or a ParameterizedObjectClass. If an ObjectClass is a ParameterizedObjectClass then the translation of the ObjectClass is the translation of the ObjectClass on the right hand side of the referenced ParameterizedObjectClassAssignment. ASIDE: The ObjectClass that substitutes for a ParameterizedObjectClass is potentially in a different module scope to the surrounding translation, therefore the translation of a nested Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14.Legg & Prager Expires 11 October 2005 [Page 58] INTERNET-DRAFT ASN.1 Schema April 11, 20059.1. DefinedObjectClass Translation If a DefinedObjectClass is an objectclassreference (not a DummyReference), an ExternalObjectClassReference or a UsefulObjectClassReference then the translation of the 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 Legg Expires 14 January 2006 [Page 62] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 attribute item with the [local name] "class". The [normalized value] of this attribute item is the qualified name referencing the object class definition (see Section 5.1). In the case of a UsefulObjectClassReference the namespace name is "http://xmled.info/ns/ASN.1" and the local part is either "TYPE-IDENTIFIER" or "ABSTRACT-SYNTAX", as appropriate. The attribute form translation SHALL NOT be used if the qualified name is shared by two or more object class definitions in separate modules, i.e., is ambiguous. 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 attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <class>element.element item. The [normalized value] of this attribute item is the qualified name referencing the object class definition. In the case of a UsefulObjectClassReference the namespace name is "http://xmled.info/ns/ASN.1" and the local part is either "TYPE-IDENTIFIER" or "ABSTRACT-SYNTAX", as appropriate. If the qualified name is shared by two or more object class definitions in separate modules then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <class>element.element item. The [normalized value] of this attribute item is the character string value of the AnyURIValue of the SCHEMA-IDENTITY encoding instruction for the module containing the object class definition referenced by the DefinedObjectClass. ASIDE: A SCHEMA-IDENTITY encoding instruction is obligatory in such cases (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 DefinedObjectClass in the ActualParameter corresponding to the DummyReference.Legg & Prager Expires 11 October 2005 [Page 59] INTERNET-DRAFT ASN.1 Schema April 11, 20059.2. ObjectClassDefn Translation The translation of an ObjectClassDefn is an element item with the [local name] "class". The translation of each FieldSpec in the ObjectClassDefn SHALL be appended to the [children] of the <class>element.element item. The translation of a FieldSpec is the translation of either a TypeFieldSpec, a FixedTypeValueFieldSpec, a Legg Expires 14 January 2006 [Page 63] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 VariableTypeValueFieldSpec, a FixedTypeValueSetFieldSpec, a VariableTypeValueSetFieldSpec, an ObjectFieldSpec or an ObjectSetFieldSpec. 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 "OPTIONAL" 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.element item. The translation of a TypeFieldSpec with a TypeOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the Type in the TypeOptionalitySpec. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <typeField>element.element item. The [normalized value] of this attribute item is the typefieldreference of the TypeFieldSpec, without the ampersand ("&", U+0026). Example CLASS { &One, &Two OPTIONAL, &Three DEFAULT OBJECT IDENTIFIER } <class> <typeField name="One"/> <optional> <typeField name="Two"/>Legg & Prager Expires 11 October 2005 [Page 60] INTERNET-DRAFT ASN.1 Schema April 11, 2005</optional> <optional> <typeField name="Three"/> <default type="asn1:OBJECT-IDENTIFIER"/> </optional> </class> 9.2.2. FixedTypeValueFieldSpec Translation Legg Expires 14 January 2006 [Page 64] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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 "OPTIONAL" 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.element item. The translation of a FixedTypeValueFieldSpec with a ValueOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the Value in the ValueOptionalitySpec. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <valueField>element.element item. The [normalized value] of this attribute item is the valuefieldreference of the FixedTypeValueFieldSpec, without theampersand.ampersand ("&", 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,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.element item. The translation of the Type in the FixedTypeValueFieldSpec SHALL be added to the content of the <valueField>element.element item. Example CLASS { &one OBJECT IDENTIFIER UNIQUE, &two BOOLEAN OPTIONAL, &three INTEGER DEFAULT 0 } <class>Legg & Prager Expires 11 October 2005 [Page 61] INTERNET-DRAFT ASN.1 Schema April 11, 2005<valueField name="one" unique="true" type="asn1:OBJECT-IDENTIFIER"/> <optional> <valueField name="two" type="asn1:BOOLEAN"/> </optional> <optional> <valueField name="three" type="asn1:INTEGER"/> Legg Expires 14 January 2006 [Page 65] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <defaultliteral="0"/>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 "OPTIONAL" 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.element item. The translation of a FixedTypeValueSetFieldSpec with a ValueSetOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the ValueSet in the ValueSetOptionalitySpec. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <valueSetField>element.element item. The [normalized value] of this attribute item is the valuesetfieldreference of the FixedTypeValueSetFieldSpec, without theampersand.ampersand ("&", U+0026). The translation of the Type in the FixedTypeValueSetFieldSpec SHALL be added to the content of the <valueSetField>element.element item. Example CLASS { &One UTF8String, &Two BOOLEAN OPTIONAL, &Three INTEGER DEFAULT { 1 | 2 } } <class>Legg & Prager Expires 11 October 2005 [Page 62] INTERNET-DRAFT ASN.1 Schema April 11, 2005<valueSetField name="One" type="asn1:UTF8String"/> <optional> <valueSetField name="Two" type="asn1:BOOLEAN"/> </optional> <optional> <valueSetField name="Three" type="asn1:INTEGER"/> Legg Expires 14 January 2006 [Page 66] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <default> <valueSet> <union><value>1</value> <value>2</value><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 "OPTIONAL" 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.element item. The translation of a VariableTypeValueFieldSpec with a ValueOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The translation of the Value in the ValueOptionalitySpec SHALL be added to the content of the <default>element.element item. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <valueField>element.element item. The [normalized value] of this attribute item is the valuefieldreference of the VariableTypeValueFieldSpec, without theampersand.ampersand ("&", U+0026). An element item with the [local name] "typeFromField" SHALL be added to the [children] of the <valueField>element.element item. The translation of the FieldName in the VariableTypeValueFieldSpec SHALL be added to the content of the <typeFromField>element.element item. ExampleLegg & Prager Expires 11 October 2005 [Page 63] INTERNET-DRAFT ASN.1 Schema April 11, 2005CLASS { &Syntax DEFAULT INTEGER, &one &Syntax, &two &Syntax OPTIONAL, &three &Syntax DEFAULT 0 Legg Expires 14 January 2006 [Page 67] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 } <class> <optional> <typeField name="Syntax"/> <defaulttype="asn1:INTEGER/>type="asn1: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> <defaultliteral="0"/>literalValue="0"/> </optional> </class> 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 "OPTIONAL" 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.element item. The translation of a VariableTypeValueSetFieldSpec with a ValueSetOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the ValueSet in the ValueSetOptionalitySpec.Legg & Prager Expires 11 October 2005 [Page 64] INTERNET-DRAFT ASN.1 Schema April 11, 2005An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <valueSetField>element.element item. The [normalized value] of this attribute item is the valuesetfieldreference of the VariableTypeValueSetFieldSpec, without Legg Expires 14 January 2006 [Page 68] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 theampersand.ampersand ("&", U+0026). An element item with the [local name] "typeFromField" SHALL be added to the [children] of the <valueSetField>element.element item. The translation of the FieldName in the VariableTypeValueSetFieldSpec SHALL be added to the content of the <typeFromField>element.element item. Example CLASS { &Syntax DEFAULT INTEGER, &One &Syntax, &Two &Syntax OPTIONAL, &Three &Syntax DEFAULT { 1 | 2 } } <class> <optional> <typeField name="Syntax"/> <defaulttype="asn1:INTEGER/>type="asn1:INTEGER"/> </optional> <valueSetField name="One"> <typeFromField fieldName="Syntax"/> </valueSetField> <optional> <valueSetField name="Two"> <typeFromField fieldName="Syntax"/> </valueSetField> </optional> <optional> <valueSetField name="Three"> <typeFromField fieldName="Syntax"/> </valueSetField> <default> <valueSet> <union><value>1</value> <value>2</value><literalValue>1</literalValue> <literalValue>2</literalValue> </union> </valueSet> </default> </optional> </class> 9.2.6. FieldName TranslationLegg & Prager Expires 11 October 2005 [Page 65] INTERNET-DRAFT ASN.1 Schema April 11, 2005The 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 enclosingelement,element item, or an element item with Legg Expires 14 January 2006 [Page 69] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 the [local name] "fieldName" appended to the [children] of the enclosingelement.element item. The [normalized value] of the fieldName attribute item is a "/" (U+002F) separated list of the primitive field names 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 "/" character in the [normalized value]. Thecontent[children] property of the <fieldName> elementis (ignoring comment and processing instruction items)item is set to the sequence of character items for a "/" (U+002F) separated list of the primitive field names 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 "/" character. 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 a ObjectFieldSpec with a ObjectOptionalitySpec of "OPTIONAL" 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.element item. The translation of a ObjectFieldSpec with a ObjectOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the Object in the ObjectOptionalitySpec. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <objectField>element.element item. The [normalized value] of this attribute item is the objectfieldreference of the ObjectFieldSpec, without theampersand.ampersand ("&", U+0026). The translation of the DefinedObjectClass in the ObjectFieldSpec SHALL be added to the content of the <objectField>element. Example CLASS {element item. Legg& PragerExpires11 October 200514 January 2006 [Page66]70] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 Example CLASS { &one TYPE-IDENTIFIER, &two ABSTRACT-SYNTAX OPTIONAL, &three TYPE-IDENTIFIER DEFAULT myObject } <class> <objectField name="one" class="asn1:TYPE-IDENTIFIER"/> <optional> <objectField name="two" class="asn1:ABSTRACT-SYNTAX"/> </optional> <optional> <objectField name="three" class="asn1: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 a ObjectSetFieldSpec with a ObjectSetOptionalitySpec of "OPTIONAL" 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.element item. The translation of a ObjectSetFieldSpec with a ObjectSetOptionalitySpec of "DEFAULT" 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.element item. An element item with the [local name] "default" SHALL be appended to the [children] of the <optional>element.element item. The content of the <default> element item is the translation of the ObjectSet in the ObjectSetOptionalitySpec. An attribute item with the [local name] "name" SHALL be added to the [attributes] of the <objectSetField>element.element item. The [normalized value] of this attribute item is the objectsetfieldreference of the ObjectSetFieldSpec, without theampersand.ampersand ("&", U+0026). The translation of the DefinedObjectClass in the ObjectSetFieldSpec SHALL be added to the content of the <objectSetField>element. Example CLASS { &One TYPE-IDENTIFIER,element item. Legg& PragerExpires11 October 200514 January 2006 [Page67]71] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 Example CLASS { &One TYPE-IDENTIFIER, &Two ABSTRACT-SYNTAX OPTIONAL, &Three TYPE-IDENTIFIER DEFAULT { myObject } } <class> <objectSetField name="One" class="asn1:TYPE-IDENTIFIER"/> <optional> <objectSetField name="Two" class="asn1:ABSTRACT-SYNTAX"/> </optional> <optional> <objectSetField name="Three" class="asn1: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 either a DefinedObject, an ObjectDefn, an ObjectFromObject or a ParameterizedObject. If an Object is a ParameterizedObject then the translation of the Object is the translation of the Object on the right hand side of the referenced ParameterizedObjectAssignment. ASIDE: The Object that substitutes for a ParameterizedObject is potentially in a different module scope to the surrounding translation, therefore the translation of a nested Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14. 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 Legg Expires 14 January 2006 [Page 72] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 attribute item is the qualified name referencing the object definition (see Section 5.1). The attribute form translation SHALL NOT be used if the qualified name is shared by two or more object definitions in separate modules, i.e., is ambiguous.Legg & Prager Expires 11 October 2005 [Page 68] INTERNET-DRAFT ASN.1 Schema April 11, 2005The element form translation of an object reference is an element item with the [local name] "object". An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <object>element.element item. The [normalized value] of this attribute item is the qualified name referencing the object definition. If the qualified name is shared by two or more object definitions in separate modules then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <object>element.element item. The [normalized value] of this attribute item is the character string value of the AnyURIValue of the SCHEMA-IDENTITY encoding instruction for the module containing the object definition referenced by the DefinedObject. ASIDE: A SCHEMA-IDENTITY encoding instruction is obligatory in such cases (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 Object in the ActualParameter corresponding to the DummyReference. ASIDE: The Object that substitutes for a DummyReference is potentially in a different module scope to the surrounding translation, therefore the translation of a nested Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14. 10.2. ObjectDefn Translation An ObjectDefn in the DefinedSyntax form is first converted to the equivalent DefaultSyntax and then translated. The translation of an ObjectDefn is an element item with the [local name] "object". The translation of each FieldSetting in the DefaultSyntax of the ObjectClassDefn SHALL be appended to the [children] of the <object>element.element item. Legg Expires 14 January 2006 [Page 73] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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.element item. The [normalized value] of this attribute item is the PrimitiveFieldName without theampersand.ampersand ("&", U+0026). The translation of the Type, Value, ValueSet, Object or ObjectSet in theLegg & Prager Expires 11 October 2005 [Page 69] INTERNET-DRAFT ASN.1 Schema April 11, 2005Setting of the FieldSetting SHALL be added to the [children] of the <field>element.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="asn1:INTEGER"/> <valueSetField name="Three" type="asn1:INTEGER"/> <objectField name="four" class="asn1:TYPE-IDENTIFIER"/> <objectSetField name="Five" class="asn1: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="asn1:BOOLEAN"/> <field name="two"literal="99"/>literalValue="99"/> <field name="Three"> <valueSet> <union><value>1</value> <value>2</value><literalValue>1</literalValue> <literalValue>2</literalValue> </union> Legg Expires 14 January 2006 [Page 74] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </valueSet> </field> <field name="four" object="tns:myObject"/> <field name="Five"> <objectSet> <object ref="tns:myObject"/> </objectSet>Legg & Prager Expires 11 October 2005 [Page 70] INTERNET-DRAFT ASN.1 Schema April 11, 2005</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] "fromObjects" SHALL be added to the [children] of the <object>element.element item. The translation of the ReferencedObjects in the ObjectFromObject SHALL be added to the content of the <fromObjects>element.element item. The translation of the FieldName in the ObjectFromObject SHALL be appended to the content of the <fromObjects>element.element item. 11. Translation of Object Sets If an ObjectSet matches the form "{ DefinedObjectSet }" (i.e., a DefinedObjectSet in an ObjectSetElements in an Elements in a single IntersectionElements in a single Intersections in a Unions in an ElementSetSpec in a lone RootElementSetSpec in the ObjectSetSpec) 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". The translation of the ObjectSetSpec in the ObjectSet SHALL be added to the [children] of the <objectSet>element.element item. ASIDE: An ObjectSet that is directly a DefinedObjectSet is a notational capability that does not exist in ASN.1specificationsbut is allowed inASN.1 SchemaASN.X to avoid excessive nesting of <objectSet>elementselement 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. If an ObjectSetSpec contains a RootElementSetSpec and the ellipsis ("...") then the translation of the ObjectSetSpec is the translation of the ElementSetSpec in the RootElementSetSpec followed by an Legg Expires 14 January 2006 [Page 75] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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.element item. If an ObjectSetSpec does not contain a RootElementSetSpec then theLegg & Prager Expires 11 October 2005 [Page 71] INTERNET-DRAFT ASN.1 Schema April 11, 2005translation 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.element item. Contained within the ElementSetSpec will be one or more ObjectSetElements. 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 the qualified name referencing the object set definition (see Section 5.1). The attribute form translation SHALL NOT be used if the qualified name is shared by two or more object set definitions in separate modules, i.e., is ambiguous. The element form translation of an object set reference is an element item with the [local name] "objectSet". An attribute item with the [local name] "ref" SHALL be added to the [attributes] of the <objectSet>element.element item. The [normalized value] of this attribute item is the qualified name referencing the object set definition. If the qualified name is shared by two or more object set definitions in separate modules then an attribute item with the [local name] "context" SHALL be added to the [attributes] of the <objectSet>element.element item. The [normalized value] of this attribute item is the character string value of the AnyURIValue of the SCHEMA-IDENTITY encoding instruction for the module containing the object set definition referenced by the DefinedObjectSet. ASIDE: A SCHEMA-IDENTITY encoding instruction is obligatory in such cases (see Section 5.1). The translation of the DefinedObjectSet is the same whether the Legg Expires 14 January 2006 [Page 76] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 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 theLegg & Prager Expires 11 October 2005 [Page 72] INTERNET-DRAFT ASN.1 Schema April 11, 2005DefinedObjectSet is the translation of the ObjectSet in the ActualParameter corresponding to the DummyReference. ASIDE: The ObjectSet that substitutes for a DummyReference is potentially in a different module scope to the surrounding translation, therefore the translation of a nested Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14. 11.2. ObjectSetElements Translation If an ObjectSetElements is an Object then the translation of the ObjectSetElements is the translation of the Object, except that the attribute form of the DefinedObject translation SHALL NOT be used. If an ObjectSetElements is a DefinedObjectSet then the translation of the ObjectSetElements is the translation of the DefinedObjectSet, except that the attribute form of the DefinedObjectSet translation SHALL NOT be used. If an ObjectSetElements is an ObjectSetFromObjects then the translation of the ObjectSetElements is the translation of the ObjectSetFromObjects. If an ObjectSetElements is an ParameterizedObjectSet then the translation of the ObjectSetElements is the translation of the ObjectSet on the right hand side of the referenced ParameterizedObjectSetAssignment. ASIDE: An ObjectSetElements that is an ObjectSet is a notational capability that does not exist in ASN.1specificationsbut is allowed inASN.1 SchemaASN.X to avoid the need to manufacture a reference name for the expanded parameterized definition. ASIDE: The ObjectSet that substitutes for a ParameterizedObjectSet is potentially in a different module scope to the surrounding translation, therefore the translation of a nested Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14. Legg Expires 14 January 2006 [Page 77] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 11.2.1. ObjectSetFromObjects Translation The translation of an ObjectSetFromObjects is an element item with the [local name] "objectSet". An element item with the [local name] "fromObjects" SHALL be added to the [children] of the <objectSet>element.element item. The translation of the ReferencedObjects in the ObjectSetFromObjectsLegg & Prager Expires 11 October 2005 [Page 73] INTERNET-DRAFT ASN.1 Schema April 11, 2005SHALL be added to the content of the <fromObjects>element.element item. The translation of the FieldName in the ObjectSetFromObjects SHALL be appended to the content of the <fromObjects>element.element item. 12. Translation of Information From Objects If a ReferencedObjects is a DefinedObject (not a DummyReference) then the translation of the ReferencedObjects is the translation of the DefinedObject. If a ReferencedObjects is a DefinedObjectSet (not a DummyReference) then the translation of the ReferencedObjects is the translation of the DefinedObjectSet. If a ReferencedObjects is a DummyReference then the translation of the ReferencedObjects is the translation of the Object or ObjectSet in the ActualParameter corresponding to the DummyReference. If a ReferencedObjects is a ParameterizedObject then the translation of the ReferencedObjects is the translation of the Object on the right hand side of the referenced ParameterizedObjectAssignment. If a ReferencedObjects is a ParameterizedObjectSet then the translation of the ReferencedObjects is the translation of the ObjectSet on the right hand side of the referenced ParameterizedObjectSetAssignment. ASIDE: A ReferencedObjects that is an Object or ObjectSet is a notational capability that does not exist in ASN.1specificationsbut is allowed inASN.1 SchemaASN.X to avoid the need to manufacture a reference name for an expanded parameterized definition. ASIDE: The Object or ObjectSet that substitutes for a ParameterizedObject, ParameterizedObjectSet or DummyReference is potentially in a different module scope to the surrounding translation, therefore the translation of a nested Type may require a tagDefault or extensibilityImpliedattribute,attribute item, according to the provisions of Section 6.14. Legg Expires 14 January 2006 [Page 78] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 13. EncodingControlSection Translation If the encodingreference in an EncodingControlSection is RXER then the translation of the EncodingControlSection is empty. ASIDE: This is not suggesting that RXER encoding control sections are ignored. Encoding control sections for RXER are not explicitly represented inASN.1 Schema,ASN.X, but rather affect how anLegg & Prager Expires 11 October 2005 [Page 74] INTERNET-DRAFT ASN.1 Schema April 11, 2005ASN.1 specification is translated into anASN.1 SchemaASN.X document. 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 inASN.1 Schema.ASN.X. If the encodingreference in an EncodingControlSection is GSER then the translation of the EncodingControlSection is an element item with the [local name] "encodingControl-GSER". The translation of the EncodingInstructionAssignmentList SHALL be added to the content of the <encodingControl-GSER>element.element item. The EncodingInstructionAssignmentList notation is different for each set of encoding instructions. The translation intoASN.1 SchemaASN.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] "encodingControl-XER". The translation of the EncodingInstructionAssignmentList SHALL be added to the content of the <encodingControl-XER>element.element item. The translation intoASN.1 SchemaASN.X of an EncodingInstructionAssignmentList for XER is specified in a separate document[XEREIT]. 14. Security Considerations The ASN.1 Schema translation[XEREIT]. 14. 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. An ASN.X document can be re-encoded using any set of canonical encoding rules for ASN.1. Before such re-encoding it is necessary to normalize abstract values of the AnyType ASN.1 type [RXER]. The Legg Expires 14 January 2006 [Page 79] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 underlying ASN.1 type for the <literalValue> and <restrictBy> elements in the ASN.1 for ASN.X is AnyType. The normalization rules can be found in Section 4.1.2 of the specification for RXER [RXER]. 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 document (an abstract value of the ModuleDefinition ASN.1specificationtype) potentially changes if it issemantically equivalent todecoded and re-encoded, disrupting theoriginal ASN.1 specification. The security considerations that applyCanonical XML representation. To avoid this problem, ASN.X documents must be normalized prior toan application built fromtheoriginal ASN.1 specification apply equally to anapplicationbuilt fromof syntax-based canonicalization. The normalization rules can be found in Section 5.12 of theASN.1 Schema translation.specification for RXER [RXER]. 15. Acknowledgements This document and the technology it describes are a product of a joint research project between Adacel Technologies Limited and Deakin University on leveraging existing directory technology to produce an XML-based directory service. 16. IANA Considerations This document has no actions for IANA.Legg & Prager Expires 11 October 2005 [Page 75] INTERNET-DRAFT ASN.1 Schema April 11, 2005Appendix A. ASN.1 forASN.1 SchemaASN.X This appendix is normative.ASN1-SchemaAbstractSyntaxNotation-X { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) xmled(21472) asn1(1) module(0)schema(1)notation(1) } -- Copyright (C) The Internet Society 2005. This version of -- this ASN.1 module is part of RFC XXXX; see the RFC itself -- for full legal notices. DEFINITIONS RXER INSTRUCTIONS AUTOMATIC TAGS EXTENSIBILITY IMPLIED ::= BEGIN IMPORTS AnyType,AnySimpleType,AnyURI, NCName, Name, Legg Expires 14 January 2006 [Page 80] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 QName FROM AdditionalBasicDefinitions { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) xmled(21472) asn1(1) module(0) basic(0) } GSER-EncodingInstruction, GSER-EncodingInstructionAssignmentList FROMGSER-EncodingInstructionSchemaGSER-EncodingInstructionNotation { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) xmled(21472) asn1(1) module(0)gser-ei-schema(2)gser-ei-notation(2) } XER-EncodingInstruction, XER-EncodingInstructionAssignmentList FROMXER-EncodingInstructionSchemaXER-EncodingInstructionNotation { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) xmled(21472) asn1(1) module(0)xer-ei-schema(3)xer-ei-notation(3) } ; ModuleDefinition ::= SEQUENCE { name [ATTRIBUTE] ModuleReference, identifier [ATTRIBUTE] DefinitiveIdentifier OPTIONAL, schemaIdentity [ATTRIBUTE] AnyURI OPTIONAL, targetNamespace [ATTRIBUTE] AnyURI OPTIONAL,Legg & Prager Expires 11 October 2005 [Page 76] INTERNET-DRAFT ASN.1 Schema April 11, 2005tagDefault [ATTRIBUTE] TagDefault DEFAULT automatic, extensibilityImplied [ATTRIBUTE] BOOLEAN DEFAULT FALSE, imports [CONTENT] ImportList OPTIONAL, assignments [CONTENT] AssignmentList OPTIONAL, encodingControls [CONTENT] EncodingControlSections OPTIONAL } ModuleReference ::= TypeReference DefinitiveIdentifier ::= OBJECT IDENTIFIER TagDefault ::= [VALUES ALL UPPERCASED] ENUMERATED { explicit, implicit, automatic } 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 } Legg Expires 14 January 2006 [Page 81] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 AssignmentList ::= SEQUENCE SIZE (1..MAX) OF assignment [CONTENT] Assignment Assignment ::= CHOICE { namedType TypeAssignment, namedValue ValueAssignment, namedValueSet ValueSetTypeAssignment, namedClass ObjectClassAssignment, namedObject ObjectAssignment, namedObjectSet ObjectSetAssignment, component [CONTENT] TopLevelNamedType } TypeAssignment ::= SEQUENCE { name [ATTRIBUTE] TypeReference, type [CONTENT] Type } TypeReference ::= UTF8String (PATTERN "[A-Z]\w*(-\w+)*") -- \w is equivalent to [a-zA-Z0-9] ValueAssignment ::= SEQUENCE { name [ATTRIBUTE] ValueReference, type [CONTENT] Type,Legg & Prager Expires 11 October 2005 [Page 77] INTERNET-DRAFT ASN.1 Schema April 11, 2005value [CONTENT] Value } ValueReference ::= Identifier Identifier ::= UTF8String (PATTERN "[a-z]\w(-\w+)*") ValueSetTypeAssignment ::= SEQUENCE { name [ATTRIBUTE] TypeReference, type [CONTENT] Type, valueSet [CONTENT] ValueSet } ObjectClassAssignment ::= SEQUENCE { name [ATTRIBUTE] ObjectClassReference, objectClass [CONTENT] ObjectClass } ObjectClassReference ::= UTF8String (PATTERN "[A-Z][A-Z0-9]*(-[A-Z0-9]+)*") ObjectAssignment ::= SEQUENCE { name [ATTRIBUTE] ObjectReference, objectClass [CONTENT] DefinedObjectClass, Legg Expires 14 January 2006 [Page 82] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 object [CONTENT] Object } ObjectReference ::= ValueReference ObjectSetAssignment ::= SEQUENCE { name [ATTRIBUTE] ObjectSetReference, objectClass [CONTENT] DefinedObjectClass, objectSet [CONTENT] ObjectSet } ObjectSetReference ::= TypeReference TopLevelNamedType ::= NamedType (WITH COMPONENTS { ..., attribute (WITH COMPONENTS { ..., reference ABSENT }), element (WITH COMPONENTS { ..., reference ABSENT }), content ABSENT, member ABSENT, item ABSENT }) NamedType ::= CHOICE { attribute Attribute, element Element,Legg & Prager Expires 11 October 2005 [Page 78] INTERNET-DRAFT ASN.1 Schema April 11, 2005content InvisibleNamedType, member InvisibleNamedType, item InvisibleNamedType } Attribute ::= GenericNamedType (WITH COMPONENTS { ..., definition (WITH COMPONENTS { ..., typeAsVersion ABSENT }) }) Element ::= GenericNamedType InvisibleNamedType ::= GenericNamedType (WITH COMPONENTS { ..., reference ABSENT, definition (WITH COMPONENTS { ..., typeAsVersion ABSENT }) }) GenericNamedType ::= CHOICE { reference [CONTENT]GeneralReference,TypeOrElementReference, definition [CONTENT] SEQUENCE { name [ATTRIBUTE] NCName, identifier [ATTRIBUTE] IdentifierOrEmpty OPTIONAL, typeAsVersion [ATTRIBUTE] BOOLEAN DEFAULT FALSE, Legg Expires 14 January 2006 [Page 83] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 type [CONTENT] Type } } TypeOrElementReference ::= SEQUENCE { name [CONTENT] CHOICE { ref [ATTRIBUTE] QName, elementType [ATTRIBUTE] Name }, context [ATTRIBUTE] AnyURI OPTIONAL, embedded [ATTRIBUTE] BOOLEAN OPTIONAL } IdentifierOrEmpty ::= UTF8String (INCLUDES Identifier | "") Type ::= CHOICE { typeRef [NAME AS "type"] [ATTRIBUTE] QName, type ElementFormType } ElementFormType ::= SEQUENCE { tagDefault [ATTRIBUTE] TagDefault OPTIONAL, extensibilityImplied [ATTRIBUTE] BOOLEAN OPTIONAL, explicit [ATTRIBUTE] BOOLEAN DEFAULT FALSE, definition [CONTENT] CHOICE { reference [CONTENT]GeneralReference,TypeOrElementReference, ancestor [ATTRIBUTE] INTEGER (1..MAX), namedBitList NamedBitList, namedNumberList NamedNumberList, enumerated EnumeratedType, tagged TaggedType, prefixed EncodingPrefixedType, selection SelectionType,Legg & Prager Expires 11 October 2005 [Page 79] INTERNET-DRAFT ASN.1 Schema April 11, 2005instanceOf InstanceOfType, fromClass ObjectClassFieldType, fromObjects InformationFromObjects, sequence SequenceType, set SetType, choice ChoiceType, union UnionType, sequenceOf SequenceOfType, setOf SetOfType, list ListType, constrained ConstrainedType } }GeneralReference ::= SEQUENCE { reference [CONTENT] CHOICE { ref [ATTRIBUTE] QName, elementType [ATTRIBUTE] Name }, context [ATTRIBUTE] AnyURI OPTIONAL, canonicalization [ATTRIBUTE] AnyURI OPTIONAL } Reference ::= GeneralReference (WITH COMPONENTS { ..., reference (WITH COMPONENTS { ..., elementType ABSENT }), canonicalization ABSENT })NamedBitList ::= SEQUENCE { Legg Expires 14 January 2006 [Page 84] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 namedBits [CONTENT] SEQUENCE SIZE (1..MAX) OF namedBit NamedBit } NamedBit ::= SEQUENCE { name [ATTRIBUTE] NCName, identifier [ATTRIBUTE] Identifier OPTIONAL, bit [ATTRIBUTE] INTEGER (0..MAX) } NamedNumberList ::= SEQUENCE { namedNumbers [CONTENT] SEQUENCE SIZE (1..MAX) OF namedNumber NamedNumber } NamedNumber ::= SEQUENCE { name [ATTRIBUTE] NCName, identifier [ATTRIBUTE] Identifier OPTIONAL, number [ATTRIBUTE] INTEGERLegg & Prager Expires 11 October 2005 [Page 80] INTERNET-DRAFT ASN.1 Schema April 11, 2005} EnumeratedType ::= SEQUENCE { root [CONTENT] Enumeration, extension SEQUENCE { exception ExceptionSpec OPTIONAL, additions [CONTENT] Enumeration OPTIONAL } OPTIONAL } Enumeration ::= SEQUENCE SIZE (1..MAX) OF enumeration EnumerationItem EnumerationItem ::= SEQUENCE { name [ATTRIBUTE] NCName, identifier [ATTRIBUTE] Identifier OPTIONAL, number [ATTRIBUTE] INTEGER OPTIONAL } TaggedType ::= SEQUENCE { tagClass [ATTRIBUTE] TagClass OPTIONAL, tagging [ATTRIBUTE] Tagging OPTIONAL, type [CONTENT] Type } TagClass ::= [VALUES ALL UPPERCASED] ENUMERATED { universal, application, private } Tagging ::= [VALUES ALL UPPERCASED] Legg Expires 14 January 2006 [Page 85] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 ENUMERATED { explicit, implicit } EncodingPrefixedType ::= SEQUENCE { prefixes [CONTENT] EncodingPrefixes, type [CONTENT] Type } EncodingPrefixes ::= SEQUENCE SIZE (1..MAX) OF prefix [CONTENT] EncodingPrefix EncodingPrefix ::= CHOICE { gser [NAME AS "GSER"] GSER-EncodingInstructions, xer [NAME AS "XER"] XER-EncodingInstructions -- plus encoding instructions -- for other encoding rules in the future } GSER-EncodingInstructions ::= SEQUENCE SIZE (1..MAX) OF instruction [CONTENT] GSER-EncodingInstructionLegg & Prager Expires 11 October 2005 [Page 81] INTERNET-DRAFT ASN.1 Schema April 11, 2005XER-EncodingInstructions ::= SEQUENCE SIZE (1..MAX) OF instruction [CONTENT] XER-EncodingInstruction SelectionType ::= SEQUENCE { alternative [CONTENT] CHOICE { attribute [ATTRIBUTE] QName, element [ATTRIBUTE] QName, content [ATTRIBUTE] QName, member [ATTRIBUTE] QName }, type [CONTENT] Type } InstanceOfType ::= SEQUENCE { objectClass [CONTENT] DefinedObjectClass } ObjectClassFieldType ::= SEQUENCE { objectClass [CONTENT] DefinedObjectClass, fieldName [CONTENT] FieldName } FieldName ::= CHOICE { fieldNameAtt [NAME AS "fieldName"] [ATTRIBUTE] PrimitiveFieldNames, fieldName PrimitiveFieldNames } Legg Expires 14 January 2006 [Page 86] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 PrimitiveFieldNames ::= UTF8String InformationFromObjects ::= SEQUENCE { referencedObjects [CONTENT] ReferencedObjects, fieldName [CONTENT] FieldName } ReferencedObjects ::= CHOICE { object [CONTENT] Object, objectSet [CONTENT] ObjectSet } SequenceType ::= SEQUENCE { root [CONTENT] ComponentTypeList OPTIONAL, extensionAndFinal [CONTENT] SEQUENCE { extension SEQUENCE { exception ExceptionSpec OPTIONAL, additions [CONTENT] ExtensionAdditions OPTIONAL }, root [CONTENT] ComponentTypeList OPTIONALLegg & Prager Expires 11 October 2005 [Page 82] INTERNET-DRAFT ASN.1 Schema April 11, 2005} OPTIONAL } ComponentTypeList ::= SEQUENCE SIZE (1..MAX) OF componentType [CONTENT] ComponentType ComponentType ::= CHOICE { component [CONTENT] SequenceNamedType, optional SEQUENCE { component [CONTENT] SequenceNamedType, default SEQUENCE { value [CONTENT] Value } OPTIONAL }, componentsOf SEQUENCE { type [CONTENT] Type } } SequenceNamedType ::= NamedType (WITH COMPONENTS { ..., member ABSENT, item ABSENT }) ExtensionAdditions ::= SEQUENCE SIZE (1..MAX) OF addition [CONTENT] ExtensionAddition ExtensionAddition ::= CHOICE { extensionGroup ExtensionAdditionGroup, componentType [CONTENT] ComponentType Legg Expires 14 January 2006 [Page 87] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 } ExtensionAdditionGroup ::= SEQUENCE { version [ATTRIBUTE] VersionNumber OPTIONAL, componentTypes [CONTENT] ComponentTypeList } VersionNumber ::= INTEGER (2..MAX) SetType ::= SequenceType ChoiceOrUnionType ::= SEQUENCE { precedence [ATTRIBUTE] PrecedenceList OPTIONAL, root [CONTENT] AlternativeTypeList, extension SEQUENCE { exception ExceptionSpec OPTIONAL, additions [CONTENT] ExtensionAdditionAlternatives OPTIONAL } OPTIONAL }Legg & Prager Expires 11 October 2005 [Page 83] INTERNET-DRAFT ASN.1 Schema April 11, 2005PrecedenceList ::= [LIST] SEQUENCE SIZE (1..MAX) OF member QName AlternativeTypeList ::= SEQUENCE SIZE (1..MAX) OF component [CONTENT] ChoiceOrUnionNamedType ChoiceOrUnionNamedType ::= NamedType (WITH COMPONENTS { ..., item ABSENT }) ExtensionAdditionAlternatives ::= SEQUENCE SIZE (1..MAX) OF addition [CONTENT] ExtensionAdditionAlternative ExtensionAdditionAlternative ::= CHOICE { extensionGroup ExtensionAdditionAlternativesGroup, component [CONTENT] ChoiceOrUnionNamedType } ExtensionAdditionAlternativesGroup ::= SEQUENCE { version [ATTRIBUTE] VersionNumber OPTIONAL, alternatives [CONTENT] AlternativeTypeList } ChoiceType ::= ChoiceOrUnionType (WITH COMPONENTS { ..., precedence ABSENT, root (WITH COMPONENT (INCLUDES ChoiceNamedType)), extension (WITH COMPONENTS { ..., additions (WITH COMPONENT (WITH COMPONENTS { ..., extensionGroup (WITH COMPONENTS { ..., Legg Expires 14 January 2006 [Page 88] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 alternatives (WITH COMPONENT (INCLUDES ChoiceNamedType)) }), component (INCLUDES ChoiceNamedType) })) }) }) ChoiceNamedType ::= ChoiceOrUnionNamedType (WITH COMPONENTS { ..., member ABSENT }) UnionType ::= ChoiceOrUnionType (WITH COMPONENTS { ..., 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 { ..., attribute ABSENT, element ABSENT, content ABSENT })Legg & Prager Expires 11 October 2005 [Page 84] INTERNET-DRAFT ASN.1 Schema April 11, 2005SequenceOfOrListType ::= SEQUENCE { minSize [ATTRIBUTE] INTEGER (0..MAX) OPTIONAL, maxSize [ATTRIBUTE] INTEGER (0..MAX) OPTIONAL, component [CONTENT] NamedType (WITH COMPONENTS { ..., attribute ABSENT, member ABSENT }) } SequenceOfType ::= SequenceOfOrListType (WITH COMPONENTS { ..., component (WITH COMPONENTS { ..., item ABSENT }) }) SetOfType ::= SequenceOfType ListType ::= SequenceOfOrListType (WITH COMPONENTS { ..., component (WITH COMPONENTS { ..., element ABSENT, content ABSENT }) }) ConstrainedType ::= SEQUENCE { type [CONTENT] Type, constraint [CONTENT] Constraint } Constraint ::= SEQUENCE { constraintSpec [CONTENT] CHOICE { subtype [CONTENT] ElementSetSpecs, Legg Expires 14 January 2006 [Page 89] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 constrainedBy UserDefinedConstraint, table TableConstraint, contents ContentsConstraint }, exception ExceptionSpec OPTIONAL } UserDefinedConstraint ::= SEQUENCE { parameters [CONTENT] ConstraintParameters OPTIONAL } ConstraintParameters ::= SEQUENCE SIZE (1..MAX) OF parameter [CONTENT] UserDefinedConstraintParameter UserDefinedConstraintParameter ::= CHOICE { valueParameter SEQUENCE { type [CONTENT] Type, value [CONTENT] Value }, valueSetParameter SEQUENCE { type [CONTENT] Type,Legg & Prager Expires 11 October 2005 [Page 85] INTERNET-DRAFT ASN.1 Schema April 11, 2005valueSet [CONTENT] ValueSet }, objectParameter SEQUENCE { objectClass [CONTENT] DefinedObjectClass, object [CONTENT] Object }, objectSetParameter SEQUENCE { objectClass [CONTENT] DefinedObjectClass, objectSet [CONTENT] ObjectSet }, typeParameter SEQUENCE { type [CONTENT] Type }, classParameter SEQUENCE { objectClass [CONTENT] DefinedObjectClass } } TableConstraint ::= SEQUENCE { objectSet [CONTENT] ObjectSet, componentRelation [CONTENT] AtNotations OPTIONAL } AtNotations ::= SEQUENCE SIZE (1..MAX) OF restrictBy AtNotation AtNotation ::=AnySimpleTypeAnyType Legg Expires 14 January 2006 [Page 90] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 ContentsConstraint ::= SEQUENCE { containing SEQUENCE { type [CONTENT] Type } OPTIONAL, encodedBy SEQUENCE { value [CONTENT] Value } OPTIONAL } ((WITH COMPONENTS { ..., containing PRESENT }) | (WITH COMPONENTS { ..., encodedBy PRESENT })) ExceptionSpec ::= SEQUENCE { type [CONTENT] Type, value [CONTENT] Value } Value ::= CHOICE {literalliteralValueAtt [NAME AS "literalValue"] [ATTRIBUTE]AnySimpleType,UTF8String, literalValue ElementFormLiteralValue, valueRef [NAME AS "value"] [ATTRIBUTE] QName, valueElementFormValueElementFormNotationalValue }Legg & Prager Expires 11 October 2005 [Page 86] INTERNET-DRAFT ASN.1 Schema April 11, 2005 ElementFormValueElementFormLiteralValue ::= AnyType -- Ifasn1:meta="true"asn1:literal="false" then the governing type ofValue.value-- ElementFormLiteralValue isElementFormMetaValue. ElementFormMetaValueElementFormNotationalValue. ElementFormNotationalValue ::= SEQUENCE { definition [CONTENT] CHOICE { reference [CONTENT]GeneralReference,Reference, fromObjects InformationFromObjects, openTypeValue SEQUENCE { type [CONTENT] Type, value [CONTENT] Value }, components [CONTENT] ComponentValueList } } Reference ::= SEQUENCE { ref [ATTRIBUTE] QName, context [ATTRIBUTE] AnyURI OPTIONAL } ComponentValueList ::= SEQUENCE SIZE (1..MAX) OF component [CONTENT] NamedValue NamedValue ::= CHOICE { attribute GenericNamedValue, Legg Expires 14 January 2006 [Page 91] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 element GenericNamedValue, content GenericNamedValue, member GenericNamedValue, item GenericNamedValue } GenericNamedValue ::= SEQUENCE { name [ATTRIBUTE] QName, value [CONTENT] Value } ValueSet ::= CHOICE { valueSet ElementFormValueSet } ElementFormValueSet ::= SEQUENCE { definition [CONTENT] CHOICE { elementSetSpecs [CONTENT] ElementSetSpecs } } ElementSetSpecs ::= SEQUENCE { root [CONTENT] ElementSetSpec, extension SEQUENCE { additions [CONTENT] ElementSetSpec } OPTIONAL }Legg & Prager Expires 11 October 2005 [Page 87] INTERNET-DRAFT ASN.1 Schema April 11, 2005ElementSetSpec ::= CHOICE { single [CONTENT] Intersections, union SEQUENCE { list [CONTENT] IntersectionsList } } IntersectionsList ::= SEQUENCE SIZE (2..MAX) OF intersections [CONTENT] Intersections Intersections ::= CHOICE { single [CONTENT] IntersectionElements, intersection SEQUENCE { list [CONTENT] IntersectionElementsList } } IntersectionElementsList ::= SEQUENCE SIZE (2..MAX) OF intersectionElements [CONTENT] IntersectionElements Legg Expires 14 January 2006 [Page 92] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 IntersectionElements ::= CHOICE { all SEQUENCE { elements [CONTENT] Elements OPTIONAL, except SEQUENCE { exclusions [CONTENT] Elements } }, elements [CONTENT] Elements } Elements ::= CHOICE { literalValue ElementFormLiteralValue, valueElementFormValue,ElementFormNotationalValue, includes SEQUENCE { containedSubtype [CONTENT] Type }, range ValueRange, size SEQUENCE { constraint [CONTENT] Constraint }, typeConstraint SEQUENCE { type [CONTENT] Type }, from SEQUENCE { permittedAlphabet [CONTENT] Constraint }, withComponent SEQUENCE { singleTypeConstraint [CONTENT] Constraint },Legg & Prager Expires 11 October 2005 [Page 88] INTERNET-DRAFT ASN.1 Schema April 11, 2005withComponents MultipleTypeConstraints, pattern SEQUENCE { patternConstraint [CONTENT] Value }, object ElementFormObject, objectSet ElementFormObjectSet } ValueRange ::= SEQUENCE { minimum [CONTENT] CHOICE { minInclusive SEQUENCE { lowerEndValue [CONTENT] Value OPTIONAL }, minExclusive SEQUENCE { lowerEndValue [CONTENT] Value OPTIONAL } } DEFAULT minInclusive:{}, maximum [CONTENT] CHOICE { maxInclusive SEQUENCE { Legg Expires 14 January 2006 [Page 93] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 upperEndValue [CONTENT] Value OPTIONAL }, maxExclusive SEQUENCE { upperEndValue [CONTENT] Value OPTIONAL } } DEFAULT maxInclusive:{} } MultipleTypeConstraints ::= SEQUENCE { partial [ATTRIBUTE] BOOLEAN DEFAULT FALSE, typeConstraints [CONTENT] TypeConstraints } TypeConstraints ::= SEQUENCE SIZE (1..MAX) OF namedConstraint [CONTENT] NamedConstraint NamedConstraint ::= CHOICE { attribute GenericNamedConstraint, element GenericNamedConstraint, content GenericNamedConstraint, member GenericNamedConstraint, item GenericNamedConstraint } GenericNamedConstraint ::= SEQUENCE { name [ATTRIBUTE] QName, use [ATTRIBUTE] PresenceConstraint OPTIONAL, constraint [CONTENT] Constraint OPTIONAL }Legg & Prager Expires 11 October 2005 [Page 89] INTERNET-DRAFT ASN.1 Schema April 11, 2005PresenceConstraint ::= [VALUES ALL UPPERCASED] ENUMERATED { present, absent, optional } ObjectClass ::= CHOICE { classRef [NAME AS "class"] [ATTRIBUTE] QName, class ElementFormObjectClass } DefinedObjectClass ::= ObjectClass (WITH COMPONENTS { ..., class (WITH COMPONENTS { ..., definition (WITH COMPONENTS { ..., objectClassDefn ABSENT }) }) }) ElementFormObjectClass ::= SEQUENCE { definition [CONTENT] CHOICE { reference [CONTENT] Reference, objectClassDefn [CONTENT] ObjectClassDefn Legg Expires 14 January 2006 [Page 94] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 } } ObjectClassDefn ::= SEQUENCE SIZE (1..MAX) OF fieldSpec [CONTENT] FieldSpec FieldSpec ::= CHOICE { typeField TypeField, valueField ValueField, valueSetField ValueSetField, objectField ObjectField, objectSetField ObjectSetField, optional OptionalField } OptionalField ::= SEQUENCE { field [CONTENT] CHOICE { typeField TypeField, valueField ValueField, valueSetField ValueSetField, objectField ObjectField, objectSetField ObjectSetField }, default SEQUENCE { setting [CONTENT] Setting } OPTIONAL } (WITH COMPONENTS { ..., field (WITH COMPONENTS { typeField PRESENT }), default (WITH COMPONENTS { setting (WITH COMPONENTS { type PRESENT }) }) } |Legg & Prager Expires 11 October 2005 [Page 90] INTERNET-DRAFT ASN.1 Schema April 11, 2005WITH COMPONENTS { ..., field (WITH COMPONENTS { valueField PRESENT }), default (WITH COMPONENTS { setting (WITH COMPONENTS { value PRESENT }) }) } | WITH COMPONENTS { ..., field (WITH COMPONENTS { valueSetField PRESENT }), default (WITH COMPONENTS { setting (WITH COMPONENTS { valueSet PRESENT }) }) } | WITH COMPONENTS { ..., field (WITH COMPONENTS { objectField PRESENT }), default (WITH COMPONENTS { setting (WITH COMPONENTS { object PRESENT }) }) } | WITH COMPONENTS { ..., field (WITH COMPONENTS { objectSetField PRESENT }), default (WITH COMPONENTS { setting (WITH COMPONENTS { objectSet PRESENT }) }) }) TypeField ::= SEQUENCE { Legg Expires 14 January 2006 [Page 95] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 name [ATTRIBUTE] TypeFieldReference } TypeFieldReference ::= TypeReference ValueField ::= SEQUENCE { name [ATTRIBUTE] ValueFieldReference, unique [ATTRIBUTE] BOOLEAN DEFAULT FALSE, governor [CONTENT] CHOICE { type [CONTENT] Type, typeFromField SEQUENCE { fieldName [CONTENT] FieldName } } } ((WITH COMPONENTS { ..., unique ABSENT }) | (WITH COMPONENTS { ..., governor (WITH COMPONENTS { ..., typeFromField ABSENT }) })) ValueFieldReference ::= ValueReference ValueSetField ::= SEQUENCE { name [ATTRIBUTE] ValueSetFieldReference, governor [CONTENT] CHOICE { type [CONTENT] Type, typeFromField SEQUENCE { fieldName [CONTENT] FieldName } } }Legg & Prager Expires 11 October 2005 [Page 91] INTERNET-DRAFT ASN.1 Schema April 11, 2005ValueSetFieldReference ::= TypeReference ObjectField ::= SEQUENCE { name [ATTRIBUTE] ObjectFieldReference, objectClass [CONTENT] DefinedObjectClass } ObjectFieldReference ::= ObjectReference ObjectSetField ::= SEQUENCE { name [ATTRIBUTE] ObjectSetFieldReference, objectClass [CONTENT] DefinedObjectClass } ObjectSetFieldReference ::= ObjectSetReference Object ::= CHOICE { objectRef [NAME AS "object"] [ATTRIBUTE] QName, Legg Expires 14 January 2006 [Page 96] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 object ElementFormObject } ElementFormObject ::= SEQUENCE { definition [CONTENT] CHOICE { reference [CONTENT] Reference, fromObjects InformationFromObjects, fields [CONTENT] ObjectDefn } } ObjectDefn ::= SEQUENCE OF field FieldSetting FieldSetting ::= SEQUENCE { name [ATTRIBUTE] NCName, setting [CONTENT] Setting } Setting ::= CHOICE { type [CONTENT] Type, value [CONTENT] Value, valueSet [CONTENT] ValueSet, object [CONTENT] Object, objectSet [CONTENT] ObjectSet } ObjectSet ::= CHOICE { objectSetRef [NAME AS "objectSet"] [ATTRIBUTE] QName, objectSet ElementFormObjectSet }Legg & Prager Expires 11 October 2005 [Page 92] INTERNET-DRAFT ASN.1 Schema April 11, 2005ElementFormObjectSet ::= SEQUENCE { definition [CONTENT] CHOICE { reference [CONTENT] Reference, objectSetSpec [CONTENT] ObjectSetSpec, fromObjects InformationFromObjects } } ObjectSetSpec ::= SEQUENCE { root [CONTENT] ElementSetSpec OPTIONAL, extension SEQUENCE { additions [CONTENT] ElementSetSpec } OPTIONAL } EncodingControlSections ::= SEQUENCE SIZE (1..MAX) OF section [CONTENT] EncodingControlSection Legg Expires 14 January 2006 [Page 97] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 EncodingControlSection ::= CHOICE { encodingControl-GSER GSER-EncodingInstructionAssignmentList, encodingControl-XER XER-EncodingInstructionAssignmentList -- plus encoding control sections -- for other encoding rules in the future } ENCODING-CONTROL RXER SCHEMA-IDENTITY"http://xmled.info/id/ASN.1/Schema""http://xmled.info/id/ASN.1/AbstractSyntaxNotation-X" TARGET-NAMESPACE "http://xmled.info/ns/ASN.1" COMPONENTschemamodule ModuleDefinition COMPONENTmetaliteral [ATTRIBUTE] BOOLEAN END Appendix B.ASN.1 SchemaASN.X forASN.1 SchemaASN.X This appendix is non-normative. <?xml version="1.0"?><asn1:schema<asn1:module xmlns:asn1="http://xmled.info/ns/ASN.1" xmlns:gser="http://xmled.info/ns/ASN.1" xmlns:xer="http://xmled.info/ns/ASN.1"name="ASN1-Schema"name="AbstractSyntaxNotation-X" identifier="1.3.6.1.4.1.21472.1.0.1"schemaIdentity="http://xmled.info/id/ASN.1/Schema" xmlns:asd="http://xmled.info/ns/ASN.1" Legg & Prager Expires 11 October 2005 [Page 93] INTERNET-DRAFT ASN.1 Schema April 11, 2005schemaIdentity= "http://xmled.info/id/ASN.1/AbstractSyntaxNotation-X" xmlns:asnx="http://xmled.info/ns/ASN.1" targetNamespace="http://xmled.info/ns/ASN.1" extensibilityImplied="true"> <!-- Copyright (C) The Internet Society 2005. This version of thisASN.1 SchemaASN.X document is part of RFC XXXX; see the RFC itself for full legal notices. --> <importname="GSER-EncodingInstructionSchema"name="GSER-EncodingInstructionNotation" identifier="1.3.6.1.4.1.21472.1.0.2" schemaIdentity="http://xmled.info/id/ASN.1/GSER-EncodingInstructionSchema" namespace="http://xmled.info/ns/ASN.1" schemaLocation="GSER-EncodingInstructionSchema.asd"/>"http://xmled.info/id/ASN.1/GSER-EncodingInstructionNotation" namespace="http://xmled.info/ns/ASN.1"/> <importname="XER-EncodingInstructionSchema"name="XER-EncodingInstructionNotation" Legg Expires 14 January 2006 [Page 98] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 identifier="1.3.6.1.4.1.21472.1.0.3" schemaIdentity="http://xmled.info/id/ASN.1/XER-EncodingInstructionSchema" namespace="http://xmled.info/ns/ASN.1" schemaLocation="XER-EncodingInstructionSchema.asd"/>"http://xmled.info/id/ASN.1/XER-EncodingInstructionNotation" namespace="http://xmled.info/ns/ASN.1"/> <namedType name="ModuleDefinition"> <type> <sequence> <attribute name="name"type="asd:ModuleReference"/>type="asnx:ModuleReference"/> <optional> <attribute name="identifier"type="asd:DefinitiveIdentifier"/>type="asnx:DefinitiveIdentifier"/> </optional> <optional> <attribute name="schemaIdentity" type="asn1:AnyURI"/> </optional> <optional> <attribute name="targetNamespace" type="asn1:AnyURI"/> </optional> <optional> <attribute name="tagDefault"type="asd:TagDefault"/>type="asnx:TagDefault"/> <defaultliteral="AUTOMATIC"/>literalValue="AUTOMATIC"/> </optional> <optional> <attribute name="extensibilityImplied" type="asn1:BOOLEAN"/> <defaultliteral="false"/>literalValue="false"/> </optional> <optional> <content name="imports"type="asd:ImportList"/>type="asnx:ImportList"/> </optional> <optional> <content name="assignments"type="asd:AssignmentList"/>type="asnx:AssignmentList"/> </optional>Legg & Prager Expires 11 October 2005 [Page 94] INTERNET-DRAFT ASN.1 Schema April 11, 2005<optional> <content name="encodingControls"type="asd:EncodingControlSections"/>type="asnx:EncodingControlSections"/> </optional> </sequence> </type> </namedType> <namedType name="ModuleReference"type="asd:TypeReference"/>type="asnx:TypeReference"/> <namedType name="DefinitiveIdentifier" type="asn1:OBJECT-IDENTIFIER"/> <namedType name="TagDefault"> <type> <enumerated> Legg Expires 14 January 2006 [Page 99] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <enumeration name="EXPLICIT" identifier="explicit"/> <enumeration name="IMPLICIT" identifier="implicit"/> <enumeration name="AUTOMATIC" identifier="automatic"/> </enumerated> </type> </namedType> <namedType name="ImportList"> <type> <sequenceOf minSize="1"> <element name="import"type="asd:Import"/>type="asnx:Import"/> </sequenceOf> </type> </namedType> <namedType name="Import"> <type> <sequence> <optional> <attribute name="name"type="asd:ModuleReference"/>type="asnx:ModuleReference"/> </optional> <optional> <attribute name="identifier"type="asd:DefinitiveIdentifier"/>type="asnx:DefinitiveIdentifier"/> </optional> <optional> <attribute name="schemaIdentity" type="asn1:AnyURI"/> </optional> <optional> <attribute name="namespace" type="asn1:AnyURI"/> </optional> <optional> <attribute name="schemaLocation" type="asn1:AnyURI"/>Legg & Prager Expires 11 October 2005 [Page 95] INTERNET-DRAFT ASN.1 Schema April 11, 2005</optional> </sequence> </type> </namedType> <namedType name="AssignmentList"> <type> <sequenceOf minSize="1"> <content name="assignment"type="asd:Assignment"/>type="asnx:Assignment"/> </sequenceOf> </type> </namedType> <namedType name="Assignment"> <type> <choice> Legg Expires 14 January 2006 [Page 100] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <element name="namedType"type="asd:TypeAssignment"/>type="asnx:TypeAssignment"/> <element name="namedValue"type="asd:ValueAssignment"/>type="asnx:ValueAssignment"/> <element name="namedValueSet"type="asd:ValueSetTypeAssignment"/>type="asnx:ValueSetTypeAssignment"/> <element name="namedClass"type="asd:ObjectClassAssignment"/>type="asnx:ObjectClassAssignment"/> <element name="namedObject"type="asd:ObjectAssignment"/>type="asnx:ObjectAssignment"/> <element name="namedObjectSet"type="asd:ObjectSetAssignment"/>type="asnx:ObjectSetAssignment"/> <content name="component"type="asd:TopLevelNamedType"/>type="asnx:TopLevelNamedType"/> </choice> </type> </namedType> <namedType name="TypeAssignment"> <type> <sequence> <attribute name="name"type="asd:TypeReference"/>type="asnx:TypeReference"/> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </namedType> <namedType name="TypeReference"> <type> <constrained type="asn1:UTF8String"> <patternliteral="[A-Z]\w*(-\w+)*"/>literalValue="[A-Z]\w*(-\w+)*"/> </constrained> </type> </namedType> <namedType name="ValueAssignment"> <type> <sequence> <attribute name="name"type="asd:ValueReference"/> Legg & Prager Expires 11 October 2005 [Page 96] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:ValueReference"/> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </namedType> <namedType name="ValueReference"type="asd:Identifier"/>type="asnx:Identifier"/> <namedType name="Identifier"> <type> <constrained type="asn1:UTF8String"> <patternliteral="[a-z]\w(-\w+)*"/>literalValue="[a-z]\w(-\w+)*"/> </constrained> </type> </namedType> Legg Expires 14 January 2006 [Page 101] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="ValueSetTypeAssignment"> <type> <sequence> <attribute name="name"type="asd:TypeReference"/>type="asnx:TypeReference"/> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="valueSet"type="asd:ValueSet"/>type="asnx:ValueSet"/> </sequence> </type> </namedType> <namedType name="ObjectClassAssignment"> <type> <sequence> <attribute name="name"type="asd:ObjectClassReference"/>type="asnx:ObjectClassReference"/> <content name="objectClass"type="asd:ObjectClass"/>type="asnx:ObjectClass"/> </sequence> </type> </namedType> <namedType name="ObjectClassReference"> <type> <constrained type="asn1:UTF8String"> <patternliteral="[A-Z][A-Z0-9]*(-[A-Z0-9]+)*"/>literalValue="[A-Z][A-Z0-9]*(-[A-Z0-9]+)*"/> </constrained> </type> </namedType> <namedType name="ObjectAssignment"> <type> <sequence> <attribute name="name"type="asd:ObjectReference"/>type="asnx:ObjectReference"/> <content name="objectClass"type="asd:DefinedObjectClass"/> Legg & Prager Expires 11 October 2005 [Page 97] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:DefinedObjectClass"/> <content name="object"type="asd:Object"/>type="asnx:Object"/> </sequence> </type> </namedType> <namedType name="ObjectReference"type="asd:ValueReference"/>type="asnx:ValueReference"/> <namedType name="ObjectSetAssignment"> <type> <sequence> <attribute name="name"type="asd:ObjectSetReference"/>type="asnx:ObjectSetReference"/> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> <content name="objectSet"type="asd:ObjectSet"/>type="asnx:ObjectSet"/> </sequence> </type> </namedType> Legg Expires 14 January 2006 [Page 102] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="ObjectSetReference"type="asd:TypeReference"/>type="asnx:TypeReference"/> <namedType name="TopLevelNamedType"> <type> <constrainedtype="asd:NamedType">type="asnx:NamedType"> <withComponents partial="true"> <element name="attribute"> <withComponents partial="true"> <content name="reference" use="ABSENT"/> </withComponents> </element> <element name="element"> <withComponents partial="true"> <content name="reference" use="ABSENT"/> </withComponents> </element> <element name="content" use="ABSENT"/> <element name="member" use="ABSENT"/> <element name="item" use="ABSENT"/> </withComponents> </constrained> </type> </namedType> <namedType name="NamedType"> <type> <choice> <element name="attribute"type="asd:Attribute"/>type="asnx:Attribute"/> <element name="element"type="asd:Element"/>type="asnx:Element"/> <element name="content"type="asd:InvisibleNamedType"/>type="asnx:InvisibleNamedType"/> <element name="member"type="asd:InvisibleNamedType"/> Legg & Prager Expires 11 October 2005 [Page 98] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:InvisibleNamedType"/> <element name="item"type="asd:InvisibleNamedType"/>type="asnx:InvisibleNamedType"/> </choice> </type> </namedType> <namedType name="Attribute"> <type> <constrainedtype="asd:GenericNamedType">type="asnx:GenericNamedType"> <withComponents partial="true"> <content name="definition"> <withComponents partial="true"> <attribute name="typeAsVersion" use="ABSENT"/> </withComponents> </content> </withComponents> </constrained> </type> Legg Expires 14 January 2006 [Page 103] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </namedType> <namedType name="Element"type="asd:GenericNamedType"/>type="asnx:GenericNamedType"/> <namedType name="InvisibleNamedType"> <type> <constrainedtype="asd:GenericNamedType">type="asnx:GenericNamedType"> <withComponents partial="true"> <content name="reference" use="ABSENT"/> <content name="definition"> <withComponents partial="true"> <attribute name="typeAsVersion" use="ABSENT"/> </withComponents> </content> </withComponents> </constrained> </type> </namedType> <namedType name="GenericNamedType"> <type> <choice> <content name="reference"type="asd:GeneralReference"/>type="asnx:TypeOrElementReference"/> <contentname="definition"> <type> <sequence> <attribute name="name" type="asn1:NCName"/> <optional> <attribute name="identifier" type="asd:IdentifierOrEmpty"/> </optional> <optional> Legg & Prager Expires 11 October 2005 [Page 99] INTERNET-DRAFT ASN.1 Schema April 11, 2005name="definition"> <type> <sequence> <attribute name="name" type="asn1:NCName"/> <optional> <attribute name="identifier" type="asnx:IdentifierOrEmpty"/> </optional> <optional> <attribute name="typeAsVersion" type="asn1:BOOLEAN"/> <defaultliteral="false"/>literalValue="false"/> </optional> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </content> </choice> </type> </namedType> <namedType name="TypeOrElementReference"> <type> <sequence> <content name="name"> <type> <choice> Legg Expires 14 January 2006 [Page 104] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <attribute name="ref" type="asn1:QName"/> <attribute name="elementType" type="asn1:Name"/> </choice> </type> </content> <optional> <attribute name="context" type="asn1:AnyURI"/> </optional> <optional> <attribute name="embedded" type="asn1:BOOLEAN"/> </optional> </sequence> </type> </namedType> <namedType name="IdentifierOrEmpty"> <type> <constrained type="asn1:UTF8String"> <union> <includestype="asd:Identifier"/> <value></value>type="asnx:Identifier"/> <literalValue></literalValue> </union> </constrained> </type> </namedType> <namedType name="Type"> <type> <choice> <attribute name="type" identifier="typeRef" type="asn1:QName"/> <element name="type"type="asd:ElementFormType"/>type="asnx:ElementFormType"/> </choice> </type> </namedType> <namedType name="ElementFormType"> <type> <sequence> <optional> <attribute name="tagDefault"type="asd:TagDefault"/>type="asnx:TagDefault"/> </optional> <optional> <attribute name="extensibilityImplied" type="asn1:BOOLEAN"/> </optional> <optional> <attribute name="explicit" type="asn1:BOOLEAN"/> <defaultliteral="false"/>literalValue="false"/> </optional> Legg Expires 14 January 2006 [Page 105] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <content name="definition"> <type> <choice> <content name="reference"type="asd:GeneralReference"/> Legg & Prager Expires 11 October 2005 [Page 100] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:TypeOrElementReference"/> <attribute name="ancestor"> <type> <constrained type="asn1:INTEGER"> <range> <minInclusiveliteral="1"/>literalValue="1"/> </range> </constrained> </type> </attribute> <element name="namedBitList"type="asd:NamedBitList"/>type="asnx:NamedBitList"/> <element name="namedNumberList"type="asd:NamedNumberList"/>type="asnx:NamedNumberList"/> <element name="enumerated"type="asd:EnumeratedType"/>type="asnx:EnumeratedType"/> <element name="tagged"type="asd:TaggedType"/>type="asnx:TaggedType"/> <element name="prefixed"type="asd:EncodingPrefixedType"/>type="asnx:EncodingPrefixedType"/> <element name="selection"type="asd:SelectionType"/>type="asnx:SelectionType"/> <element name="instanceOf"type="asd:InstanceOfType"/>type="asnx:InstanceOfType"/> <element name="fromClass"type="asd:ObjectClassFieldType"/>type="asnx:ObjectClassFieldType"/> <element name="fromObjects"type="asd:InformationFromObjects"/>type="asnx:InformationFromObjects"/> <element name="sequence"type="asd:SequenceType"/>type="asnx:SequenceType"/> <element name="set"type="asd:SetType"/>type="asnx:SetType"/> <element name="choice"type="asd:ChoiceType"/>type="asnx:ChoiceType"/> <element name="union"type="asd:UnionType"/>type="asnx:UnionType"/> <element name="sequenceOf"type="asd:SequenceOfType"/>type="asnx:SequenceOfType"/> <element name="setOf"type="asd:SetOfType"/>type="asnx:SetOfType"/> <element name="list"type="asd:ListType"/>type="asnx:ListType"/> <element name="constrained"type="asd:ConstrainedType"/> </choice> </type> </content> </sequence> </type> </namedType> <namedType name="GeneralReference"> <type> <sequence> <content name="reference"> <type> <choice> <attribute name="ref" type="asn1:QName"/> <attribute name="elementType" type="asn1:Name"/>type="asnx:ConstrainedType"/> </choice> </type> </content><optional> <attribute name="context" type="asn1:AnyURI"/> </optional> Legg & Prager Expires 11 October 2005 [Page 101] INTERNET-DRAFT ASN.1 Schema April 11, 2005 <optional> <attribute name="canonicalization" type="asn1:AnyURI"/> </optional></sequence> </type> </namedType> <namedTypename="Reference"> <type> <constrained type="asd:GeneralReference"> <withComponents partial="true"> <content name="reference"> <withComponents partial="true"> <attribute name="elementType" use="ABSENT"/> </withComponents> </content> <attribute name="canonicalization" use="ABSENT"/> </withComponents> </constrained> </type> </namedType> <namedTypename="NamedBitList"> <type> <sequence> <content name="namedBits"> <type> <sequenceOf minSize="1"> <element name="namedBit"type="asd:NamedBit"/>type="asnx:NamedBit"/> </sequenceOf> </type> </content> Legg Expires 14 January 2006 [Page 106] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </sequence> </type> </namedType> <namedType name="NamedBit"> <type> <sequence> <attribute name="name" type="asn1:NCName"/> <optional> <attribute name="identifier"type="asd:Identifier"/>type="asnx:Identifier"/> </optional> <attribute name="bit"> <type> <constrained type="asn1:INTEGER"> <range> <minInclusiveliteral="0"/> Legg & Prager Expires 11 October 2005 [Page 102] INTERNET-DRAFT ASN.1 Schema April 11, 2005literalValue="0"/> </range> </constrained> </type> </attribute> </sequence> </type> </namedType> <namedType name="NamedNumberList"> <type> <sequence> <content name="namedNumbers"> <type> <sequenceOf minSize="1"> <element name="namedNumber"type="asd:NamedNumber"/>type="asnx:NamedNumber"/> </sequenceOf> </type> </content> </sequence> </type> </namedType> <namedType name="NamedNumber"> <type> <sequence> <attribute name="name" type="asn1:NCName"/> <optional> <attribute name="identifier"type="asd:Identifier"/>type="asnx:Identifier"/> </optional> <attribute name="number" type="asn1:INTEGER"/> </sequence> </type> Legg Expires 14 January 2006 [Page 107] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </namedType> <namedType name="EnumeratedType"> <type> <sequence> <content name="root"type="asd:Enumeration"/>type="asnx:Enumeration"/> <optional> <element name="extension"> <type> <sequence> <optional> <element name="exception"type="asd:ExceptionSpec"/>type="asnx:ExceptionSpec"/> </optional> <optional> <content name="additions"type="asd:Enumeration"/>type="asnx:Enumeration"/> </optional>Legg & Prager Expires 11 October 2005 [Page 103] INTERNET-DRAFT ASN.1 Schema April 11, 2005</sequence> </type> </element> </optional> </sequence> </type> </namedType> <namedType name="Enumeration"> <type> <sequenceOf minSize="1"> <element name="enumeration"type="asd:EnumerationItem"/>type="asnx:EnumerationItem"/> </sequenceOf> </type> </namedType> <namedType name="EnumerationItem"> <type> <sequence> <attribute name="name" type="asn1:NCName"/> <optional> <attribute name="identifier"type="asd:Identifier"/>type="asnx:Identifier"/> </optional> <optional> <attribute name="number" type="asn1:INTEGER"/> </optional> </sequence> </type> </namedType> <namedType name="TaggedType"> <type> Legg Expires 14 January 2006 [Page 108] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <sequence> <optional> <attribute name="tagClass"type="asd:TagClass"/>type="asnx:TagClass"/> </optional> <optional> <attribute name="tagging"type="asd:Tagging"/>type="asnx:Tagging"/> </optional> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </namedType> <namedType name="TagClass"> <type> <enumerated> <enumeration name="UNIVERSAL" identifier="universal"/>Legg & Prager Expires 11 October 2005 [Page 104] INTERNET-DRAFT ASN.1 Schema April 11, 2005<enumeration name="APPLICATION" identifier="application"/> <enumeration name="PRIVATE" identifier="private"/> </enumerated> </type> </namedType> <namedType name="Tagging"> <type> <enumerated> <enumeration name="EXPLICIT" identifier="explicit"/> <enumeration name="IMPLICIT" identifier="implicit"/> </enumerated> </type> </namedType> <namedType name="EncodingPrefixedType"> <type> <sequence> <content name="prefixes"type="asd:EncodingPrefixes"/>type="asnx:EncodingPrefixes"/> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </namedType> <namedType name="EncodingPrefixes"> <type> <sequenceOf minSize="1"> <content name="prefix"type="asd:EncodingPrefix"/>type="asnx:EncodingPrefix"/> </sequenceOf> </type> </namedType> Legg Expires 14 January 2006 [Page 109] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="EncodingPrefix"> <type> <choice> <element name="GSER" identifier="gser"type="asd:GSER-EncodingInstructions"/>type="asnx:GSER-EncodingInstructions"/> <element name="XER" identifier="xer"type="asd:XER-EncodingInstructions"/>type="asnx:XER-EncodingInstructions"/> </choice> </type> </namedType> <namedType name="GSER-EncodingInstructions"> <type> <sequenceOf minSize="1"> <content name="instruction" type="gser:GSER-EncodingInstruction"/>Legg & Prager Expires 11 October 2005 [Page 105] INTERNET-DRAFT ASN.1 Schema April 11, 2005</sequenceOf> </type> </namedType> <namedType name="XER-EncodingInstructions"> <type> <sequenceOf minSize="1"> <content name="instruction" type="xer:XER-EncodingInstruction"/> </sequenceOf> </type> </namedType> <namedType name="SelectionType"> <type> <sequence> <content name="alternative"> <type> <choice> <attribute name="attribute" type="asn1:QName"/> <attribute name="element" type="asn1:QName"/> <attribute name="content" type="asn1:QName"/> <attribute name="member" type="asn1:QName"/> </choice> </type> </content> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </namedType> <namedType name="InstanceOfType"> <type> Legg Expires 14 January 2006 [Page 110] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <sequence> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> </sequence> </type> </namedType> <namedType name="ObjectClassFieldType"> <type> <sequence> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> <content name="fieldName"type="asd:FieldName"/>type="asnx:FieldName"/> </sequence> </type></namedType> <namedType name="FieldName"> Legg & Prager Expires 11 October 2005 [Page 106] INTERNET-DRAFT ASN.1 Schema April 11, 2005</namedType> <namedType name="FieldName"> <type> <choice> <attribute name="fieldName" identifier="fieldNameAtt"type="asd:PrimitiveFieldNames"/>type="asnx:PrimitiveFieldNames"/> <element name="fieldName"type="asd:PrimitiveFieldNames"/>type="asnx:PrimitiveFieldNames"/> </choice> </type> </namedType> <namedType name="PrimitiveFieldNames" type="asn1:UTF8String"/> <namedType name="InformationFromObjects"> <type> <sequence> <content name="referencedObjects"type="asd:ReferencedObjects"/>type="asnx:ReferencedObjects"/> <content name="fieldName"type="asd:FieldName"/>type="asnx:FieldName"/> </sequence> </type> </namedType> <namedType name="ReferencedObjects"> <type> <choice> <content name="object"type="asd:Object"/>type="asnx:Object"/> <content name="objectSet"type="asd:ObjectSet"/>type="asnx:ObjectSet"/> </choice> </type> </namedType> <namedType name="SequenceType"> <type> <sequence> Legg Expires 14 January 2006 [Page 111] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <optional> <content name="root"type="asd:ComponentTypeList"/>type="asnx:ComponentTypeList"/> </optional> <optional> <content name="extensionAndFinal"> <type> <sequence> <element name="extension"> <type> <sequence> <optional> <element name="exception"type="asd:ExceptionSpec"/>type="asnx:ExceptionSpec"/> </optional> <optional> <content name="additions"type="asd:ExtensionAdditions"/>type="asnx:ExtensionAdditions"/> </optional>Legg & Prager Expires 11 October 2005 [Page 107] INTERNET-DRAFT ASN.1 Schema April 11, 2005</sequence> </type> </element> <optional> <content name="root"type="asd:ComponentTypeList"/>type="asnx:ComponentTypeList"/> </optional> </sequence> </type> </content> </optional> </sequence> </type> </namedType> <namedType name="ComponentTypeList"> <type> <sequenceOf minSize="1"> <content name="componentType"type="asd:ComponentType"/>type="asnx:ComponentType"/> </sequenceOf> </type> </namedType> <namedType name="ComponentType"> <type> <choice> <content name="component"type="asd:SequenceNamedType"/>type="asnx:SequenceNamedType"/> <element name="optional"> <type> <sequence> <content name="component"type="asd:SequenceNamedType"/>type="asnx:SequenceNamedType"/> <optional> Legg Expires 14 January 2006 [Page 112] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <element name="default"> <type> <sequence> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </element> </optional> </sequence> </type> </element> <element name="componentsOf"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type>Legg & Prager Expires 11 October 2005 [Page 108] INTERNET-DRAFT ASN.1 Schema April 11, 2005</element> </choice> </type> </namedType> <namedType name="SequenceNamedType"> <type> <constrainedtype="asd:NamedType">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"> <content name="addition"type="asd:ExtensionAddition"/>type="asnx:ExtensionAddition"/> </sequenceOf> </type> </namedType> <namedType name="ExtensionAddition"> <type> <choice> <element name="extensionGroup"type="asd:ExtensionAdditionGroup"/>type="asnx:ExtensionAdditionGroup"/> <content name="componentType"type="asd:ComponentType"/>type="asnx:ComponentType"/> </choice> Legg Expires 14 January 2006 [Page 113] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </type> </namedType> <namedType name="ExtensionAdditionGroup"> <type> <sequence> <optional> <attribute name="version"type="asd:VersionNumber"/>type="asnx:VersionNumber"/> </optional> <content name="componentTypes"type="asd:ComponentTypeList"/>type="asnx:ComponentTypeList"/> </sequence> </type> </namedType> <namedType name="VersionNumber"> <type> <constrained type="asn1:INTEGER">Legg & Prager Expires 11 October 2005 [Page 109] INTERNET-DRAFT ASN.1 Schema April 11, 2005<range> <minInclusiveliteral="2"/>literalValue="2"/> </range> </constrained> </type> </namedType> <namedType name="SetType"type="asd:SequenceType"/>type="asnx:SequenceType"/> <namedType name="ChoiceOrUnionType"> <type> <sequence> <optional> <attribute name="precedence"type="asd:PrecedenceList"/>type="asnx:PrecedenceList"/> </optional> <content name="root"type="asd:AlternativeTypeList"/>type="asnx:AlternativeTypeList"/> <optional> <element name="extension"> <type> <sequence> <optional> <element name="exception"type="asd:ExceptionSpec"/>type="asnx:ExceptionSpec"/> </optional> <optional> <content name="additions"type="asd:ExtensionAdditionAlternatives"/>type="asnx:ExtensionAdditionAlternatives"/> </optional> </sequence> </type> </element> </optional> Legg Expires 14 January 2006 [Page 114] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </sequence> </type> </namedType> <namedType name="PrecedenceList"> <type> <list minSize="1"> <item name="member" type="asn1:QName"/> </list> </type> </namedType> <namedType name="AlternativeTypeList"> <type> <sequenceOf minSize="1"> <content name="component"type="asd:ChoiceOrUnionNamedType"/>type="asnx:ChoiceOrUnionNamedType"/> </sequenceOf>Legg & Prager Expires 11 October 2005 [Page 110] INTERNET-DRAFT ASN.1 Schema April 11, 2005</type> </namedType> <namedType name="ChoiceOrUnionNamedType"> <type> <constrainedtype="asd:NamedType">type="asnx:NamedType"> <withComponents partial="true"> <element name="item" use="ABSENT"/> </withComponents> </constrained> </type> </namedType> <namedType name="ExtensionAdditionAlternatives"> <type> <sequenceOf minSize="1"> <content name="addition"type="asd:ExtensionAdditionAlternative"/>type="asnx:ExtensionAdditionAlternative"/> </sequenceOf> </type> </namedType> <namedType name="ExtensionAdditionAlternative"> <type> <choice> <element name="extensionGroup"type="asd:ExtensionAdditionAlternativesGroup"/>type="asnx:ExtensionAdditionAlternativesGroup"/> <content name="component"type="asd:ChoiceOrUnionNamedType"/>type="asnx:ChoiceOrUnionNamedType"/> </choice> </type> </namedType> Legg Expires 14 January 2006 [Page 115] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="ExtensionAdditionAlternativesGroup"> <type> <sequence> <optional> <attribute name="version"type="asd:VersionNumber"/>type="asnx:VersionNumber"/> </optional> <content name="alternatives"type="asd:AlternativeTypeList"/>type="asnx:AlternativeTypeList"/> </sequence> </type> </namedType> <namedType name="ChoiceType"> <type> <constrainedtype="asd:ChoiceOrUnionType">type="asnx:ChoiceOrUnionType"> <withComponents partial="true"> <attribute name="precedence" use="ABSENT"/>Legg & Prager Expires 11 October 2005 [Page 111] INTERNET-DRAFT ASN.1 Schema April 11, 2005<content name="root"> <withComponent> <includestype="asd:ChoiceNamedType"/>type="asnx:ChoiceNamedType"/> </withComponent> </content> <element name="extension"> <withComponents partial="true"> <content name="additions"> <withComponent> <withComponents partial="true"> <element name="extensionGroup"> <withComponents partial="true"> <content name="alternatives"> <withComponent> <includestype="asd:ChoiceNamedType"/>type="asnx:ChoiceNamedType"/> </withComponent> </content> </withComponents> </element> <content name="component"> <includestype="asd:ChoiceNamedType"/>type="asnx:ChoiceNamedType"/> </content> </withComponents> </withComponent> </content> </withComponents> </element> </withComponents> </constrained> </type> </namedType> Legg Expires 14 January 2006 [Page 116] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="ChoiceNamedType"> <type> <constrainedtype="asd:ChoiceOrUnionNamedType">type="asnx:ChoiceOrUnionNamedType"> <withComponents partial="true"> <element name="member" use="ABSENT"/> </withComponents> </constrained> </type> </namedType> <namedType name="UnionType"> <type> <constrainedtype="asd:ChoiceOrUnionType">type="asnx:ChoiceOrUnionType"> <withComponents partial="true"> <content name="root"> <withComponent>Legg & Prager Expires 11 October 2005 [Page 112] INTERNET-DRAFT ASN.1 Schema April 11, 2005<includestype="asd:UnionNamedType"/>type="asnx:UnionNamedType"/> </withComponent> </content> <element name="extension"> <withComponents partial="true"> <content name="additions"> <withComponent> <withComponents partial="true"> <element name="extensionGroup"> <withComponents partial="true"> <content name="alternatives"> <withComponent> <includestype="asd:UnionNamedType"/>type="asnx:UnionNamedType"/> </withComponent> </content> </withComponents> </element> <content name="component"> <includestype="asd:UnionNamedType"/>type="asnx:UnionNamedType"/> </content> </withComponents> </withComponent> </content> </withComponents> </element> </withComponents> </constrained> </type> </namedType> <namedType name="UnionNamedType"> <type> Legg Expires 14 January 2006 [Page 117] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <constrainedtype="asd:ChoiceOrUnionNamedType">type="asnx:ChoiceOrUnionNamedType"> <withComponents partial="true"> <element name="attribute" use="ABSENT"/> <element name="element" use="ABSENT"/> <element name="content" use="ABSENT"/> </withComponents> </constrained> </type> </namedType> <namedType name="SequenceOfOrListType"> <type> <sequence> <optional> <attribute name="minSize"> <type>Legg & Prager Expires 11 October 2005 [Page 113] INTERNET-DRAFT ASN.1 Schema April 11, 2005<constrained type="asn1:INTEGER"> <range> <minInclusiveliteral="0"/>literalValue="0"/> </range> </constrained> </type> </attribute> </optional> <optional> <attribute name="maxSize"> <type> <constrained type="asn1:INTEGER"> <range> <minInclusiveliteral="0"/>literalValue="0"/> </range> </constrained> </type> </attribute> </optional> <content name="component"> <type> <constrainedtype="asd:NamedType">type="asnx:NamedType"> <withComponents partial="true"> <element name="attribute" use="ABSENT"/> <element name="member" use="ABSENT"/> </withComponents> </constrained> </type> </content> </sequence> </type> </namedType> Legg Expires 14 January 2006 [Page 118] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="SequenceOfType"> <type> <constrainedtype="asd:SequenceOfOrListType">type="asnx:SequenceOfOrListType"> <withComponents partial="true"> <content name="component"> <withComponents partial="true"> <element name="item" use="ABSENT"/> </withComponents> </content> </withComponents> </constrained> </type> </namedType> <namedType name="SetOfType"type="asd:SequenceOfType"/> Legg & Prager Expires 11 October 2005 [Page 114] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:SequenceOfType"/> <namedType name="ListType"> <type> <constrainedtype="asd:SequenceOfOrListType">type="asnx:SequenceOfOrListType"> <withComponents partial="true"> <content name="component"> <withComponents partial="true"> <element name="element" use="ABSENT"/> <element name="content" use="ABSENT"/> </withComponents> </content> </withComponents> </constrained> </type> </namedType> <namedType name="ConstrainedType"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="constraint"type="asd:Constraint"/>type="asnx:Constraint"/> </sequence> </type> </namedType> <namedType name="Constraint"> <type> <sequence> <content name="constraintSpec"> <type> <choice> <content name="subtype"type="asd:ElementSetSpecs"/>type="asnx:ElementSetSpecs"/> <element name="constrainedBy"type="asd:UserDefinedConstraint"/>Legg Expires 14 January 2006 [Page 119] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 type="asnx:UserDefinedConstraint"/> <element name="table"type="asd:TableConstraint"/>type="asnx:TableConstraint"/> <element name="contents"type="asd:ContentsConstraint"/>type="asnx:ContentsConstraint"/> </choice> </type> </content> <optional> <element name="exception"type="asd:ExceptionSpec"/>type="asnx:ExceptionSpec"/> </optional> </sequence> </type> </namedType> <namedType name="UserDefinedConstraint"> <type> <sequence>Legg & Prager Expires 11 October 2005 [Page 115] INTERNET-DRAFT ASN.1 Schema April 11, 2005<optional> <content name="parameters"type="asd:ConstraintParameters"/>type="asnx:ConstraintParameters"/> </optional> </sequence> </type> </namedType> <namedType name="ConstraintParameters"> <type> <sequenceOf minSize="1"> <content name="parameter"type="asd:UserDefinedConstraintParameter"/>type="asnx:UserDefinedConstraintParameter"/> </sequenceOf> </type> </namedType> <namedType name="UserDefinedConstraintParameter"> <type> <choice> <element name="valueParameter"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </element> <element name="valueSetParameter"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="valueSet"type="asd:ValueSet"/>type="asnx:ValueSet"/> Legg Expires 14 January 2006 [Page 120] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </sequence> </type> </element> <element name="objectParameter"> <type> <sequence> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> <content name="object"type="asd:Object"/>type="asnx:Object"/> </sequence> </type> </element> <element name="objectSetParameter"> <type> <sequence> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> <content name="objectSet"type="asd:ObjectSet"/> Legg & Prager Expires 11 October 2005 [Page 116] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:ObjectSet"/> </sequence> </type> </element> <element name="typeParameter"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </element> <element name="classParameter"> <type> <sequence> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> </sequence> </type> </element> </choice> </type> </namedType> <namedType name="TableConstraint"> <type> <sequence> <content name="objectSet"type="asd:ObjectSet"/>type="asnx:ObjectSet"/> <optional> <content name="componentRelation"type="asd:AtNotations"/>type="asnx:AtNotations"/> </optional> </sequence> </type> </namedType> Legg Expires 14 January 2006 [Page 121] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="AtNotations"> <type> <sequenceOf minSize="1"> <element name="restrictBy"type="asd:AtNotation"/>type="asnx:AtNotation"/> </sequenceOf> </type> </namedType> <namedType name="AtNotation"type="asn1:AnySimpleType"/>type="asn1:AnyType"/> <namedType name="ContentsConstraint"> <type> <constrained> <type> <sequence> <optional>Legg & Prager Expires 11 October 2005 [Page 117] INTERNET-DRAFT ASN.1 Schema April 11, 2005<element name="containing"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </element> </optional> <optional> <element name="encodedBy"> <type> <sequence> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </element> </optional> </sequence> </type> <union> <withComponents partial="true"> <element name="containing" use="PRESENT"/> </withComponents> <withComponents partial="true"> <element name="encodedBy" use="PRESENT"/> </withComponents> </union> </constrained> </type> </namedType> <namedType name="ExceptionSpec"> Legg Expires 14 January 2006 [Page 122] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </namedType> <namedType name="Value"> <type> <choice> <attributename="literal" type="asn1:AnySimpleType"/>name="literalValue" identifier="literalValueAtt" type="asn1:UTF8String"/> <element name="literalValue" type="asnx:ElementFormLiteralValue"/> <attribute name="value" identifier="valueRef" type="asn1:QName"/> <element name="value"type="asd:ElementFormValue"/>type="asnx:ElementFormNotationalValue"/> </choice> </type>Legg & Prager Expires 11 October 2005 [Page 118] INTERNET-DRAFT ASN.1 Schema April 11, 2005</namedType> <namedTypename="ElementFormValue"name="ElementFormLiteralValue" type="asn1:AnyType"/> <namedTypename="ElementFormMetaValue">name="ElementFormNotationalValue"> <type> <sequence> <content name="definition"> <type> <choice> <content name="reference"type="asd:GeneralReference"/>type="asnx:Reference"/> <element name="fromObjects"type="asd:InformationFromObjects"/>type="asnx:InformationFromObjects"/> <element name="openTypeValue"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </element> <content name="components"type="asd:ComponentValueList"/>type="asnx:ComponentValueList"/> </choice> </type> </content> </sequence> </type> </namedType> Legg Expires 14 January 2006 [Page 123] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="Reference"> <type> <sequence> <attribute name="ref" type="asn1:QName"/> <optional> <attribute name="context" type="asn1:AnyURI"/> </optional> </sequence> </type> </namedType> <namedType name="ComponentValueList"> <type> <sequenceOf minSize="1"> <content name="component"type="asd:NamedValue"/>type="asnx:NamedValue"/> </sequenceOf> </type> </namedType> <namedType name="NamedValue"> <type> <choice> <element name="attribute"type="asd:GenericNamedValue"/>type="asnx:GenericNamedValue"/> <element name="element"type="asd:GenericNamedValue"/>type="asnx:GenericNamedValue"/> <element name="content"type="asd:GenericNamedValue"/>type="asnx:GenericNamedValue"/> <element name="member"type="asd:GenericNamedValue"/>type="asnx:GenericNamedValue"/> <element name="item"type="asd:GenericNamedValue"/>type="asnx:GenericNamedValue"/> </choice> </type> </namedType>Legg & Prager Expires 11 October 2005 [Page 119] INTERNET-DRAFT ASN.1 Schema April 11, 2005<namedType name="GenericNamedValue"> <type> <sequence> <attribute name="name" type="asn1:QName"/> <content name="value"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </namedType> <namedType name="ValueSet"> <type> <choice> <element name="valueSet"type="asd:ElementFormValueSet"/>type="asnx:ElementFormValueSet"/> </choice> </type> </namedType> Legg Expires 14 January 2006 [Page 124] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="ElementFormValueSet"> <type> <sequence> <content name="definition"> <type> <choice> <content name="elementSetSpecs"type="asd:ElementSetSpecs"/>type="asnx:ElementSetSpecs"/> </choice> </type> </content> </sequence> </type> </namedType> <namedType name="ElementSetSpecs"> <type> <sequence> <content name="root"type="asd:ElementSetSpec"/>type="asnx:ElementSetSpec"/> <optional> <element name="extension"> <type> <sequence> <content name="additions"type="asd:ElementSetSpec"/>type="asnx:ElementSetSpec"/> </sequence> </type> </element> </optional> </sequence> </type> </namedType>Legg & Prager Expires 11 October 2005 [Page 120] INTERNET-DRAFT ASN.1 Schema April 11, 2005<namedType name="ElementSetSpec"> <type> <choice> <content name="single"type="asd:Intersections"/>type="asnx:Intersections"/> <element name="union"> <type> <sequence> <content name="list"type="asd:IntersectionsList"/>type="asnx:IntersectionsList"/> </sequence> </type> </element> </choice> </type> </namedType> <namedType name="IntersectionsList"> <type> Legg Expires 14 January 2006 [Page 125] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <sequenceOf minSize="2"> <content name="intersections"type="asd:Intersections"/>type="asnx:Intersections"/> </sequenceOf> </type> </namedType> <namedType name="Intersections"> <type> <choice> <content name="single"type="asd:IntersectionElements"/>type="asnx:IntersectionElements"/> <element name="intersection"> <type> <sequence> <content name="list"type="asd:IntersectionElementsList"/>type="asnx:IntersectionElementsList"/> </sequence> </type> </element> </choice> </type> </namedType> <namedType name="IntersectionElementsList"> <type> <sequenceOf minSize="2"> <content name="intersectionElements"type="asd:IntersectionElements"/>type="asnx:IntersectionElements"/> </sequenceOf> </type> </namedType> <namedType name="IntersectionElements">Legg & Prager Expires 11 October 2005 [Page 121] INTERNET-DRAFT ASN.1 Schema April 11, 2005<type> <choice> <element name="all"> <type> <sequence> <optional> <content name="elements"type="asd:Elements"/>type="asnx:Elements"/> </optional> <element name="except"> <type> <sequence> <content name="exclusions"type="asd:Elements"/>type="asnx:Elements"/> </sequence> </type> </element> </sequence> </type> Legg Expires 14 January 2006 [Page 126] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </element> <content name="elements"type="asd:Elements"/>type="asnx:Elements"/> </choice> </type> </namedType> <namedType name="Elements"> <type> <choice> <element name="literalValue" type="asnx:ElementFormLiteralValue"/> <element name="value"type="asd:ElementFormValue"/>type="asnx:ElementFormNotationalValue"/> <element name="includes"> <type> <sequence> <content name="containedSubtype"type="asd:Type"/>type="asnx:Type"/> </sequence> </type> </element> <element name="range"type="asd:ValueRange"/>type="asnx:ValueRange"/> <element name="size"> <type> <sequence> <content name="constraint"type="asd:Constraint"/>type="asnx:Constraint"/> </sequence> </type> </element> <element name="typeConstraint"> <type> <sequence> <content name="type"type="asd:Type"/>type="asnx:Type"/> </sequence> </type>Legg & Prager Expires 11 October 2005 [Page 122] INTERNET-DRAFT ASN.1 Schema April 11, 2005</element> <element name="from"> <type> <sequence> <content name="permittedAlphabet"type="asd:Constraint"/>type="asnx:Constraint"/> </sequence> </type> </element> <element name="withComponent"> <type> <sequence> <content name="singleTypeConstraint"type="asd:Constraint"/>type="asnx:Constraint"/> </sequence> </type> </element> Legg Expires 14 January 2006 [Page 127] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <element name="withComponents"type="asd:MultipleTypeConstraints"/>type="asnx:MultipleTypeConstraints"/> <element name="pattern"> <type> <sequence> <content name="patternConstraint"type="asd:Value"/>type="asnx:Value"/> </sequence> </type> </element> <element name="object"type="asd:ElementFormObject"/>type="asnx:ElementFormObject"/> <element name="objectSet"type="asd:ElementFormObjectSet"/>type="asnx:ElementFormObjectSet"/> </choice> </type> </namedType> <namedType name="ValueRange"> <type> <sequence> <optional> <content name="minimum"> <type> <choice> <element name="minInclusive"> <type> <sequence> <optional> <content name="lowerEndValue"type="asd:Value"/>type="asnx:Value"/> </optional> </sequence> </type> </element> <element name="minExclusive"> <type>Legg & Prager Expires 11 October 2005 [Page 123] INTERNET-DRAFT ASN.1 Schema April 11, 2005<sequence> <optional> <content name="lowerEndValue"type="asd:Value"/>type="asnx:Value"/> </optional> </sequence> </type> </element> </choice> </type> </content> <default><value><literalValue> <minInclusive/></value></literalValue> </default> Legg Expires 14 January 2006 [Page 128] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </optional> <optional> <content name="maximum"> <type> <choice> <element name="maxInclusive"> <type> <sequence> <optional> <content name="upperEndValue"type="asd:Value"/>type="asnx:Value"/> </optional> </sequence> </type> </element> <element name="maxExclusive"> <type> <sequence> <optional> <content name="upperEndValue"type="asd:Value"/>type="asnx:Value"/> </optional> </sequence> </type> </element> </choice> </type> </content> <default><value><literalValue> <maxInclusive/></value></literalValue> </default> </optional> </sequence>Legg & Prager Expires 11 October 2005 [Page 124] INTERNET-DRAFT ASN.1 Schema April 11, 2005</type> </namedType> <namedType name="MultipleTypeConstraints"> <type> <sequence> <optional> <attribute name="partial" type="asn1:BOOLEAN"/> <defaultliteral="false"/>literalValue="false"/> </optional> <content name="typeConstraints"type="asd:TypeConstraints"/>type="asnx:TypeConstraints"/> </sequence> </type> </namedType> Legg Expires 14 January 2006 [Page 129] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <namedType name="TypeConstraints"> <type> <sequenceOf minSize="1"> <content name="namedConstraint"type="asd:NamedConstraint"/>type="asnx:NamedConstraint"/> </sequenceOf> </type> </namedType> <namedType name="NamedConstraint"> <type> <choice> <element name="attribute"type="asd:GenericNamedConstraint"/>type="asnx:GenericNamedConstraint"/> <element name="element"type="asd:GenericNamedConstraint"/>type="asnx:GenericNamedConstraint"/> <element name="content"type="asd:GenericNamedConstraint"/>type="asnx:GenericNamedConstraint"/> <element name="member"type="asd:GenericNamedConstraint"/>type="asnx:GenericNamedConstraint"/> <element name="item"type="asd:GenericNamedConstraint"/>type="asnx:GenericNamedConstraint"/> </choice> </type> </namedType> <namedType name="GenericNamedConstraint"> <type> <sequence> <attribute name="name" type="asn1:QName"/> <optional> <attribute name="use"type="asd:PresenceConstraint"/>type="asnx:PresenceConstraint"/> </optional> <optional> <content name="constraint"type="asd:Constraint"/>type="asnx:Constraint"/> </optional> </sequence> </type> </namedType>Legg & Prager Expires 11 October 2005 [Page 125] INTERNET-DRAFT ASN.1 Schema April 11, 2005<namedType name="PresenceConstraint"> <type> <enumerated> <enumeration name="PRESENT" identifier="present"/> <enumeration name="ABSENT" identifier="absent"/> <enumeration name="OPTIONAL" identifier="optional"/> </enumerated> </type> </namedType> <namedType name="ObjectClass"> <type> <choice> <attribute name="class" identifier="classRef" type="asn1:QName"/> Legg Expires 14 January 2006 [Page 130] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <element name="class"type="asd:ElementFormObjectClass"/>type="asnx:ElementFormObjectClass"/> </choice> </type> </namedType> <namedType name="DefinedObjectClass"> <type> <constrainedtype="asd:ObjectClass">type="asnx:ObjectClass"> <withComponents partial="true"> <element name="class"> <withComponents partial="true"> <content name="definition"> <withComponents partial="true"> <content name="objectClassDefn" use="ABSENT"/> </withComponents> </content> </withComponents> </element> </withComponents> </constrained> </type> </namedType> <namedType name="ElementFormObjectClass"> <type> <sequence> <content name="definition"> <type> <choice> <content name="reference"type="asd:Reference"/>type="asnx:Reference"/> <content name="objectClassDefn"type="asd:ObjectClassDefn"/>type="asnx:ObjectClassDefn"/> </choice> </type> </content>Legg & Prager Expires 11 October 2005 [Page 126] INTERNET-DRAFT ASN.1 Schema April 11, 2005</sequence> </type> </namedType> <namedType name="ObjectClassDefn"> <type> <sequenceOf minSize="1"> <content name="fieldSpec"type="asd:FieldSpec"/>type="asnx:FieldSpec"/> </sequenceOf> </type> </namedType> <namedType name="FieldSpec"> <type> Legg Expires 14 January 2006 [Page 131] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <choice> <element name="typeField"type="asd:TypeField"/>type="asnx:TypeField"/> <element name="valueField"type="asd:ValueField"/>type="asnx:ValueField"/> <element name="valueSetField"type="asd:ValueSetField"/>type="asnx:ValueSetField"/> <element name="objectField"type="asd:ObjectField"/>type="asnx:ObjectField"/> <element name="objectSetField"type="asd:ObjectSetField"/>type="asnx:ObjectSetField"/> <element name="optional"type="asd:OptionalField"/>type="asnx:OptionalField"/> </choice> </type> </namedType> <namedType name="OptionalField"> <type> <constrained> <type> <sequence> <content name="field"> <type> <choice> <element name="typeField"type="asd:TypeField"/>type="asnx:TypeField"/> <element name="valueField"type="asd:ValueField"/>type="asnx:ValueField"/> <element name="valueSetField"type="asd:ValueSetField"/>type="asnx:ValueSetField"/> <element name="objectField"type="asd:ObjectField"/>type="asnx:ObjectField"/> <element name="objectSetField"type="asd:ObjectSetField"/>type="asnx:ObjectSetField"/> </choice> </type> </content> <optional> <element name="default"> <type> <sequence> <content name="setting"type="asd:Setting"/>type="asnx:Setting"/> </sequence> </type>Legg & Prager Expires 11 October 2005 [Page 127] INTERNET-DRAFT ASN.1 Schema April 11, 2005</element> </optional> </sequence> </type> <union> <withComponents partial="true"> <content name="field"> <withComponents> <element name="typeField" use="PRESENT"/> </withComponents> </content> <element name="default"> <withComponents> <content name="setting"> Legg Expires 14 January 2006 [Page 132] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <withComponents> <content name="type" use="PRESENT"/> </withComponents> </content> </withComponents> </element> </withComponents> <withComponents partial="true"> <content name="field"> <withComponents> <element name="valueField" use="PRESENT"/> </withComponents> </content> <element name="default"> <withComponents> <content name="setting"> <withComponents> <content name="value" use="PRESENT"/> </withComponents> </content> </withComponents> </element> </withComponents> <withComponents partial="true"> <content name="field"> <withComponents> <element name="valueSetField" use="PRESENT"/> </withComponents> </content> <element name="default"> <withComponents> <content name="setting"> <withComponents> <content name="valueSet" use="PRESENT"/>Legg & Prager Expires 11 October 2005 [Page 128] INTERNET-DRAFT ASN.1 Schema April 11, 2005</withComponents> </content> </withComponents> </element> </withComponents> <withComponents partial="true"> <content name="field"> <withComponents> <element name="objectField" use="PRESENT"/> </withComponents> </content> <element name="default"> <withComponents> <content name="setting"> Legg Expires 14 January 2006 [Page 133] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <withComponents> <content name="object" use="PRESENT"/> </withComponents> </content> </withComponents> </element> </withComponents> <withComponents partial="true"> <content name="field"> <withComponents> <element name="objectSetField" use="PRESENT"/> </withComponents> </content> <element name="default"> <withComponents> <content name="setting"> <withComponents> <content name="objectSet" use="PRESENT"/> </withComponents> </content> </withComponents> </element> </withComponents> </union> </constrained> </type> </namedType> <namedType name="TypeField"> <type> <sequence> <attribute name="name"type="asd:TypeFieldReference"/>type="asnx:TypeFieldReference"/> </sequence> </type>Legg & Prager Expires 11 October 2005 [Page 129] INTERNET-DRAFT ASN.1 Schema April 11, 2005</namedType> <namedType name="TypeFieldReference"type="asd:TypeReference"/>type="asnx:TypeReference"/> <namedType name="ValueField"> <type> <constrained> <type> <sequence> <attribute name="name"type="asd:ValueFieldReference"/>type="asnx:ValueFieldReference"/> <optional> <attribute name="unique" type="asn1:BOOLEAN"/> <defaultliteral="false"/>literalValue="false"/> </optional> Legg Expires 14 January 2006 [Page 134] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <content name="governor"> <type> <choice> <content name="type"type="asd:Type"/>type="asnx:Type"/> <element name="typeFromField"> <type> <sequence> <content name="fieldName"type="asd:FieldName"/>type="asnx:FieldName"/> </sequence> </type> </element> </choice> </type> </content> </sequence> </type> <union> <withComponents partial="true"> <attribute name="unique" use="ABSENT"/> </withComponents> <withComponents partial="true"> <content name="governor"> <withComponents partial="true"> <element name="typeFromField" use="ABSENT"/> </withComponents> </content> </withComponents> </union> </constrained> </type> </namedType> <namedType name="ValueFieldReference"type="asd:ValueReference"/> Legg & Prager Expires 11 October 2005 [Page 130] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:ValueReference"/> <namedType name="ValueSetField"> <type> <sequence> <attribute name="name"type="asd:ValueSetFieldReference"/>type="asnx:ValueSetFieldReference"/> <content name="governor"> <type> <choice> <content name="type"type="asd:Type"/>type="asnx:Type"/> <element name="typeFromField"> <type> <sequence> <content name="fieldName"type="asd:FieldName"/>type="asnx:FieldName"/> </sequence> </type> Legg Expires 14 January 2006 [Page 135] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </element> </choice> </type> </content> </sequence> </type> </namedType> <namedType name="ValueSetFieldReference"type="asd:TypeReference"/>type="asnx:TypeReference"/> <namedType name="ObjectField"> <type> <sequence> <attribute name="name"type="asd:ObjectFieldReference"/>type="asnx:ObjectFieldReference"/> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> </sequence> </type> </namedType> <namedType name="ObjectFieldReference"type="asd:ObjectReference"/>type="asnx:ObjectReference"/> <namedType name="ObjectSetField"> <type> <sequence> <attribute name="name"type="asd:ObjectSetFieldReference"/>type="asnx:ObjectSetFieldReference"/> <content name="objectClass"type="asd:DefinedObjectClass"/>type="asnx:DefinedObjectClass"/> </sequence> </type> </namedType> <namedType name="ObjectSetFieldReference"type="asd:ObjectSetReference"/>type="asnx:ObjectSetReference"/> <namedType name="Object">Legg & Prager Expires 11 October 2005 [Page 131] INTERNET-DRAFT ASN.1 Schema April 11, 2005<type> <choice> <attribute name="object" identifier="objectRef" type="asn1:QName"/> <element name="object"type="asd:ElementFormObject"/>type="asnx:ElementFormObject"/> </choice> </type> </namedType> <namedType name="ElementFormObject"> <type> <sequence> <content name="definition"> <type> Legg Expires 14 January 2006 [Page 136] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <choice> <content name="reference"type="asd:Reference"/>type="asnx:Reference"/> <element name="fromObjects"type="asd:InformationFromObjects"/>type="asnx:InformationFromObjects"/> <content name="fields"type="asd:ObjectDefn"/>type="asnx:ObjectDefn"/> </choice> </type> </content> </sequence> </type> </namedType> <namedType name="ObjectDefn"> <type> <sequenceOf> <element name="field"type="asd:FieldSetting"/>type="asnx:FieldSetting"/> </sequenceOf> </type> </namedType> <namedType name="FieldSetting"> <type> <sequence> <attribute name="name" type="asn1:NCName"/> <content name="setting"type="asd:Setting"/>type="asnx:Setting"/> </sequence> </type> </namedType> <namedType name="Setting"> <type> <choice> <content name="type"type="asd:Type"/>type="asnx:Type"/> <content name="value"type="asd:Value"/> Legg & Prager Expires 11 October 2005 [Page 132] INTERNET-DRAFT ASN.1 Schema April 11, 2005type="asnx:Value"/> <content name="valueSet"type="asd:ValueSet"/>type="asnx:ValueSet"/> <content name="object"type="asd:Object"/>type="asnx:Object"/> <content name="objectSet"type="asd:ObjectSet"/>type="asnx:ObjectSet"/> </choice> </type> </namedType> <namedType name="ObjectSet"> <type> <choice> <attribute name="objectSet" identifier="objectSetRef" type="asn1:QName"/> <element name="objectSet"type="asd:ElementFormObjectSet"/>type="asnx:ElementFormObjectSet"/> </choice> Legg Expires 14 January 2006 [Page 137] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 </type> </namedType> <namedType name="ElementFormObjectSet"> <type> <sequence> <content name="definition"> <type> <choice> <content name="reference"type="asd:Reference"/>type="asnx:Reference"/> <content name="objectSetSpec"type="asd:ObjectSetSpec"/>type="asnx:ObjectSetSpec"/> <element name="fromObjects"type="asd:InformationFromObjects"/>type="asnx:InformationFromObjects"/> </choice> </type> </content> </sequence> </type> </namedType> <namedType name="ObjectSetSpec"> <type> <sequence> <optional> <content name="root"type="asd:ElementSetSpec"/>type="asnx:ElementSetSpec"/> </optional> <optional> <element name="extension"> <type> <sequence> <content name="additions"type="asd:ElementSetSpec"/>type="asnx:ElementSetSpec"/> </sequence> </type> </element>Legg & Prager Expires 11 October 2005 [Page 133] INTERNET-DRAFT ASN.1 Schema April 11, 2005</optional> </sequence> </type> </namedType> <namedType name="EncodingControlSections"> <type> <sequenceOf minSize="1"> <content name="section"type="asd:EncodingControlSection"/>type="asnx:EncodingControlSection"/> </sequenceOf> </type> </namedType> <namedType name="EncodingControlSection"> Legg Expires 14 January 2006 [Page 138] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 <type> <choice> <element name="encodingControl-GSER" type="gser:GSER-EncodingInstructionAssignmentList"/> <element name="encodingControl-XER" type="xer:XER-EncodingInstructionAssignmentList"/> </choice> </type> </namedType> <elementname="schema" type="asd:ModuleDefinition"/>name="module" type="asnx:ModuleDefinition"/> <attributename="meta"name="literal" type="asn1:BOOLEAN"/></asn1:schema> Appendix C. An XML Schema for ASN.1 Schema To be supplied.</asn1:module> 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)",draft-legg-ldap-gserei-xx.txt,draft-legg-ldap-gser-ei-xx.txt, aLegg & Prager Expires 11 October 2005 [Page 134] INTERNET-DRAFT ASN.1 Schema April 11, 2005work in progress,to be published.July 2005. [RXER] Legg, S. and D. Prager, "Robust XML Encoding Rules (RXER) for Abstract Syntax Notation One (ASN.1)", draft-legg-xed-rxer-xx.txt, a work in progress,AprilJuly 2005. [RXEREI] Legg, S., "Encoding Instructions for the Robust XML Encoding Rules (RXER)", draft-legg-xed-rxer-ei-xx.txt, a work in progress, April 2005. [GSEREIT] Legg, S.,"ASN.1 Schema"Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions forGSERthe Generic String EncodingInstructions",Rules (GSER)", draft-legg-xed-asd-gserei-xx.txt, a work in progress,to be published.July 2005. [XEREIT] Legg, S.,"ASN.1 Schema"Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions forXERthe XML Legg Expires 14 January 2006 [Page 139] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 EncodingInstructions",Rules (XER)", draft-legg-xed-asd-xerei-xx.txt, a work in progress,AprilJuly 2005. [X.680] ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1:2002, Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation [X.680-1] Amendment 1: to ITU-T Rec. X.680 | ISO/IEC 8824-1 [X.681] ITU-T Recommendation X.681 (07/02) | ISO/IEC 8824-2:2002, Information technology - Abstract Syntax Notation One (ASN.1): Information object specification [X.682] ITU-T Recommendation X.682 (07/02) | ISO/IEC 8824-3:2002, Information technology - Abstract Syntax Notation One (ASN.1): Constraint specification [X.683] ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4:2002, 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[XML][XML10] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E. and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Third Edition)", W3C Recommendation,http://www.w3.org/TR/2004/REC-xml-20040204,http://www.w3.org/TR/2004/REC-xml-20040204, February 2004. [XML11] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., Yergeau, F., and J. Cowan, "Extensible Markup Language (XML) 1.1", W3C Recommendation, http://www.w3.org/TR/2004/REC-xml11-20040204, February 2004.Legg & Prager Expires 11 October 2005 [Page 135] INTERNET-DRAFT ASN.1 Schema April 11, 2005 [XMLNS][XMLNS10] Bray, T., Hollander, D. and A. Layman, "Namespaces in XML", http://www.w3.org/TR/1999/REC-xml-names-19990114, January 1999. [XMLNS11] Bray, T., Hollander, D., Layman, A. and R. Tobin, "Namespaces in XML 1.1", http://www.w3.org/TR/2004/REC- xml-names11-20040204, January 1999. [ISET] Cowan, J. and R. Tobin, "XML InformationSet",Set (Second Legg Expires 14 January 2006 [Page 140] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 Edition)", W3C Recommendation,http://www.w3.org/TR/2001/REC-xml- infoset-20011024, October 2001.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. Informative References [CXML] Boyer, J., "Canonical XML", 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", W3C Recommendation, http://www.w3.org/TR/2001/REC-xmlschema-1-20010502, May 2001. [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. Authors' Addresses 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.comDr. Daniel Prager EMail: dan@layabout.netFull Copyright Statement Copyright (C) The Internet Society (2005). 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 AND THE INTERNET Legg& PragerExpires11 October 200514 January 2006 [Page136]141] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 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. Changes in Draft 01 The Directory XML Encoding Rules (DXER) have been renamed to the Robust XML Encoding Rules (RXER). The ASN.1 Schema representation of a value of the EXTERNAL type has been changed from the usual RXER encoding, the encoding according to the associated type in X.690, to the encoding according to the associated type in X.680. However the RXER encoding of EXTERNAL is unchanged. The translation of extensions to SEQUENCE, SET and CHOICE types has been simplified. The second extension marker no longer generates a second <extension>element.element item. The translation of UserDefinedConstraintParameter has been revised so that the corresponding ASN.1 type in the ASN.1 for ASN.1 Schema is more straightforward. Legg& PragerExpires11 October 200514 January 2006 [Page137]142] INTERNET-DRAFTASN.1 Schema April 11,Abstract Syntax Notation X July 14, 2005 A <definition> element item has been added to the translation of ObjectDefn to avoid the potential for ambiguity between an ObjectDefn and an ObjectFromObject. The assumedName attribute item on the <element> child of a <sequenceOf> or <setOf> element item has been replaced by a pair ofattributesattribute items - name and identifier. The identifier attribute item is intended to hold the identifier appearing in the original ASN.1 specification when that identifier is not the same as the value of the nameattribute,attribute item, i.e. because there is no identifier, or the identifier is modified by a NAME encoding instruction. The ASN.1 for ASN.1Schema,Schema (ASN.1 for ASN.X), and the ASN.1 Schema for ASN.1Schema,Schema (ASN.X for ASN.X), have been provided. Changes in Draft 02 The changes introduced in Draft 02 have been superseded by the changes in Draft 03. Changes in Draft 03 The effect of RXER encoding instructions on the translation of an ASN.1 specification into ASN.1 Schema (ASN.X) has been included. The ASN.1 for ASN.1 Schema (ASN.1 for ASN.X) has been changed to use RXER encoding instructions instead of XER encoding instructions. The ASN.1 for ASN.1Schema,Schema (ASN.1 for ASN.X), and the ASN.1 Schema for ASN.1Schema,Schema (ASN.X for ASN.X), have been changed to a more natural representation using attributes nested in content models. A translation for PrefixedType has been included. The "renames" (a verb) attribute item has been renamed to "identifier" (a noun). The OBJECT IDENTIFIER for the ASN1-Schema (AbstractSyntaxNotation-X) module has been replaced. The translation of AtNotation has been changed from the value of a component attribute item of a <restrictBy> element item to simple content of the <restrictBy>element.element item. A solution for translating recursive parameterized definitions has been added. Changes in Draft 04 Legg& PragerExpires11 October14 January 2006 [Page 143] INTERNET-DRAFT Abstract Syntax Notation X July 14, 2005 ASN.1 Schema has been renamed to Abstract Syntax Notation X (ASN.X) and the <asn1:schema> element has been renamed to <asn1:module>. The "literal" attribute item has been renamed to "literalValue". The <value> element item has been renamed to <literalValue>. A new <value> element item has been added to represent notational (meta) values. The asn1:meta attribute item has been replaced by the asn1:literal attribute item. The boolean value of the attribute has been inverted. <literalValue> and <restrictBy> element items are required to be self-contained. An "embedded" attribute item has been added to type references to distinguish between a DefinedType or a TYPE-REF encoding instruction referencing an ASN.1 type. References to the CanonicalizationParameter in the RefParameters for reference encoding instructions have been removed (this notation has been removed from the encoding instructions). The GeneralReference and Reference ASN.1 types in the ASN.1 for ASN.X are now separate definitions. GeneralReference has been renamed to TypeOrElementReference. Legg Expires 14 January 2006 [Page138]144] ----