INTERNET-DRAFT S. Legg draft-legg-xed-asd-xerei-01.txt eB2Bcom Intended Category: Standards Track November 14, 2005 Abstract Syntax Notation X (ASN.X) Representation of Encoding Instructions for the XML Encoding Rules (XER) 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 . Please send editorial comments directly to the editor . Further information is available on the XED website: www.xmled.info. This Internet-Draft expires on 14 May 2006. Abstract Abstract Syntax Notation X (ASN.X) is an Extensible Markup Language Legg Expires 14 May 2006 [Page 1] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 (XML) representation for Abstract Syntax Notation One (ASN.1) specifications. This document specifies the ASN.X representation of encoding instructions for the XML Encoding Rules (XER). Legg Expires 14 May 2006 [Page 2] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. EncodingInstructionAssignmentList Translation. . . . . . . . . 5 4. EncodingInstruction Translation. . . . . . . . . . . . . . . . 6 4.1. TargetList Translation . . . . . . . . . . . . . . . . . 7 4.1.1. TypeIdentification Translation . . . . . . . . . 7 4.1.2. BuiltInTypeIdentification Translation. . . . . . 9 4.1.3. IdentifiersInContext Translation . . . . . . . . 11 4.1.4. ImportedTypesIdentification Translation. . . . . 12 4.2. NamespaceRestriction Translation . . . . . . . . . . . . 12 4.3. AnyAttributesInstruction Translation . . . . . . . . . . 13 4.4. AnyElementInstruction Translation. . . . . . . . . . . . 13 4.5. AttributeInstruction Translation . . . . . . . . . . . . 13 4.6. Base64Instruction Translation. . . . . . . . . . . . . . 14 4.7. DecimalInstruction Translation . . . . . . . . . . . . . 14 4.8. DefaultForEmptyInstruction Translation . . . . . . . . . 14 4.9. ElementInstruction Translation . . . . . . . . . . . . . 14 4.10. EmbedValuesInstruction Translation . . . . . . . . . . . 14 4.11. ListInstruction Translation. . . . . . . . . . . . . . . 14 4.12. NameInstruction Translation. . . . . . . . . . . . . . . 15 4.13. NamespaceInstruction Translation . . . . . . . . . . . . 15 4.14. PIOrCommentInstruction Translation . . . . . . . . . . . 16 4.15. TextInstruction Translation. . . . . . . . . . . . . . . 16 4.16. UntaggedInstruction Translation. . . . . . . . . . . . . 17 4.17. UseNilInstruction Translation. . . . . . . . . . . . . . 17 4.18. UseNumberInstruction Translation . . . . . . . . . . . . 17 4.19. UseOrderInstruction Translation. . . . . . . . . . . . . 17 4.20. UseQNameInstruction Translation. . . . . . . . . . . . . 18 4.21. UseTypeInstruction Translation . . . . . . . . . . . . . 18 4.22. UseUnionInstruction Translation. . . . . . . . . . . . . 18 4.23. WhiteSpaceInstruction Translation. . . . . . . . . . . . 18 5. Parameterized Definitions. . . . . . . . . . . . . . . . . . . 18 5.1. Pre-processing Step. . . . . . . . . . . . . . . . . . . 19 5.2. Translation Step . . . . . . . . . . . . . . . . . . . . 22 5.3. Post-processing Step . . . . . . . . . . . . . . . . . . 24 6. Security Considerations. . . . . . . . . . . . . . . . . . . . 26 7. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 27 Appendix A. ASN.1 for XER Encoding Instruction Notation. . . . . . 27 Appendix B. ASN.X for XER Encoding Instruction Notation. . . . . . 36 Normative References . . . . . . . . . . . . . . . . . . . . . . . 57 Informative References . . . . . . . . . . . . . . . . . . . . . . 59 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 59 Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 59 1. Introduction Legg Expires 14 May 2006 [Page 3] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Abstract Syntax Notation X (ASN.X) [ASN.X] is an Extensible Markup Language (XML) [XML10][XML11] representation for Abstract Syntax Notation One (ASN.1) [X.680] specifications. The ASN.X representation for the ASN.1 basic notation [X.680] [X.680-1] is described elsewhere [ASN.X]. The grammar of ASN.1 also permits the application of encoding instructions [X.680-1], through type prefixes and encoding control sections, that modify how abstract values are encoded by nominated encoding rules. The generic notation for type prefixes and encoding control sections is defined by the ASN.1 basic notation, however the notation for specific encoding instructions i.e., the EncodingInstructionAssignmentList and EncodingInstruction productions of the notation, are defined separately for each set of encoding rules using encoding instructions. This document specifies the ASN.X representation for EncodingInstructionAssignmentList and EncodingInstruction as they are defined for the XML Encoding Rules (XER) [X.693][X.693-1]. ASN.X is defined in terms of rules for translating from an ASN.1 specification. This does not preclude an ASN.X document being written directly without a pre-existing ASN.1 specification, however such an ASN.X document is considered valid if and only if there exists in principle an ASN.1 specification which when translated would yield the ASN.X document. By design, an ASN.X document is also the Robust XML Encoding Rules (RXER) [RXER] encoding of an ASN.1 abstract value. The ASN.1 type definitions for such abstract values, insofar as they pertain to the ASN.1 basic notation, are provided elsewhere [ASN.X], however this document provides the ASN.1 type definitions for representing XER encoding instructions as abstract values. These definitions appear in Appendix A. The ASN.X translation of the ASN.1 module in Appendix A is presented in Appendix B. The General Considerations of the specification for ASN.X [ASN.X] also apply here. 2. Conventions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED" and "MAY" in this document are to be interpreted as described in, BCP 14, RFC 2119 [BCP14]. The key word "OPTIONAL" is exclusively used with its ASN.1 meaning. Legg Expires 14 May 2006 [Page 4] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 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 XER encoding instructions into ASN.X 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, "information item" will be abbreviated to "item", e.g., "element information item" is abbreviated to "element item". Element items will be referred to by their [local name] in angle brackets, e.g., "the element item" means the element item with the [local name] "name". Attribute items will be referred to by their [local name], e.g., "the name attribute item" means the attribute item with the [local name] "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. EncodingInstructionAssignmentList Translation As described in the specification for ASN.X [ASN.X], the translation of an EncodingControlSection for XER is an element item with the [local name] "XER". The translation of the EncodingInstructionAssignmentList in such an EncodingControlSection determines the content of the element item. An element item with the [local name] "annotation" MAY be added to the [children] of the element item. If the EncodingInstructionAssignmentList contains an EncodingInstruction that is a PositiveInstruction that is a GlobalDefaultsInstruction where the DefaultSetting is "MODIFIED- ENCODINGS" then an attribute item with the [local name] "modifiedEncodings" and [normalized value] "true" or "1" SHALL be added to the [attributes] of the element item, otherwise an attribute item with the [local name] "modifiedEncodings" and [normalized value] "false" or "0" MAY be added to the [attributes] of the element item. If the EncodingInstructionAssignmentList contains an EncodingInstruction that is a PositiveInstruction that is a GlobalDefaultsInstruction where the DefaultSetting is a ControlNamespace then the translation of the ControlNamespace SHALL be added to the [children] of the element item. The translation of a ControlNamespace is an element item with the Legg Expires 14 May 2006 [Page 5] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 [local name] "controlNamespace". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the Uniform Resource Identifier (URI) [URI] in the QuotedURI in the ControlNamespace. If the ControlNamespace contains a Prefix then an attribute item with the [local name] "prefix" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the NCName in the QuotedNCName in the Prefix. The translation of each EncodingInstruction in the EncodingInstructionAssignmentList, excluding any GlobalDefaultsInstruction, is appended to the [children] of the element item. Example ENCODING-CONTROL XER GLOBAL-DEFAULTS MODIFIED-ENCODINGS GLOBAL-DEFAULTS CONTROL-NAMESPACE "http://example.com" PREFIX "ex" 4. EncodingInstruction Translation The translation of an EncodingInstruction for XER can appear in the translation of an EncodingInstructionAssignmentList (see the previous section) or an EncodingPrefix. The translation for an EncodingPrefix is described by the specification for ASN.X [ASN.X]. The translation of an EncodingInstruction for XER is the translation of the contained PositiveInstruction or NegatingInstruction. The translation of a PositiveInstruction is the translation of the contained AnyAttributeInstruction, AnyElementInstruction, AttributeInstruction, Base64Instruction, DecimalInstruction, DefaultForEmptyInstruction, EmbedValuesInstruction, ListInstruction, NameInstruction, NamespaceInstruction, PIOrCommentInstruction, TextInstruction, UntaggedInstruction, UseNilInstruction, UseNumberInstruction, UseOrderInstruction, UseQNameInstruction, UseTypeInstruction, UseUnionInstruction or WhitespaceInstruction. ASIDE: A GlobalDefaultsInstruction is ignored here. It is considered in Section 4. Legg Expires 14 May 2006 [Page 6] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 The translation of a NegatingInstruction that is an ElementInstruction is the translation of that ElementInstruction. The translation of a NegatingInstruction that is not an ElementInstruction is an element item with the [local name] "not". The translation of the PositiveInstruction in the NegatingInstruction SHALL be added to the [children] of the element item. 4.1. TargetList Translation The TargetList production is common to all the encoding instructions. The translation of a TargetList is the concatenation of the translations of each of the contained Targets. The translation of a Targets is an element item with the [local name] "target". The content of the element item is the translation of the contained TypeIdentification, BuiltInTypeIdentification, IdentifiersInContext or ImportedTypesIdentification. 4.1.1. TypeIdentification Translation The translation of a TypeIdentification of the "ALL" form is an element item with the [local name] "allTypes", otherwise the translation of a TypeIdentification is the translation of the ModuleAndTypeReference followed by the translation of the ComponentReference, if present, followed by the translation of the QualifyingInformationPart, if present. The translation of a ModuleAndTypeReference is an attribute item with the [local name] "type". The [normalized value] of this attribute item is the qualified name [XMLNS10] corresponding to the typereference in the ModuleAndTypeReference (see Section 5.1 of [ASN.X]). The translation of a ComponentReference is an element item with the [local name] "component" and, if the final ComponentId in the ComponentIdList in the ComponentReference is "ALL", an element item with the [local name] "allTextuallyPresent". The [children] property of the element item is set to the sequence of character items for a "/" (U+002F) separated list of the translations of the ComponentId instances, excluding "ALL" if present. Leading and/or trailing white space character items MAY be added to the [children] of the element item. White space character items MAY be added immediately before and/or after any character item for the "/" character. Legg Expires 14 May 2006 [Page 7] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 If a ComponentId identifies the Type in a NamedType then the translation of the ComponentId is the RXER character data translation [RXER] of the effective name [RXEREI] of the NamedType. If the NamedType is subject to an RXER ATTRIBUTE or ATTRIBUTE-REF encoding instruction [RXEREI] then a "@" (U+0040) character is prefixed to the translation. If a ComponentId identifies a Type that is not in a NamedType (the component type for a SEQUENCE OF or SET OF type) then the translation of the ComponentId is the character string "item". If a ComponentId does not identify a Type and the ComponentId is an identifier then the translation of the ComponentId is the identifier. If a ComponentId does not identify a Type and the ComponentId is "*" then the translation of the ComponentId is the character string "item". The 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. The translation of a QualifyingInformationPart is the translation of the contained QualifyingInformation. The translation of a QualifyingInformation of the "identifier" form is an element item with the [local name] "identifier". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. If the ModuleTypeAndReference and ComponentReference (if present) identify a BIT STRING, ENUMERATED, or INTEGER type where the associated BitStringType, EnumeratedType or IntegerType (respectively) is subject to an RXER VALUES encoding instruction then the [normalized value] of the attribute item is the replacement name [RXEREI] for the identifier, otherwise the [normalized value] is the identifier. The translation of a QualifyingInformation of the "ALL" form is an element item with the [local name] "allIdentifiers". Examples Assume this type assignment: MyType ::= SEQUENCE { a SEQUENCE OF CHOICE { b ENUMERATED { red, green, blue }, Legg Expires 14 May 2006 [Page 8] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 c INTEGER } } MyType.a.*.ALL a / item MyType.a.*.b:ALL a / item / b 4.1.2. BuiltInTypeIdentification Translation The translation of a BuiltInTypeIdentification is the translation of the BuiltInTypeName followed by the translation of the BuiltInTypeQualifyingInformationPart, if present. If the BuiltInTypeName is "BIT STRING", "BOOLEAN", "CHARACTER STRING", "EMBEDDED PDV", "EXTERNAL", "GeneralizedTime", "INTEGER", "NULL", "ObjectDescriptor", "OBJECT IDENTIFIER", "OCTET STRING", "REAL", "RELATIVE-OID" or "UTCTime" then the translation of the BuiltInTypeName is an attribute item with the [local name] "type". The [normalized value] of this attribute item is a qualified name with the namespace name being "http://xmled.info/ns/ASN.1" and the local part being the BuiltInTypeName with any white space separators replaced by a single hyphen character (U+002D), e.g. BIT STRING becomes BIT-STRING. If the BuiltInTypeName is a RestrictedCharacterStringType then the translation of the BuiltInTypeName is an attribute item with the [local name] "type". The [normalized value] of this attribute item is a qualified name with the namespace name being "http://xmled.info/ns/ASN.1" and the local part being the RestrictedCharacterStringType, i.e., BMPString, GeneralString, GraphicString, IA5String, ISO646String, NumericString, PrintableString, TeletexString, T61String, UniversalString, UTF8String, VideotexString or VisibleString. If the BuiltInTypeName is "CHOICE" then the translation of the BuiltInTypeName is an element item with the [local name] "choice". Legg Expires 14 May 2006 [Page 9] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 If the BuiltInTypeName is "ENUMERATED" then the translation of the BuiltInTypeName is an element item with the [local name] "enumerated". If the BuiltInTypeName is "INSTANCE OF" then the translation of the BuiltInTypeName is an element item with the [local name] "instanceOf". If the BuiltInTypeName is "SEQUENCE" then the translation of the BuiltInTypeName is an element item with the [local name] "sequence". If the BuiltInTypeName is "SEQUENCE OF" then the translation of the BuiltInTypeName is an element item with the [local name] "sequenceOf". If the BuiltInTypeName is "SET" then the translation of the BuiltInTypeName is an element item with the [local name] "set". If the BuiltInTypeName is "SET OF" then the translation of the BuiltInTypeName is an element item with the [local name] "setOf". The translation of a BuiltInTypeQualifyingInformationPart is the translation of the contained BuiltInTypeQualifyingInformation. The translation of a BuiltInTypeQualifyingInformation of the "identifier" form is an element item with the [local name] "identifier". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the actual identifier. The translation of a BuiltInTypeQualifyingInformationPart of the "ALL" form is an element item with the [local name] "allIdentifiers". Examples BOOLEAN:true ENUMERATED:ALL Legg Expires 14 May 2006 [Page 10] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 4.1.3. IdentifiersInContext Translation The translation of an IdentifiersInContext is an element item with the [local name] "components". If the IdentifierList in the IdentifiersInContext is not of the "ALL" or "COMPONENTS" form then, for each identifier in the IdentifierList, an element item with the same [local name] (i.e., "attribute", "element", "group", "member" or "item") as the translation of the NamedType corresponding to the identifier SHALL be appended to the [children] of the element item. An attribute item with the [local name] "name" SHALL be added to the [attributes] of each , , , or element item, as appropriate. The [normalized value] of each of these attribute items is the RXER character data translation [RXER] of the effective name [RXEREI] of the NamedType corresponding to the identifier. If the IdentifierList in the IdentifiersInContext is of the "ALL" form then an element item with the [local name] "allTextuallyPresent" SHALL be appended to the [children] of the element item. If the IdentifierList in the IdentifiersInContext is of the "COMPONENTS" form then an element item with the [local name] "allFirstLevel" SHALL be appended to the [children] of the element item. An element item with the [local name] "in" SHALL be appended to the [children] of the element item. The content of the element item is the translation of the TypeIdentification in the IdentifiersInContext. Example Assume this type assignment: MyType ::= SEQUENCE { field INTEGER, fieldAtt [RXER:NAME AS "field"][RXER:ATTRIBUTE] BOOLEAN } field, fieldAtt IN MyType Legg Expires 14 May 2006 [Page 11] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 4.1.4. ImportedTypesIdentification Translation The translation of an ImportedTypesIdentification is an element item with the [local name] "allImportsFrom". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the modulereference in the ImportedTypesIdentification. If the module identified by the modulereference has a non-empty DefinitiveIdentifier in the ModuleIdentifier in its ModuleDefinition then an attribute item with the [local name] "identifier" SHOULD be added to the [attributes] of the element item. The [normalized value] of this attribute item is the RXER character data translation of the OBJECT IDENTIFIER value indicated by the DefinitiveIdentifier. If the module identified by the modulereference has an RXER SCHEMA-IDENTITY encoding instruction then an attribute item with the [local name] "schemaIdentity" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the character string specified by the AnyURIValue of the SCHEMA-IDENTITY encoding instruction. Example ALL IMPORTS FROM MyModule 4.2. NamespaceRestriction Translation The NamespaceRestriction production is common to AnyAttributesInstruction and AnyElementInstruction. The translation of a NamespaceRestriction of the "FROM URIList" form is an element item with the [local name] "from". The translation of each QuotedURIorAbsent in the URIList is appended to the [children] of the element item. The translation of a NamespaceRestriction of the "EXCEPT URIList" form is an element item with the [local name] "except". The translation of each QuotedURIorAbsent in the URIList is appended to the [children] of the element item. The translation of a QuotedURIorAbsent that is a QuotedURI is an Legg Expires 14 May 2006 [Page 12] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 element item with the [local name] "namespace". The sequence of character items for the URI in the QuotedURI is added to the [children] of the element item. The translation of a QuotedURIorAbsent of the "ABSENT" form is an element item with the [local name] "local". 4.3. AnyAttributesInstruction Translation The translation of an AnyAttributesInstruction is an element item with the [local name] "anyAttributes". The translation of the TargetList in the AnyAttributesInstruction SHALL be added to the [children] of the element item. If a NamespaceRestriction is present then the translation of the NamespaceRestriction is appended to the [children] of the element item. Example ANY-ATTRIBUTES FROM "http://example.com" ABSENT http://example.com 4.4. AnyElementInstruction Translation The translation of an AnyElementInstruction is an element item with the [local name] "anyElement". The translation of the TargetList in the AnyElementInstruction SHALL be added to the [children] of the element item. If a NamespaceRestriction is present then the translation of the NamespaceRestriction is appended to the [children] of the element item. 4.5. AttributeInstruction Translation The translation of an AttributeInstruction is an element item with the [local name] "attribute". The translation of the TargetList in the AttributeInstruction SHALL be added to the [children] of the element item. Example ATTRIBUTE Legg Expires 14 May 2006 [Page 13] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 4.6. Base64Instruction Translation The translation of a Base64Instruction is an element item with the [local name] "base64". The translation of the TargetList in the Base64Instruction SHALL be added to the [children] of the element item. 4.7. DecimalInstruction Translation The translation of a DecimalInstruction is an element item with the [local name] "decimal". The translation of the TargetList in the DecimalInstruction SHALL be added to the [children] of the element item. 4.8. DefaultForEmptyInstruction Translation The translation of a DefaultForEmptyInstruction is an element item with the [local name] "defaultForEmpty". The translation of the TargetList in the DefaultForEmptyInstruction SHALL be added to the [children] of the element item. If the Value is present in the DefaultForEmptyInstruction then the translation of the Value is appended to the content of the element item. Example DEFAULT-FOR-EMPTY AS "unspecified" 4.9. ElementInstruction Translation The translation of an ElementInstruction is an element item with the [local name] "element". The translation of the TargetList in the ElementInstruction SHALL be added to the [children] of the element item. 4.10. EmbedValuesInstruction Translation The translation of an EmbedValuesInstruction is an element item with the [local name] "embedValues". The translation of the TargetList in the EmbedValuesInstruction SHALL be added to the [children] of the element item. 4.11. ListInstruction Translation The translation of a ListInstruction is an element item with the [local name] "list". The translation of the TargetList in the Legg Expires 14 May 2006 [Page 14] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 ListInstruction SHALL be added to the [children] of the element item. 4.12. NameInstruction Translation The translation of a NameInstruction is an element item with the [local name] "name". The translation of the TargetList in the NameInstruction SHALL be added to the [children] of the element item. If a NewNameOrKeyword is present in the NameInstruction and the NewNameOrKeyword is a NewName then an attribute item with the [local name] "newName" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the character string value of the NewName. If a NewNameOrKeyword is present in the NameInstruction and the NewNameOrKeyword is a Keyword then an attribute item with the [local name] "conversion" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the keyword in the Keyword with all letters downcased, i.e., "capitalized", "uncapitalized", "uppercased" or "lowercased". Example NAME AS UNCAPITALIZED NAME AS "category" 4.13. NamespaceInstruction Translation The translation of a NamespaceInstruction is an element item with the [local name] "namespace". The translation of the TargetList in the NamespaceInstruction SHALL be added to the [children] of the element item. If a NamespaceSpecification is present then an attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the URI in the QuotedURI in the NamespaceSpecification. If a Prefix is present in the NamespaceSpecification then an attribute item with the [local name] "prefix" SHALL be added to the [attributes] of the element item. The [normalized value] Legg Expires 14 May 2006 [Page 15] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 of this attribute item is the NCName in the QuotedNCName in the Prefix. Example NAMESPACE AS "http://example.com" PREFIX "ex" 4.14. PIOrCommentInstruction Translation The translation of a PIOrCommentInstruction is an element item with the [local name] "piOrComment". The translation of the TargetList in the PIOrCommentInstruction SHALL be added to the [children] of the element item. If a RestrictedCharacterStringValue is present in the PIOrCommentInstruction then an attribute item with the [local name] "text" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the character string of the RestrictedCharacterStringValue. If a Position is present in the PIOrCommentInstruction then an attribute item with the [local name] "position" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is "beforeTag" if the keyword in the Position is BEFORE-TAG, "beforeValue" if the keyword in the Position is BEFORE-VALUE, "afterTag" if the keyword in the Position is AFTER-TAG, or "afterValue" if the keyword in the Position is AFTER-VALUE. Example PI-OR-COMMENT AS "" BEFORE-TAG 4.15. TextInstruction Translation The translation of a TextInstruction is an element item with the [local name] "text". The translation of the TargetList in the TextInstruction SHALL be added to the [children] of the element item. If a TextToBeUsed is present in the TextInstruction and the NewNameOrKeyword in the TextToBeUsed is a NewName then an attribute item with the [local name] "newName" SHALL be added to the Legg Expires 14 May 2006 [Page 16] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 [attributes] of the element item. The [normalized value] of this attribute item is the character string value of the NewName. If a TextToBeUsed is present in the TextInstruction and the NewNameOrKeyword in the TextToBeUsed is a Keyword then an attribute item with the [local name] "conversion" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the keyword in the Keyword with all letters downcased, i.e., "capitalized", "uncapitalized", "uppercased" or "lowercased". Examples TEXT AS UPPERCASED TEXT AS "A4" 4.16. UntaggedInstruction Translation The translation of an UntaggedInstruction is an element item with the [local name] "untagged". The translation of the TargetList in the UntaggedInstruction SHALL be added to the [children] of the element item. 4.17. UseNilInstruction Translation The translation of a UseNilInstruction is an element item with the [local name] "useNil". The translation of the TargetList in the UseNilInstruction SHALL be added to the [children] of the element item. 4.18. UseNumberInstruction Translation The translation of a UseNumberInstruction is an element item with the [local name] "useNumber". The translation of the TargetList in the UseNumberInstruction SHALL be added to the [children] of the element item. 4.19. UseOrderInstruction Translation The translation of a UseOrderInstruction is an element item with the [local name] "useOrder". The translation of the TargetList in the UseOrderInstruction SHALL be added to the [children] of the element item. Legg Expires 14 May 2006 [Page 17] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 4.20. UseQNameInstruction Translation The translation of a UseQNameInstruction is an element item with the [local name] "useQName". The translation of the TargetList in the UseQNameInstruction SHALL be added to the [children] of the element item. 4.21. UseTypeInstruction Translation The translation of a UseTypeInstruction is an element item with the [local name] "useType". The translation of the TargetList in the UseTypeInstruction SHALL be added to the [children] of the element item. 4.22. UseUnionInstruction Translation The translation of a UseUnionInstruction is an element item with the [local name] "useUnion". The translation of the TargetList in the UseUnionInstruction SHALL be added to the [children] of the element item. 4.23. WhiteSpaceInstruction Translation The translation of a WhiteSpaceInstruction is an element item with the [local name] "whiteSpace". The translation of the TargetList in the WhiteSpaceInstruction SHALL be added to the [children] of the element item. If a WhiteSpaceAction is present in the WhiteSpaceInstruction then an attribute item with the [local name] "action" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the keyword in the WhiteSpaceAction with all letters downcased, i.e., "replace" or "collapse". Example WHITESPACE COLLAPSE 5. Parameterized Definitions The translation of an ASN.1 specification into ASN.X [ASN.X] replaces any DummyReference [X.683] or reference to a parameterized definition [X.683] with the definition expanded in-line. For example, a ParameterizedObject is replaced by the Object on the right hand side of the referenced ParameterizedObjectAssignment. Legg Expires 14 May 2006 [Page 18] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 When a DummyReference or parameterized reference is replaced by the definition it references, the encoding control section applying to any nested type definitions may no longer accord with the original ASN.1 specification. This section describes a procedure for adding additional information to an ASN.X document so that type definitions are interpreted with respect to the appropriate XER encoding control section. For convenience, the procedure is described as a pre-processing step in which the original ASN.1 specifications are annotated with additional encoding instructions, and an optional post-processing step in which redundant encoding instruction translations are removed. Implementations are not required to explicitly perform the pre-processing and post-processing provided they produce the same net effect. 5.1. Pre-processing Step The pre-processing step requires two additional XER encoding instructions that are defined here. Note well: these encoding instructions are for translation purposes only and MUST NOT be used except in the pre-processing step in the translation of an ASN.1 specification into ASN.X documents. The notation for the additional XER encoding instructions is defined as follows: AssumeModuleInstruction ::= "ASSUME-MODULE" GlobalModuleReference ? AssumeReferenceInstruction ::= "ASSUME-REFERENCE" typereference The GlobalModuleReference and typereference productions are defined by the ASN.1 basic notation [X.680]. The ASSUME-MODULE encoding instruction (described by AssumeModuleInstruction) indicates that the prefixed type and all nested types (excluding any types within the EncodingPrefixedType for a nested ASSUME-MODULE encoding instruction) are to be regarded as belonging to the nominated module and therefore subject to its XER encoding control section. If no module is nominated then no XER encoding control section applies to the types. The ASSUME-REFERENCE encoding instruction (described by AssumeReferenceInstruction) indicates that the prefixed type is to be regarded as the right hand side of a ParameterizedTypeAssignment with the nominated reference name. Legg Expires 14 May 2006 [Page 19] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 The remainder of this section describes how ASN.1 specifications are annotated with the ASSUME-REFERENCE and ASSUME-MODULE encoding instructions before translation. The Type of each ParameterizedTypeAssignment (i.e., the Type immediately to the right hand side of the "::=") in a module with an encoding control section for XER is prefixed with an ASSUME-REFERENCE encoding instruction. The typereference in the ASSUME-REFERENCE encoding instruction is the typereference of the ParameterizedTypeAssignment. Each Type on or within the right hand side of a parameterized assignment (regardless of whether the module has an encoding control section for XER) that is not textually within another Type is prefixed with an ASSUME-MODULE encoding instruction. Where a Type is prefixed with both an ASSUME-REFERENCE and an ASSUME-MODULE encoding instruction, the ASSUME-MODULE encoding instruction is outermost. Each Type in an ActualParameter that is not textually within another Type in the same ActualParameter is prefixed with an ASSUME-MODULE encoding instruction. If the module in which an ASSUME-MODULE encoding instruction appears does not have an encoding control section for XER then the GlobalModuleReference SHALL be absent from the encoding instruction, otherwise the GlobalModuleReference SHALL be present with the modulereference and DefinitiveIdentifier of the module. Example Suppose these two modules are about to be translated into ASN.X: ThisModule DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS ThatTypeA FROM ThatModule; ThisTypeA ::= ThatTypeA { ENUMERATED { stop, go } } ThisTypeB { TypeParam } ::= SEQUENCE { component TypeParam } ThisTypeC ::= ThisTypeB { BOOLEAN } ENCODING-CONTROL XER MODIFIED-ENCODINGS Legg Expires 14 May 2006 [Page 20] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 END ThatModule DEFINITIONS AUTOMATIC TAGS ::= BEGIN ThatTypeA { TypeParam } ::= SEQUENCE { component TypeParam } ThatTypeB ::= ThatTypeA { BOOLEAN } END These modules look like the following after pre-processing: ThisModule DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS ThatTypeA FROM ThatModule; ThisTypeA ::= ThatTypeA { [XER:ASSUME-MODULE ThisModule] ENUMERATED { stop, go } } ThisTypeB { TypeParam } ::= [XER:ASSUME-MODULE ThisModule] [XER:ASSUME-REFERENCE ThisTypeB] SEQUENCE { component TypeParam } ThisTypeC ::= ThisTypeB { [XER:ASSUME-MODULE ThisModule] BOOLEAN } ENCODING-CONTROL XER MODIFIED-ENCODINGS END ThatModule DEFINITIONS AUTOMATIC TAGS ::= BEGIN ThatTypeA { TypeParam } ::= [XER:ASSUME-MODULE] SEQUENCE { component TypeParam } ThatTypeB ::= ThatTypeA { [XER:ASSUME-MODULE] BOOLEAN } END Legg Expires 14 May 2006 [Page 21] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 5.2. Translation Step Following the pre-processing step, all the ASN.1 modules are translated as normal [ASN.X]. The ASSUME-MODULE and ASSUME-REFERENCE encoding instructions have translations into ASN.X. The translation of an AssumeModuleInstruction is an element item with the [local name] "assumeModule". If the GlobalModuleReference is present then an attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the modulereference in the GlobalModuleReference. If the GlobalModuleReference is present and the AssignedIdentifier is not empty then an attribute item with the [local name] "identifier" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the RXER [RXER] encoding of the AssignedIdentifier. If the GlobalModuleReference is present and the referenced module has an RXER SCHEMA-IDENTITY encoding instruction then an attribute item with the [local name] "schemaIdentity" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the character string specified by the AnyURIValue of the SCHEMA-IDENTITY encoding instruction. If the GlobalModuleReference is absent then the element item is said to reference no module. The translation of an AssumeReferenceInstruction is an element item with the [local name] "assumeReference". An attribute item with the [local name] "name" SHALL be added to the [attributes] of the element item. The [normalized value] of this attribute item is the typereference. The and element items SHOULD NOT be used in original specifications written in ASN.X (i.e, in ASN.X documents that are not the result of translating an original ASN.1 specification). Example Continuing the example from the previous section, the translated modules look like the following: Legg Expires 14 May 2006 [Page 22] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 23] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 5.3. Post-processing Step In the post-processing step, redundant element items may be removed. Definition: The superior element item for an element, if it exists, is the nearest preceding element item with the same, or an enclosing, grandparent element item. An element item MAY be removed if: (a) it has a superior element item and both element items reference the same module, or both element items reference no module, or (b) it does not have a superior element item and it appears in the translation of the module it references, or Legg Expires 14 May 2006 [Page 24] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 (c) it does not have a superior element item and it references no module and it appears in the translation of a module that does not have an encoding control section for XER. If a removed element item is the last child element item of an element item then the element item MUST be removed. If the removal of an element item causes a element item to have only a child element item then the parent element item of the element item SHALL be replaced by the child element item of the element item. If the removal of an element item causes a element item to have no child element items then an attribute item with the [local name] "ref" SHALL be added to the parent element item of the element item. The [normalized value] of this attribute item is the [normalized value] of the type attribute item of the element item. The element item SHALL be removed. If appropriate for the context, the element item (an element form translation of a type reference) MAY be replaced by the equivalent attribute form translation [ASN.X]. Example Continuing the example from the previous section, the translated modules may be post-processed to the following: Legg Expires 14 May 2006 [Page 25] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 6. Security Considerations The ASN.X translation of an XER encoding instruction is semantically equivalent to the original XER encoding instruction. The security considerations that apply to an application built from an original ASN.1 specification with XER encoding instructions apply equally to an application built from the ASN.X translation of the ASN.1 specification. Legg Expires 14 May 2006 [Page 26] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 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 underlying ASN.1 type for the element in the ASN.1 for XER Encoding Instruction Notation 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.1 type) potentially changes if it is decoded and re-encoded, disrupting the Canonical XML representation. To avoid this problem, ASN.X documents must be normalized prior to the application of syntax-based canonicalization. The normalization rules can be found in Section 5.12 of the specification for RXER [RXER]. 7. IANA Considerations This document has no actions for IANA. Appendix A. ASN.1 for XER Encoding Instruction Notation This appendix is normative. XER-EncodingInstructionNotation { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) xmled(21472) asn1(1) module(0) xer-ei-notation(3) } -- 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, AnyURI, NCName, QName FROM AdditionalBasicDefinitions { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) Legg Expires 14 May 2006 [Page 27] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 xmled(21472) asn1(1) module(0) basic(0) } ModuleReference, DefinitiveIdentifier, Annotation, TypeReference, Value FROM AbstractSyntaxNotation-X { iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) xmled(21472) asn1(1) module(0) notation(1) } ; -- An XER encoding instruction in a type prefix -- must have an empty TargetList. XER-EncodingInstruction ::= XER-GeneralEncodingInstruction (WITH COMPONENTS { ..., positive (WITH COMPONENTS { ..., anyAttributes (WITH COMPONENTS { ..., targetList ABSENT }), anyElement (WITH COMPONENTS { ..., targetList ABSENT }), attribute (WITH COMPONENTS { ..., targetList ABSENT }), base64 (WITH COMPONENTS { ..., targetList ABSENT }), decimal (WITH COMPONENTS { ..., targetList ABSENT }), defaultForEmpty (WITH COMPONENTS { ..., targetList ABSENT }), embedValues (WITH COMPONENTS { ..., targetList ABSENT }), list (WITH COMPONENTS { ..., targetList ABSENT }), name (WITH COMPONENTS { ..., targetList ABSENT }), namespace (WITH COMPONENTS { ..., targetList ABSENT }), piOrComment (WITH COMPONENTS { ..., targetList ABSENT }), text (WITH COMPONENTS { ..., targetList ABSENT }), untagged (WITH COMPONENTS { ..., targetList ABSENT }), useNumber (WITH COMPONENTS { ..., targetList ABSENT }), useOrder (WITH COMPONENTS { ..., targetList ABSENT }), useQName (WITH COMPONENTS { ..., targetList ABSENT }), useType (WITH COMPONENTS { ..., targetList ABSENT }), useUnion (WITH COMPONENTS { ..., targetList ABSENT }), whiteSpace (WITH COMPONENTS { ..., targetList ABSENT }) }), not (WITH COMPONENTS { ..., anyAttributes (WITH COMPONENTS { ..., targetList ABSENT }), anyElement (WITH COMPONENTS { ..., targetList ABSENT }), attribute (WITH COMPONENTS { ..., targetList ABSENT }), base64 (WITH COMPONENTS { ..., targetList ABSENT }), decimal (WITH COMPONENTS { ..., targetList ABSENT }), defaultForEmpty (WITH COMPONENTS { ..., targetList ABSENT }), embedValues (WITH COMPONENTS { ..., targetList ABSENT }), list (WITH COMPONENTS { ..., targetList ABSENT }), name (WITH COMPONENTS { ..., targetList ABSENT }), namespace (WITH COMPONENTS { ..., targetList ABSENT }), Legg Expires 14 May 2006 [Page 28] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 piOrComment (WITH COMPONENTS { ..., targetList ABSENT }), text (WITH COMPONENTS { ..., targetList ABSENT }), untagged (WITH COMPONENTS { ..., targetList ABSENT }), useNil (WITH COMPONENTS { ..., targetList ABSENT }), useNumber (WITH COMPONENTS { ..., targetList ABSENT }), useOrder (WITH COMPONENTS { ..., targetList ABSENT }), useQName (WITH COMPONENTS { ..., targetList ABSENT }), useType (WITH COMPONENTS { ..., targetList ABSENT }), useUnion (WITH COMPONENTS { ..., targetList ABSENT }), whiteSpace (WITH COMPONENTS { ..., targetList ABSENT }) }), element (WITH COMPONENTS { ..., targetList ABSENT }) }) XER-EncodingInstructionAssignmentList ::= [HOLLOW-INSERTIONS] SEQUENCE { annotation Annotation OPTIONAL, modifiedEncodings [ATTRIBUTE] BOOLEAN DEFAULT FALSE, controlNamespace XER-ControlNamespace OPTIONAL, instructions [GROUP] XER-ECS-EncodingInstructions OPTIONAL } (WITH COMPONENTS { ..., modifiedEncodings (TRUE) } | WITH COMPONENTS { ..., controlNamespace PRESENT } | WITH COMPONENTS { ..., instructions PRESENT }) XER-ControlNamespace ::= SEQUENCE { name [ATTRIBUTE] AnyURI, prefix [ATTRIBUTE] NCName OPTIONAL } XER-ECS-EncodingInstructions ::= SEQUENCE SIZE (1..MAX) OF instruction [GROUP] XER-ECS-EncodingInstruction -- An XER encoding instruction in an encoding control section -- must not have an empty TargetList. XER-ECS-EncodingInstruction ::= XER-GeneralEncodingInstruction (WITH COMPONENTS { ..., positive (WITH COMPONENTS { ..., anyAttributes (WITH COMPONENTS { ..., targetList PRESENT }), anyElement (WITH COMPONENTS { ..., targetList PRESENT }), attribute (WITH COMPONENTS { ..., targetList PRESENT }), base64 (WITH COMPONENTS { ..., targetList PRESENT }), decimal (WITH COMPONENTS { ..., targetList PRESENT }), defaultForEmpty (WITH COMPONENTS { ..., targetList PRESENT }), embedValues (WITH COMPONENTS { ..., targetList PRESENT }), list (WITH COMPONENTS { ..., targetList PRESENT }), name (WITH COMPONENTS { ..., targetList PRESENT }), namespace (WITH COMPONENTS { ..., targetList PRESENT }), piOrComment (WITH COMPONENTS { ..., targetList PRESENT }), Legg Expires 14 May 2006 [Page 29] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 text (WITH COMPONENTS { ..., targetList PRESENT }), untagged (WITH COMPONENTS { ..., targetList PRESENT }), useNil (WITH COMPONENTS { ..., targetList PRESENT }), useNumber (WITH COMPONENTS { ..., targetList PRESENT }), useOrder (WITH COMPONENTS { ..., targetList PRESENT }), useQName (WITH COMPONENTS { ..., targetList PRESENT }), useType (WITH COMPONENTS { ..., targetList PRESENT }), useUnion (WITH COMPONENTS { ..., targetList PRESENT }), whiteSpace (WITH COMPONENTS { ..., targetList PRESENT }) }), not (WITH COMPONENTS { ..., anyAttributes (WITH COMPONENTS { ..., targetList PRESENT }), anyElement (WITH COMPONENTS { ..., targetList PRESENT }), attribute (WITH COMPONENTS { ..., targetList PRESENT }), base64 (WITH COMPONENTS { ..., targetList PRESENT }), decimal (WITH COMPONENTS { ..., targetList PRESENT }), defaultForEmpty (WITH COMPONENTS { ..., targetList PRESENT }), embedValues (WITH COMPONENTS { ..., targetList PRESENT }), list (WITH COMPONENTS { ..., targetList PRESENT }), name (WITH COMPONENTS { ..., targetList PRESENT }), namespace (WITH COMPONENTS { ..., targetList PRESENT }), piOrComment (WITH COMPONENTS { ..., targetList PRESENT }), text (WITH COMPONENTS { ..., targetList PRESENT }), untagged (WITH COMPONENTS { ..., targetList PRESENT }), useNil (WITH COMPONENTS { ..., targetList PRESENT }), useNumber (WITH COMPONENTS { ..., targetList PRESENT }), useOrder (WITH COMPONENTS { ..., targetList PRESENT }), useQName (WITH COMPONENTS { ..., targetList PRESENT }), useType (WITH COMPONENTS { ..., targetList PRESENT }), useUnion (WITH COMPONENTS { ..., targetList PRESENT }), whiteSpace (WITH COMPONENTS { ..., targetList PRESENT }) }), element (WITH COMPONENTS { ..., targetList PRESENT }), assumeReference ABSENT, assumeModule ABSENT }) XER-GeneralEncodingInstruction ::= [NO-INSERTIONS] CHOICE { positive [GROUP] XER-PositiveInstruction (WITH COMPONENTS { ..., defaultForEmpty (WITH COMPONENTS { ..., value PRESENT }), name (WITH COMPONENTS { ..., newNameOrKeyword PRESENT }), piOrComment (WITH COMPONENTS { ..., text PRESENT, position PRESENT }), whiteSpace (WITH COMPONENTS { ..., action PRESENT }) }), not XER-NegatingInstruction, Legg Expires 14 May 2006 [Page 30] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 element XER-ElementInstruction, assumeReference XER-AssumeReferenceInstruction, assumeModule XER-AssumeModuleInstruction } XER-PositiveInstruction ::= [SINGULAR-INSERTIONS] CHOICE { anyAttributes XER-AnyAttributesInstruction, anyElement XER-AnyElementInstruction, attribute XER-AttributeInstruction, base64 XER-Base64Instruction, decimal XER-DecimalInstruction, defaultForEmpty XER-DefaultForEmptyInstruction, embedValues XER-EmbedValuesInstruction, list XER-ListInstruction, name XER-NameInstruction, namespace XER-NamespaceInstruction, piOrComment XER-PIOrCommentInstruction, text XER-TextInstruction, untagged XER-UntaggedInstruction, useNil XER-UseNilInstruction, useNumber XER-UseNumberInstruction, useOrder XER-UseOrderInstruction, useQName XER-UseQNameInstruction, useType XER-UseTypeInstruction, useUnion XER-UseUnionInstruction, whiteSpace XER-WhiteSpaceInstruction } XER-NegatingInstruction ::= XER-PositiveInstruction (WITH COMPONENTS { ..., anyAttributes (WITH COMPONENTS { targetList OPTIONAL }), anyElement (WITH COMPONENTS { targetList OPTIONAL }), defaultForEmpty (WITH COMPONENTS { targetList OPTIONAL }), name (WITH COMPONENTS { targetList OPTIONAL }), namespace (WITH COMPONENTS { targetList OPTIONAL }), piOrComment (WITH COMPONENTS { targetList OPTIONAL }), text (WITH COMPONENTS { targetList OPTIONAL }), whiteSpace (WITH COMPONENTS { targetList OPTIONAL }) }) XER-TargetList ::= SEQUENCE SIZE (1..MAX) OF target XER-Targets XER-Targets ::= [NO-INSERTIONS] CHOICE { allTypes NULL, identifiedTypes [GROUP] XER-QualifiedTypeIdentification, components XER-IdentifiersInContext, allImportsFrom XER-ImportedTypesIdentification } Legg Expires 14 May 2006 [Page 31] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 -- TypeIdentification and BuiltInTypeIdentification XER-QualifiedTypeIdentification ::= [HOLLOW-INSERTIONS] SEQUENCE { types [GROUP] [SINGULAR-INSERTIONS] CHOICE { specificType [GROUP] XER-SpecificTypeIdentification, choice NULL, enumerated NULL, instanceOf NULL, sequence NULL, sequenceOf NULL, set NULL, setOf NULL }, qualification [GROUP] XER-QualifyingInformationPart OPTIONAL } XER-SpecificTypeIdentification ::= [HOLLOW-INSERTIONS] SEQUENCE { type [ATTRIBUTE] QName, component AnyType OPTIONAL, allTextuallyPresent NULL OPTIONAL } XER-QualifyingInformationPart ::= [NO-INSERTIONS] CHOICE { allIdentifiers NULL, identifier SEQUENCE { name [ATTRIBUTE] NCName } } XER-IdentifiersInContext ::= SEQUENCE { identifiers [GROUP] XER-IdentifierList, in CHOICE { allTypes NULL, specificType [GROUP] XER-SpecificTypeIdentification } } XER-IdentifierList ::= [NO-INSERTIONS] CHOICE { allTextuallyPresent NULL, allFirstLevel NULL, list [GROUP] XER-IdentifiedComponents } XER-IdentifiedComponents ::= SEQUENCE SIZE (1..MAX) OF component [GROUP] XER-IdentifiedComponent XER-IdentifiedComponent ::= [SINGULAR-INSERTIONS] CHOICE { attribute XER-GenericIdentifiedComponent, element XER-GenericIdentifiedComponent, Legg Expires 14 May 2006 [Page 32] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 group XER-GenericIdentifiedComponent, member XER-GenericIdentifiedComponent, item XER-GenericIdentifiedComponent } XER-GenericIdentifiedComponent ::= SEQUENCE { name [ATTRIBUTE] QName } XER-ImportedTypesIdentification ::= SEQUENCE { name [ATTRIBUTE] ModuleReference, identifier [ATTRIBUTE] DefinitiveIdentifier OPTIONAL, schemaIdentity [ATTRIBUTE] AnyURI OPTIONAL } XER-WildcardInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL, namespaceRestriction [GROUP] XER-NamespaceRestriction OPTIONAL } XER-NamespaceRestriction ::= [NO-INSERTIONS] CHOICE { from XER-URIList, except XER-URIList } XER-URIList ::= SEQUENCE SIZE(1..MAX) OF uriOrAbsent [GROUP] XER-QuotedURIorAbsent XER-QuotedURIorAbsent ::= [SINGULAR-INSERTIONS] CHOICE { namespace AnyURI, local NULL } XER-AnyAttributesInstruction ::= XER-WildcardInstruction XER-AnyElementInstruction ::= XER-WildcardInstruction XER-SimpleInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL } XER-AttributeInstruction ::= XER-SimpleInstruction XER-Base64Instruction ::= XER-SimpleInstruction XER-DecimalInstruction ::= XER-SimpleInstruction XER-DefaultForEmptyInstruction ::= SEQUENCE { Legg Expires 14 May 2006 [Page 33] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 targetList [GROUP] XER-TargetList OPTIONAL, value [GROUP] [NO-INSERTIONS] Value OPTIONAL } XER-ElementInstruction ::= XER-SimpleInstruction XER-EmbedValuesInstruction ::= XER-SimpleInstruction XER-ListInstruction ::= XER-SimpleInstruction XER-NameInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL, newNameOrKeyword [GROUP] XER-NewNameOrKeyword OPTIONAL } XER-NewNameOrKeyword ::= [NO-INSERTIONS] CHOICE { newName [ATTRIBUTE] UTF8String, conversion [ATTRIBUTE] XER-Conversion } XER-Conversion ::= ENUMERATED { capitalized (0), uncapitalized (1), uppercased (2), lowercased (3) } XER-NamespaceInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL, namespace [GROUP] XER-NamespaceSpecification OPTIONAL } XER-NamespaceSpecification ::= [NO-INSERTIONS] SEQUENCE { name [ATTRIBUTE] AnyURI, prefix [ATTRIBUTE] NCName OPTIONAL } XER-PIOrCommentInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL, text [ATTRIBUTE] UTF8String OPTIONAL, position [ATTRIBUTE] XER-Position OPTIONAL } XER-Position ::= ENUMERATED { beforeTag (0), beforeValue (1), afterValue (2), afterTag (3) Legg Expires 14 May 2006 [Page 34] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 } XER-TextInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL, newNameOrKeyword [GROUP] XER-NewNameOrKeyword OPTIONAL } XER-UntaggedInstruction ::= XER-SimpleInstruction XER-UseNilInstruction ::= XER-SimpleInstruction XER-UseNumberInstruction ::= XER-SimpleInstruction XER-UseOrderInstruction ::= XER-SimpleInstruction XER-UseQNameInstruction ::= XER-SimpleInstruction XER-UseTypeInstruction ::= XER-SimpleInstruction XER-UseUnionInstruction ::= XER-SimpleInstruction XER-WhiteSpaceInstruction ::= SEQUENCE { targetList [GROUP] XER-TargetList OPTIONAL, action [ATTRIBUTE] XER-WhiteSpaceAction OPTIONAL } XER-WhiteSpaceAction ::= ENUMERATED { replace (0), collapse (1) } XER-AssumeReferenceInstruction ::= SEQUENCE { name [ATTRIBUTE] TypeReference } XER-AssumeModuleInstruction ::= SEQUENCE { name [ATTRIBUTE] ModuleReference, identifier [ATTRIBUTE] DefinitiveIdentifier OPTIONAL, schemaIdentity [ATTRIBUTE] AnyURI OPTIONAL } ENCODING-CONTROL RXER SCHEMA-IDENTITY "http://xmled.info/id/ASN.1/XER-EncodingInstructionNotation" TARGET-NAMESPACE "http://xmled.info/ns/ASN.1" END Legg Expires 14 May 2006 [Page 35] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Appendix B. ASN.X for XER Encoding Instruction Notation This appendix is non-normative. Copyright (C) The Internet Society 2005. This version of this ASN.X module is part of RFC XXXX; see the RFC itself for full legal notices. Legg Expires 14 May 2006 [Page 36] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 37] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 38] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 39] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 40] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 true Legg Expires 14 May 2006 [Page 41] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 42] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 43] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 44] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 45] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 46] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 47] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 48] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 49] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 50] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 51] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 52] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 53] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 54] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 55] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Legg Expires 14 May 2006 [Page 56] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 Normative References [BCP14] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. Legg Expires 14 May 2006 [Page 57] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 [URI] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", STD 66, RFC 3986, January 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, October 2005. [RXEREI] Legg, S., "Encoding Instructions for the Robust XML Encoding Rules (RXER)", draft-legg-xed-rxer-ei-xx.txt, a work in progress, October 2005. [ASN.X] Legg, S., "Abstract Syntax Notation X (ASN.X)", draft-legg-xed-asd-xx.txt, a work in progress, November 2005. [X.680] ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1, Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation. [X.680-1] Draft Amendment 1 (to ITU-T Rec. X.680 | ISO/IEC 8824-1) Support for EXTENDED-XER. [X.683] ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4, Information technology - Abstract Syntax Notation One (ASN.1): Parameterization of ASN.1 specifications. [X.693-1] Amendment 1: (to ITU-T Rec. X.693 | ISO/IEC 8825-4) XER encoding instructions and EXTENDED-XER [XML10] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E. and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Third Edition)", W3C Recommendation, 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. [XMLNS10] Bray, T., Hollander, D. and A. Layman, "Namespaces in XML", http://www.w3.org/TR/1999/REC-xml-names-19990114, January 1999. [ISET] Cowan, J. and R. Tobin, "XML Information Set (Second Edition)", W3C Recommendation, Legg Expires 14 May 2006 [Page 58] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 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 [X.693] ITU-T Recommendation X.693 (12/01) | ISO/IEC 8825-4:2002, Information technology - ASN.1 encoding rules: XML encoding rules (XER) Author's Address Dr. Steven Legg eB2Bcom Suite 3, Woodhouse Corporate Centre 935 Station Street Box Hill North, Victoria 3129 AUSTRALIA Phone: +61 3 9896 7830 Fax: +61 3 9896 7801 EMail: steven.legg@eb2bcom.com Full 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 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 Legg Expires 14 May 2006 [Page 59] INTERNET-DRAFT ASN.X: XER Encoding Instructions November 14, 2005 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 ASN.1 Schema has been renamed to Abstract Syntax Notation X (ASN.X) and the element has been renamed to . The XER-EncodingInstructionSchema module has been renamed to XER-EncodingInstructionNotation. The schema identity for the module has been similarly changed. The component attribute in the SpecificTypeIdentification translation has been changed to a element. Examples have been added. The CONTENT encoding instruction has been renamed to GROUP and a component subject to a GROUP encoding instruction is now an element item with the [local name] "group" instead of "content". The element has been renamed to and now appears as a child element of an element. Insertion encoding instructions have been added to the ASN.1 for XER Encoding Instruction Notation to remove extension ambiguity. Legg Expires 14 May 2006 [Page 60]