One document matched: draft-legg-xed-asd-03.txt
Differences from draft-legg-xed-asd-02.txt
INTERNET-DRAFT S. Legg
draft-legg-xed-asd-03.txt eB2Bcom
Intended Category: Standards Track D. Prager
April 11, 2005
ASN.1 Schema: An XML Representation for
Abstract Syntax Notation One (ASN.1) Specifications
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 on 11 October 2005.
Abstract
This document defines a semantically equivalent Extensible Markup
Legg & Prager Expires 11 October 2005 [Page 1]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
Language (XML) representation for Abstract Syntax Notation One
(ASN.1) specifications called ASN.1 Schema. ASN.1 Schema completely
avoids the numerous ambiguities inherent in the ASN.1 language,
therefore ASN.1 Schema documents are much easier to parse and manage
than original ASN.1 specifications.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. General Considerations . . . . . . . . . . . . . . . . . . . . 5
4. ModuleDefinition Translation . . . . . . . . . . . . . . . . . 6
5. Translation of Assignments . . . . . . . . . . . . . . . . . . 8
5.1. Referencing Named Constructs . . . . . . . . . . . . . . 8
5.2. Importing Namespaces . . . . . . . . . . . . . . . . . . 9
5.3. TypeAssignment Translation . . . . . . . . . . . . . . . 10
5.4. ValueAssignment and XMLValueAssignment Translation . . . 10
5.5. ValueSetTypeAssignment Translation . . . . . . . . . . . 11
5.6. ObjectClassAssignment Translation. . . . . . . . . . . . 11
5.7. ObjectAssignment Translation . . . . . . . . . . . . . . 12
5.8. ObjectSetAssignment Translation. . . . . . . . . . . . . 12
5.9. Parameterized Assignments. . . . . . . . . . . . . . . . 13
6. Translation of Types . . . . . . . . . . . . . . . . . . . . . 13
6.1. Identifier Replacement . . . . . . . . . . . . . . . . . 14
6.2. DefinedType Translation. . . . . . . . . . . . . . . . . 14
6.3. Translation of Predefined Types. . . . . . . . . . . . . 20
6.4. BitStringType Translation. . . . . . . . . . . . . . . . 22
6.5. IntegerType Translation. . . . . . . . . . . . . . . . . 23
6.6. EnumeratedType Translation . . . . . . . . . . . . . . . 24
6.7. PrefixedType Translation . . . . . . . . . . . . . . . . 25
6.7.1. TaggedType Translation . . . . . . . . . . . . . 27
6.8. SelectionType Translation . . . . . . . . . . . . . . . 28
6.9. InstanceOfType Translation . . . . . . . . . . . . . . . 29
6.10. ObjectClassFieldType Translation . . . . . . . . . . . . 29
6.11. TypeFromObject and ValueSetFromObjects Translation . . . 30
6.12. Translation of Combining Types . . . . . . . . . . . . . 30
6.12.1. NamedType Translation . . . . . . . . . . . . . 30
6.12.2. SequenceType Translation. . . . . . . . . . . . 33
6.12.3. SetType Translation . . . . . . . . . . . . . . 35
6.12.4. ChoiceType Translation. . . . . . . . . . . . . 35
6.12.5. Translation of UNION Types. . . . . . . . . . . 36
6.12.6. SequenceOfType Translation. . . . . . . . . . . 37
6.12.7. Translation of LIST Types . . . . . . . . . . . 38
6.12.8. SetOfType Translation . . . . . . . . . . . . . 38
6.13. Translation of Constrained Types . . . . . . . . . . . . 38
6.13.1. Constraint Translation. . . . . . . . . . . . . 40
6.13.2. UserDefinedConstraint Translation . . . . . . . 40
6.13.3. TableConstraint Translation . . . . . . . . . . 41
Legg & Prager Expires 11 October 2005 [Page 2]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
6.13.4. ContentsConstraint Translation. . . . . . . . . 43
6.13.5. ExceptionSpec Translation . . . . . . . . . . . 43
6.14. Tag Defaults and Extension Defaults. . . . . . . . . . . 44
7. Translation of Values. . . . . . . . . . . . . . . . . . . . . 45
7.1. Translation of Literal Values. . . . . . . . . . . . . . 47
7.2. Translation of Meta-values . . . . . . . . . . . . . . . 48
7.2.1. DefinedValue Translation . . . . . . . . . . . . 48
7.2.2. BuiltinValue Translation . . . . . . . . . . . . 50
7.2.3. ValueFromObject Translation. . . . . . . . . . . 52
7.2.4. ObjectClassFieldValue Translation. . . . . . . . 53
8. Translation of Value Sets. . . . . . . . . . . . . . . . . . . 53
8.1. ElementSetSpecs Translation. . . . . . . . . . . . . . . 54
8.2. ElementSetSpec Translation . . . . . . . . . . . . . . . 54
8.3. SubtypeElements Translation. . . . . . . . . . . . . . . 55
8.3.1. ValueRange Translation . . . . . . . . . . . . . 56
8.3.2. InnerTypeConstraints Translation . . . . . . . . 57
9. Translation of Object Classes. . . . . . . . . . . . . . . . . 58
9.1. DefinedObjectClass Translation . . . . . . . . . . . . . 59
9.2. ObjectClassDefn Translation. . . . . . . . . . . . . . . 60
9.2.1. TypeFieldSpec Translation. . . . . . . . . . . . 60
9.2.2. FixedTypeValueFieldSpec Translation. . . . . . . 61
9.2.3. FixedTypeValueSetFieldSpec Translation . . . . . 62
9.2.4. VariableTypeValueFieldSpec Translation . . . . . 63
9.2.5. VariableTypeValueSetFieldSpec Translation. . . . 64
9.2.6. FieldName Translation. . . . . . . . . . . . . . 65
9.2.7. ObjectFieldSpec Translation. . . . . . . . . . . 66
9.2.8. ObjectSetFieldSpec Translation . . . . . . . . . 67
10. Translation of Objects . . . . . . . . . . . . . . . . . . . . 68
10.1. DefinedObject Translation . . . . . . . . . . . . . . . 68
10.2. ObjectDefn Translation. . . . . . . . . . . . . . . . . 69
10.3. ObjectFromObject Translation. . . . . . . . . . . . . . 71
11. Translation of Object Sets . . . . . . . . . . . . . . . . . . 71
11.1. DefinedObjectSet Translation. . . . . . . . . . . . . . 72
11.2. ObjectSetElements Translation . . . . . . . . . . . . . 73
11.2.1. ObjectSetFromObjects Translation . . . . . . . 73
12. Translation of Information From Objects. . . . . . . . . . . . 74
13. EncodingControlSection Translation . . . . . . . . . . . . . . 74
14. Security Considerations. . . . . . . . . . . . . . . . . . . . 75
15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 75
16. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 75
Appendix A. ASN.1 for ASN.1 Schema . . . . . . . . . . . . . . . . 76
Appendix B. ASN.1 Schema for ASN.1 Schema. . . . . . . . . . . . . 93
Appendix C. An XML Schema for ASN.1 Schema . . . . . . . . . . . .134
Normative References . . . . . . . . . . . . . . . . . . . . . . .134
Informative Reference . . . . . . . . . . . . . . . . . . . . . .136
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .136
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .136
Legg & Prager Expires 11 October 2005 [Page 3]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
1. Introduction
A full parser for the Abstract Syntax Notation One (ASN.1) language
[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 document defines a semantically equivalent Extensible Markup
Language (XML) [XML] representation for ASN.1 specifications called
ASN.1 Schema. ASN.1 Schema completely avoids the inherent
ambiguities of the ASN.1 language, therefore ASN.1 Schema 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.
An ASN.1 Schema document is a well-formed and valid XML document
[XML] conforming to XML namespaces [XMLNS]. ASN.1 Schema, 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 to
ASN.1 Schema. ASN.1 Schema definitions can also incorporate type
definitions from XML Schema [XSD1], RELAX NG [RNG] or Document Type
Definitions (DTDs) [XML].
ASN.1 Schema is defined in terms of rules for translating from an
ASN.1 specification. This does not preclude an ASN.1 Schema document
being written directly without a pre-existing ASN.1 specification,
however such an ASN.1 Schema document is considered valid if and only
if there exists in principle an ASN.1 specification which when
translated would yield the ASN.1 Schema document.
The format for ASN.1 Schema has also been designed so that the
content of an ASN.1 Schema 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 an
ASN.1 Schema 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.
Legg & Prager Expires 11 October 2005 [Page 4]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
The ASN.1 Schema translation of the ASN.1 module in Appendix A is
presented in Appendix B.
2. Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are
to be interpreted as described in, BCP 14, RFC 2119 [BCP14]. The key
word "OPTIONAL" is exclusively used with its ASN.1 meaning.
Throughout this document "type" shall be taken to mean an ASN.1 type,
and "value" shall be taken to mean an ASN.1 abstract value.
A reference to an ASN.1 production [X.680] (e.g., Type, NamedType) is
a reference to the text in an ASN.1 specification corresponding to
that production.
The description of the translation of an ASN.1 specification into
ASN.1 Schema 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 be taken to mean an Infoset element
information item and "attribute" shall be taken to mean an Infoset
attribute information item.
The [namespace name] of any element or attribute generated by the
translation from an ASN.1 specification has no value unless specified
otherwise.
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 in ASN.1 Schema.
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.
3. General Considerations
Apart from the [document element] of an ASN.1 Schema document
information item, the translation of some ASN.1 construct belongs to
the content of an enclosing element. Where the translation of the
construct is an element, it is appended to the [children] of the
enclosing element. Elements MUST be appended to the [children] of
the enclosing element in the order described. Translators MAY add
white space character information items (i.e., U+0020, U+0009, U+000D
and U+000A) to the [children] of the enclosing element to improve the
Legg & Prager Expires 11 October 2005 [Page 5]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
layout. Where the translation of the construct is an attribute it is
added to the [attributes] of the 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 that an ASN.1
Schema definition may be transferred as data in a protocol and that
some protocols disallow processing instructions and entity
references.
Any element in an ASN.1 Schema document is permitted to have
namespace declaration attributes [XMLNS]. Namespace declarations for
the namespace prefixes used in the translation of an ASN.1 module
into an ASN.1 Schema document are REQUIRED.
4. ModuleDefinition Translation
The translation of a ModuleDefinition [X.680] (an ASN.1 module) is a
document information item. The [document element] of the document
information item is an element with the [local name] "schema" 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 with the [local name] "schemaIdentity" SHALL be added to
the [attributes] of the [document element] (i.e., the <asn1:schema>
element). The [normalized value] of this attribute 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 with the [local name] "targetNamespace" SHALL be added to
the [attributes] of the [document element] (i.e., the <asn1:schema>
element). The [normalized value] of this attribute is the target
namespace of the module.
In examples in the following sections the namespace prefix "tns:" is
used to stand for the target namespace of the module being
Legg & Prager Expires 11 October 2005 [Page 6]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
translated.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the [document element]. The [normalized value] of
this attribute is the modulereference in the ModuleIdentifier in the
ModuleDefinition.
If the DefinitiveIdentifier in the ModuleIdentifier in the
ModuleDefinition is not empty then an attribute with the [local name]
"identifier" SHALL be added to the [attributes] of the
[document element]. The [normalized value] of this attribute is the
RXER [RXER] encoding of the DefinitiveIdentifier.
If the TagDefault in the ModuleDefinition is empty then an attribute
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 with
the [local name] "tagDefault" SHALL be added to the [attributes] of
the [document element]. The [normalized value] of this attribute 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 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 with the [local name] "extensibilityImplied" and
[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 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 the
Legg & Prager Expires 11 October 2005 [Page 7]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
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 xmlns:asn1="http://xmled.info/ns/ASN.1"
name="MyModule"
schemaIdentity="http://example.com/id/MyModule"
targetNamespace="http://example.com/ns/MyModule"
tagDefault="IMPLICIT"
extensibilityImplied="true">
<namedType name="MyType" type="asn1:INTEGER"/>
<element name="myElement" type="asn1:INTEGER"/>
</asn1:schema>
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. In ASN.1 Schema,
the translation of the Assignment is regarded as associating a
qualified name [XMLNS] with the Type, Value, ValueSet, ObjectClass,
Object or ObjectSet. ASN.1 Schema uses these qualified names in
Legg & Prager Expires 11 October 2005 [Page 8]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
place 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 in the translation of the Assignment). 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.
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 same ASN.1 Schema
name. An unambiguous translation to ASN.1 Schema 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 into ASN.1 Schema 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
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 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 the ASN.1 Schema document.
An attribute with the [local name] "name" SHOULD be added to the
[attributes] of the <import> element. The [normalized value] of this
attribute is the modulereference in the ModuleIdentifier in the
ModuleDefinition of the external module.
If the DefinitiveIdentifier in the ModuleIdentifier in the
Legg & Prager Expires 11 October 2005 [Page 9]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ModuleDefinition of the external module is not empty then an
attribute with the [local name] "identifier" SHOULD be added to the
[attributes] of the <import> element. The [normalized value] of this
attribute is the RXER encoding of the DefinitiveIdentifier.
If the external module has a schema identity URI then an attribute
with the [local name] "schemaIdentity" SHALL be added to the
[attributes] of the <import> element. The [normalized value] of this
attribute is the schema identity URI of the external module.
If the external module has a target namespace then an attribute with
the [local name] "namespace" SHALL be added to the [attributes] of
the <import> element. The [normalized value] of this attribute is
the target namespace of the external module.
An attribute with the [local name] "schemaLocation" MAY be added to
the [attributes] of the <import> element. The [normalized value] of
this attribute is a URI [URI] indicating the physical location of the
ASN.1 Schema translation of the external module.
The <import> elements MUST precede any other elements in the
[children] of the [document element].
Note that because of the way parameterized references are expanded in
ASN.1 Schema, the modules in the Imports of the ModuleDefinition may
not correspond exactly to the <import> elements.
5.3. TypeAssignment Translation
The translation of a TypeAssignment is an element with the
[local name] "namedType". An attribute with the [local name] "name"
SHALL be added to the [attributes] of the <namedType> element. The
[normalized value] of this attribute is the typereference on the left
hand side of the assignment. The content of the <namedType> element
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 with the
[local name] "namedValue". An attribute with the [local name] "name"
SHALL be added to the [attributes] of the <namedValue> element. The
Legg & Prager Expires 11 October 2005 [Page 10]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
[normalized value] of this attribute is the valuereference on the
left hand side of the assignment. The content of the <namedValue>
element 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
the ASN.1 Schema representation for a Value is unrelated to
XMLTypedValue.
Example
myValue INTEGER ::= 10
<namedValue name="myValue" type="asn1:INTEGER" literal="10"/>
5.5. ValueSetTypeAssignment Translation
The translation of a ValueSetTypeAssignment is an element with the
[local name] "namedValueSet". An attribute with the [local name]
"name" SHALL be added to the [attributes] of the <namedValueSet>
element. The [normalized value] of this attribute is the
typereference on the left hand side of the assignment. The content
of the <namedValueSet> element is the translation of the Type on the
left hand side of the assignment 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>
</valueSet>
</namedValueSet>
5.6. ObjectClassAssignment Translation
The translation of an ObjectClassAssignment is an element with the
[local name] "namedClass". An attribute with the [local name] "name"
SHALL be added to the [attributes] of the <namedClass> element. The
[normalized value] of this attribute is the objectclassreference on
the left hand side of the assignment. The content of the
<namedClass> element 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, 2005
Example
MY-CLASS ::= TYPE-IDENTIFIER
<namedClass name="MY-CLASS" class="asn1:TYPE-IDENTIFIER"/>
5.7. ObjectAssignment Translation
The translation of an ObjectAssignment is an element with the
[local name] "namedObject". An attribute with the [local name]
"name" SHALL be added to the [attributes] of the <namedObject>
element. The [normalized value] of this attribute is the
objectreference on the left hand side of the assignment. The content
of the <namedObject> element 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">
<object>
<field name="id" literal="2.5.13.14"/>
<field name="Type" type="asn1:INTEGER/>
</object>
</namedObject>
5.8. ObjectSetAssignment Translation
The translation of an ObjectSetAssignment is an element with the
[local name] "namedObjectSet". An attribute with the [local name]
"name" SHALL be added to the [attributes] of the <namedObjectSet>
element. The [normalized value] of this attribute is the
objectsetreference on the left hand side of the assignment. The
content of the <namedObjectSet> element 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 into ASN.1 Schema replaces
instances of DummyReference [X.683] or references to parameterized
definitions [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.
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) encoding control section [X.693-1].
Section 6.14 describes attributes 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 into
ASN.1 Schema [XEREIT].
ASIDE: Type definitions are not dependent on their module's RXER
or Generic String Encoding Rules (GSER) [GSER] encoding control
section [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 a
Legg & Prager Expires 11 October 2005 [Page 13]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
tagged ConstrainedType or a constrained TaggedType. For the purposes
of the translation into ASN.1 Schema 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]. The
NCName is given pre-eminence in the ASN.1 Schema 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
(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 into ASN.1 Schema.
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, 2005
The attribute form translation of a type reference is an attribute
with the [local name] "type". The [normalized value] of this
attribute 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 with
the [local name] "type". An attribute with the [local name] "ref"
SHALL be added to the [attributes] of the <type> element. The
[normalized value] of this attribute 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
with the [local name] "context" SHALL be added to the [attributes] of
the <type> element. The [normalized value] of this attribute 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).
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. If the RefParameters in the
TYPE-REF encoding instruction is not empty then the attribute form of
a foreign type reference cannot be used.
The attribute form translation of a foreign type reference is an
attribute with the [local name] "type". The [normalized value] of
this attribute is the RXER encoding of the QNameValue from the
TYPE-REF encoding instruction.
The element form translation of a foreign type reference is an
element with the [local name] "type". An attribute with the
[local name] "ref" SHALL be added to the [attributes] of the <type>
element. The [normalized value] of this attribute is the RXER
encoding 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 with the [local name]
"context" 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 ContextParameter. If the
Legg & Prager Expires 11 October 2005 [Page 15]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
CanonicalizationParameter is present in the RefParameters in the
TYPE-REF 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.
Usually the translator is free to choose either the attribute form or
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 with the
[local name] "type". An attribute with the [local name]
"elementType" SHALL be added to the [attributes] of the <type>
element. The [normalized value] of this attribute is the RXER
encoding 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 with the
[local name] "context" 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 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.
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
extensibilityImplied attribute, according to the provisions of
Section 6.14.
If a ParameterizedType or ParameterizedValueSetType is recursively
contained then its translation is an element with the [local name]
"type". An attribute with the [local name] "ancestor" SHALL be added
to the [attributes] of the <type> element. The [normalized value] of
this attribute is the decimal digit string representing the the
integer value of one plus the number of intermediate enclosing <type>
elements between the <type> elements resulting from the translations
of the two equivalent instances of ParameterizedType or
Legg & Prager Expires 11 October 2005 [Page 17]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ParameterizedValueSetType.
A <type> element with an ancestor attribute is a reference to an
ancestor <type> element. This form for a <type> element SHOULD NOT
be used in original specifications written in ASN.1 Schema.
ASIDE: The form is only intended for the purpose of handling
recursive parameterized type definitions in an ASN.1 specification
being translated into ASN.1 Schema. Such definitions are self-
referencing but have no obvious name. It is also not easy to
construct a suitable name from the surrounding context because
recursive parameterized types can be embedded in other constructs,
such as information objects, 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, 2005
ValueType 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>
<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>
</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 with the [local name] "type".
The [normalized value] of this attribute 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, 2005
+----------------------------------+-------------------+
| IntegerType | |
| without a NamedNumberList | INTEGER |
+----------------------------------+-------------------+
| NullType | NULL |
| ObjectIdentifierType | OBJECT-IDENTIFIER |
| OctetStringType | OCTET-STRING |
| RealType | REAL |
| RelativeOIDType | RELATIVE-OID |
+----------------------------------+-------------------+
| 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 with the [local name] "type".
An attribute with the [local name] "ref" SHALL be added to the
[attributes] of the <type> element. The [normalized value] of this
attribute 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 or
Legg & Prager Expires 11 October 2005 [Page 21]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
element 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
with the [local name] "type". An element with the [local name]
"namedBitList" SHALL be added to the [children] of the <type>
element. The translation of each NamedBit in the NamedBitList SHALL
be appended to the [children] of the <namedBitList> element.
The translation of a NamedBit is an element with the [local name]
"namedBit". An attribute with the [local name] "name" SHALL be added
to the [attributes] of the <namedBit> element. If the BitStringType
is subject to a VALUES encoding instruction then the
[normalized value] of this attribute 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 is not the same
as the identifier then an attribute with the [local name]
"identifier" SHALL be added to the [attributes] of the <namedBit>
element, otherwise an attribute with the [local name] "identifier"
MAY be added to the [attributes] of the <namedBit> element. The
[normalized value] of this attribute is the identifier of the
NamedBit. An attribute with the [local name] "bit" SHALL be added to
the [attributes] of the <namedBit> element. The [normalized value]
of this attribute is the 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"/>
</namedBitList>
</type>
6.5. IntegerType Translation
The translation of an IntegerType with a NamedNumberList is an
element with the [local name] "type". An element with the
[local name] "namedNumberList" SHALL be added to the [children] of
the <type> element. The translation of each NamedNumber in the
NamedNumberList SHALL be appended to the [children] of the
<namedNumberList> element.
The translation of a NamedNumber is an element with the [local name]
"namedNumber". An attribute with the [local name] "name" SHALL be
added to the [attributes] of the <namedNumber> element. If the
IntegerType is subject to a VALUES encoding instruction then the
[normalized value] of this attribute 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 is not
the same as the identifier then an attribute with the [local name]
"identifier" SHALL be added to the [attributes] of the <namedNumber>
element, otherwise an attribute with the [local name] "identifier"
MAY be added to the [attributes] of the <namedNumber> element. The
[normalized value] of this attribute is the identifier of the
NamedNumber. An attribute with the [local name] "number" SHALL be
added to the [attributes] of the <namedNumber> element. The
[normalized value] of this attribute is the 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>
<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 with the
[local name] "type". An element with the [local name] "enumerated"
SHALL be added to the [children] of the <type> element. The
translation of each EnumerationItem in the RootEnumeration SHALL be
appended to the [children] of the <enumerated> element.
If the ellipsis ("...") is present then an element with the
[local name] "extension" SHALL be appended to the [children] of the
<enumerated> element, and the translation of the ExceptionSpec
(possibly empty) SHALL be added to the [children] of the <extension>
element. If an AdditionalEnumeration is present then the translation
of each EnumerationItem in the AdditionalEnumeration SHALL be
appended to the [children] of the <extension> element.
The translation of an EnumerationItem is an element with the
[local name] "enumeration".
If the EnumerationItem is of the "identifier" form then an attribute
with the [local name] "name" SHALL be added to the [attributes] of
the <enumeration> element. If the EnumeratedType is subject to a
VALUES encoding instruction then the [normalized value] of this
attribute 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 is not the same as the identifier then an attribute with the
[local name] "identifier" SHALL be added to the [attributes] of the
<namedNumber> element, otherwise an attribute with the [local name]
"identifier" MAY be added to the [attributes] of the <namedNumber>
element. The [normalized value] of this attribute is the identifier.
If the EnumerationItem is of the "NamedNumber" form then an attribute
with the [local name] "name" SHALL be added to the [attributes] of
the <enumeration> element. If the EnumeratedType is subject to a
Legg & Prager Expires 11 October 2005 [Page 24]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
VALUES encoding instruction then the [normalized value] of this
attribute is the replacement name [RXEREI] for the identifier of the
NamedNumber, otherwise it is the identifier of the NamedNumber. If
the EnumeratedType is subject to a VALUES encoding instruction and
the reduction of the replacement name is not the same as the
identifier then an attribute with the [local name] "identifier" SHALL
be added to the [attributes] of the <namedNumber> element, otherwise
an attribute with the [local name] "identifier" MAY be added to the
[attributes] of the <namedNumber> element. The [normalized value] of
this attribute is the identifier of the NamedNumber. An attribute
with the [local name] "number" SHALL be added to the [attributes] of
the <enumeration> element. The [normalized value] of this attribute
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 the
Legg & Prager Expires 11 October 2005 [Page 25]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
default encoding reference [X.680-1] for the module is RXER, then the
translation of the PrefixedType is the translation of the Type in the
EncodingPrefixedType.
ASIDE: This is not suggesting that RXER encoding instructions are
ignored. Encoding instructions for RXER are not explicitly
represented in ASN.1 Schema, but rather affect how an ASN.1
specification is translated into an ASN.1 Schema document (since
the content of an ASN.1 Schema 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 in ASN.1 Schema.
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 with the [local name]
"prefixed". The translation of the EncodingPrefix in the
EncodingPrefixedType SHALL be added to the [children] of the
<prefixed> element.
If the EncodingReference of an EncodingPrefix is not empty then the
translation of the EncodingPrefix is an element 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 this element.
If the EncodingReference of an EncodingPrefix is empty then the
translation of the EncodingPrefix is an element with the default
encoding reference for the module as the [local name]. The
translation of the EncodingInstruction in the EncodingPrefix SHALL be
added to the [children] of this element.
The EncodingInstruction notation is different for each set of
encoding instructions, and their translations into ASN.1 Schema 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] and EXTENDED-XER
[X.693][X.693-1]).
If the <type> child element of a <prefixed> element has no attributes
and has a <prefixed> child element then that <type> child element MAY
be replaced by the content (both attributes and child elements) of
the inner <prefixed> element.
Legg & Prager Expires 11 October 2005 [Page 26]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
If two consecutive child elements of a <prefixed> element have the
same [local name] (which will be an encodingreference) then the
second child element MAY be removed and have its [children] appended
to the [children] of the first child element.
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 with the [local name]
"type". An element with the [local name] "tagged" SHALL be added to
the [children] of the <type> element. If the Class of the Tag is not
empty then an attribute with the [local name] "tagClass" SHALL be
added to the [attributes] of the <tagged> element. The
[normalized value] of this attribute 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, 2005
If the TaggedType is of the "Tag IMPLICIT Type" form then an
attribute with the [local name] "tagging" and [normalized value]
"IMPLICIT" SHALL be added to the [attributes] of the <tagged>
element.
If the TaggedType is of the "Tag EXPLICIT Type" form then an
attribute with the [local name] "tagging" and [normalized value]
"EXPLICIT" SHALL be added to the [attributes] of the <tagged>
element.
If the TaggedType is of the "Tag Type" form and the Type in the
TaggedType is a DummyReference then an attribute with the
[local name] "tagging" and [normalized value] "EXPLICIT" SHALL be
added to the [attributes] of the <tagged> element.
The translation of the Type in the TaggedType SHALL be added to the
content of the <tagged> element.
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 with the
[local name] "type". An element with the [local name] "selection"
SHALL be added to the [children] of the <type> element.
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 with the [local name] either
"attribute", "element", "content" or "member". An attribute with the
same [local name] as the translation of the NamedType SHALL be added
to the [attributes] of the <selection> element. The
[normalized value] of this attribute is the RXER encoding [RXER] of
the effective name [RXEREI] of the NamedType.
Legg & Prager Expires 11 October 2005 [Page 28]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
The translation of the Type in the SelectionType SHALL be added to
the content of the <selection> element.
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 with the
[local name] "type". An element with the [local name] "instanceOf"
SHALL be added to the [children] of the <type> element. The content
of the <instanceOf> element 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 with the
[local name] "type". An element with the [local name] "fromClass"
SHALL be added to the [children] of the <type> element. The content
of the <fromClass> element is the translation of the
Legg & Prager Expires 11 October 2005 [Page 29]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
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 with the [local name] "type". An element with the
[local name] "fromObjects" SHALL be added to the [children] of the
<type> element.
The translation of the ReferencedObjects in the TypeFromObject or
ValueSetFromObjects SHALL be added to the content of the
<fromObjects> element.
The translation of the FieldName in the TypeFromObject or
ValueSetFromObjects SHALL be appended to the content of the
<fromObjects> element.
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 & Prager Expires 11 October 2005 [Page 30]
INTERNET-DRAFT ASN.1 Schema April 11, 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 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 with the [local name]
"content", otherwise the normal translation of the NamedType is an
element with the [local name] "element".
The member translation of a NamedType is an element with the
[local name] "member".
The item translation of a NamedType is an element 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 mutually exclusive.
If a NamedType is subject to a TYPE-AS-VERSION encoding instruction
then an attribute with the [local name] "typeAsVersion" and
[normalized value] "true" or "1" SHALL be added to the <element>
element. 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 with the [local name] "typeAsVersion"
and [normalized value] "false" or "0" MAY be added to the <element>
element.
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 with the [local name] "name" SHALL be
added to the [attributes] of the <attribute>, <content>, <element>,
<member> or <item> element, as appropriate. The [normalized value]
of this attribute 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 with the [local name] "identifier"
SHALL be added to the [attributes] of the <attribute>, <content>,
<element>, <member> or <item> element, as appropriate, otherwise an
Legg & Prager Expires 11 October 2005 [Page 31]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
attribute with the [local name] "identifier" MAY be added to the
[attributes] of the <attribute>, <content>, <element>, <member> or
<item> element. The [normalized value] of this attribute is the
identifier of the NamedType.
If a NamedType is subject to an ATTRIBUTE-REF or ELEMENT-REF encoding
instruction then an attribute 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.
If a NamedType is subject to a REF-AS-ELEMENT encoding instruction
then an attribute with the [local name] "elementType" SHALL be added
to the [attributes] of the <element> element. The [normalized value]
of this attribute is the RXER encoding 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 with the [local name] "context" 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 ContextParameter. If the
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.
If a 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, 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 with the [local name] "explicit" and
[normalized value] "true" or "1" SHALL be added to the [attributes]
of the <type> element resulting from the translation of the Type in
the NamedType. Where the automatic tagging transformation applies,
this attribute indicates that explicit tagging applies to the Type in
the NamedType instead of the usual implicit tagging.
Example
CHOICE {
Legg & Prager Expires 11 October 2005 [Page 32]
INTERNET-DRAFT ASN.1 Schema April 11, 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"/>
<content name=five" type="tns:MySequence"/>
</choice>
</type>
6.12.2. SequenceType Translation
The translation of a SequenceType is an element with the [local name]
"type". An element with the [local name] "sequence" SHALL be added
to the [children] of the <type> element. The translation of each
ComponentType in the ComponentTypeList of the initial
RootComponentTypeList, if present, SHALL be appended to the
[children] of the <sequence> element.
If the ExtensionAndException is present then an element with the
[local name] "extension" SHALL be appended to the [children] of the
<sequence> element, and the translation of the ExceptionSpec
(possibly empty) SHALL be added to the [children] of the <extension>
element.
The translation of each ExtensionAdditionGroup or ComponentType in
the ExtensionAdditions (if any) SHALL be appended to the [children]
of the <extension> element.
If the ExtensionEndMarker is present then the translation of each
Legg & Prager Expires 11 October 2005 [Page 33]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ComponentType in the final RootComponentTypeList SHALL be appended to
the [children] of the <sequence> element.
The translation of an ExtensionAdditionGroup is an element with the
[local name] "extensionGroup". If the VersionNumber is present then
an attribute with the [local name] "version" SHALL be added to the
[attributes] of the <extensionGroup> element. The [normalized value]
of this attribute is the number of the VersionNumber. The
translation of each ComponentType in the ExtensionAdditionGroup SHALL
be appended to the [children] of the <extensionGroup> element.
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 with the [local name] "optional". The normal
translation of the NamedType SHALL be added to the [children] of the
<optional> element.
The translation of a ComponentType of the "NamedType DEFAULT Value"
form is an element with the [local name] "optional". The normal
translation of the NamedType SHALL be added to the [children] of the
<optional> element. An element with the [local name] "default" SHALL
be appended to the [children] of the <optional> element. The content
of the <default> element is the translation of the Value.
The translation of a ComponentType of the "COMPONENTS OF Type" form
is an element with the [local name] "componentsOf". The translation
of the Type SHALL be added to the content of the <componentsOf>
element.
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 & Prager Expires 11 October 2005 [Page 34]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
<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"/>
<default literal="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 with the [local name] "type". An
element with the [local name] "choice" SHALL be added to the
[children] of the <type> element. The normal translation of each
NamedType in the RootAlternativeTypeList SHALL be appended to the
[children] of the <choice> element.
If the ExtensionAndException is present then an element with the
[local name] "extension" is appended to the [children] of the
<choice> element, and the translation of the ExceptionSpec (possibly
empty) is added to the [children] of the <extension> element.
The translation of each ExtensionAdditionAlternativesGroup or
NamedType in the ExtensionAdditionAlternatives (if any) SHALL be
appended to the [children] of the <extension> element. The normal
translation of the NamedType is used.
The translation of an ExtensionAdditionAlternativesGroup is an
element with the [local name] "extensionGroup". If the VersionNumber
is present then an attribute with the [local name] "version" SHALL be
added to the [attributes] of the <extensionGroup> element. The
[normalized value] of this attribute is the number of the
VersionNumber. The normal translation of each NamedType in the
Legg & Prager Expires 11 October 2005 [Page 35]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ExtensionAdditionAlternativesGroup SHALL be appended to the
[children] of the <extensionGroup> element.
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 with the [local name] "precedence" SHALL be added
to the [attributes] of the <union> element. The [normalized value]
of this attribute is the white space separated list of the RXER
encodings [RXER] of the effective names [RXEREI] of the NamedType
instances corresponding to the identifiers in the PrecedenceList.
Example
[RXER:UNION PRECEDENCE utf8 visible] CHOICE {
printable PrintableString,
Legg & Prager Expires 11 October 2005 [Page 36]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
teletex 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 with the [local name] "type". An
element with the [local name] "sequenceOf" SHALL be added to the
[children] of the <type> element.
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.
If the SequenceOfType is of the "SEQUENCE OF Type" form then an
element with the [local name] "element" SHALL be added to the
[children] of the <type> element. An attribute with the [local name]
"name" and [normalized value] "item" SHALL be added to the
[attributes] of the <element> element. An attribute with the
[local name] "identifier" and empty [normalized value] SHALL be added
to the [attributes] of the <element> element. The translation of the
Type SHALL be added to the content of the <element> element.
Examples
SEQUENCE OF INTEGER
<type>
<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, 2005
SEQUENCE 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 with the [local name] "type". An
element with the [local name] "list" SHALL be added to the [children]
of the <type> element. The item translation of the NamedType SHALL
be added to the content of the <list> element.
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 with the
[local name] "type". An element with the [local name] "constrained"
SHALL be added to the [children] of the <type> element. The content
of the <constrained> element is the 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, 2005
Definition: 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 with the [local name] "minSize" SHALL be added
to the [attributes] of the <sequenceOf>, <setOf> or <list> element
from the translation of the parent type. The [normalized value] of
this attribute is the value of the lower endpoint. If the value of
the upper endpoint is not "MAX" then an attribute with the
[local name] "maxSize" SHALL be added to the [attributes] of the
<sequenceOf>, <setOf> or <list> element. The [normalized value] of
this attribute is the value of the upper endpoint.
The full translation of a TypeWithConstraint is an element with the
[local name] "type". An element with the [local name] "constrained"
SHALL be added to the [children] of the <type> element. The content
of the <constrained> element is the translation of the parent type
followed by the translation of the Constraint or SizeConstraint.
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>
<minInclusive literal="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.
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 with the
Legg & 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.
The translation of a UserDefinedConstraintParameter of the
"Governor : Value" form is an element with the [local name]
"valueParameter". The content of the <valueParameter> element 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 with the [local name]
"valueSetParameter". The content of the <valueSetParameter> element
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 with the [local name]
"objectParameter". The content of the <objectParameter> element 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 with the [local name]
"objectSetParameter". The content of the <objectSetParameter>
element 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 with the [local name] "typeParameter". The translation of
the Type SHALL be added to the content of the <typeParameter>
element.
The translation of a UserDefinedConstraintParameter that is a
DefinedObjectClass is an element with the [local name]
"classParameter". The translation of the DefinedObjectClass SHALL be
added to the content of the <classParameter> element.
6.13.3. TableConstraint Translation
The translation of a TableConstraint that is a SimpleTableConstraint
is an element with the [local name] "table". The translation of the
ObjectSet in the SimpleTableConstraint SHALL be added to the content
of the <table> element.
The translation of a TableConstraint that is a
ComponentRelationConstraint is an element with the [local name]
"table". The translation of the DefinedObjectSet in the
Legg & Prager Expires 11 October 2005 [Page 41]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ComponentRelationConstraint SHALL be added to the content of the
<table> element. The translation of each AtNotation SHALL be
appended to the [children] of the <table> element.
The translation of an AtNotation is an element with the [local name]
"restrictBy". The content of the <restrictBy> element is 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 RXER
encodings [RXER] 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 the encoding of the effective name is prefixed with
the "@" (U+0040) character.
Examples
ERROR.&Type({Errors}{@severity,@...errorId})
<type>
<constrained>
<type>
<fromClass class="tns:ERROR" fieldName="Type"/>
</type>
<table objectset="tns:Errors">
<restrictBy>severity</restrictBy>
<restrictBy>../../../errorId</restrictBy>
</table>
</constrained>
</type>
SEQUENCE {
iD [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 with the
[local name] "contents".
If the ContentsConstraint is of the "CONTAINING Type" form then an
element with the [local name] "containing" SHALL be added to the
[children] of the <contents> element. The translation of the Type
SHALL be added to the contents of the <containing> element.
If the ContentsConstraint is of the "ENCODED BY Value" form then an
element with the [local name] "encodedBy" SHALL be added to the
[children] of the <contents> element. The translation of the Value
SHALL be added to the contents of the <encodedBy> element.
If the ContentsConstraint is of the
"CONTAINING Type ENCODED BY Value" form then the content of the
<contents> element is an element with the [local name] "containing"
followed by an element with the [local name] "encodedBy". The
translation of the Type SHALL be added to the contents of the
<containing> element, and the translation of the Value SHALL be added
to the contents of the <encodedBy> element.
6.13.5. ExceptionSpec Translation
The translation of an empty ExceptionSpec is empty.
The translation of a non-empty ExceptionSpec is an element with the
[local name] "exception".
If the ExceptionSpec is a SignedNumber then the content of the
<exception> element is the translation of a notional INTEGER Type
Legg & Prager Expires 11 October 2005 [Page 43]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
followed 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 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 is the translation of the Type followed by
the translation of the Value.
Examples
!10
<exception type="asn1:INTEGER" literal="10"/>
!myValue
<exception type="asn1:INTEGER" value="tns:myValue"/>
!PrintableString:"failure"
<exception type="asn1:PrintableString" literal="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 describes attributes that are
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). 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. The
Legg & Prager Expires 11 October 2005 [Page 44]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
extension default for a Type is the extension default of the module
containing the Type.
Definition: The contributing Type for a <type> element is the Type
whose translation produces the content of that <type> element.
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 is not enclosed by another <type>
element then the inherited tag default for that <type> element is the
tag default of the module whose translation contains the <type>
element, otherwise the inherited tag default for the <type> element
is the tag default of the contributing Type for the innermost
enclosing <type> element.
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 is not the same as the tag
default of the contributing Type then an attribute with the
[local name] "tagDefault" SHALL be added to the [attributes] of the
<type> element, otherwise an attribute with the [local name]
"tagDefault" MAY be added to the [attributes] of the <type> element.
The [normalized value] of this attribute is the tag default of the
contributing Type.
Definition: If a <type> element is not enclosed by another <type>
element then the inherited extension default for that <type> element
is the extension default of the module whose translation contains the
<type> element, otherwise the inherited extension default for the
<type> element is the extension default of the contributing Type for
the innermost enclosing <type> element.
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 is not the same as the extension default of
the contributing Type then an attribute with the [local name]
"extensibilityImplied" SHALL be added to the [attributes] of the
<type> element, otherwise an attribute with the [local name]
"extensibilityImplied" MAY be added to the [attributes] of the <type>
element. If the extension default is TRUE then the
[normalized value] of this attribute is "true" or "1", otherwise it
is "false" or "0".
7. Translation of Values
Legg & Prager Expires 11 October 2005 [Page 45]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
A Value in an ASN.1 specification is a mix of literal values (e.g.,
numbers and strings) and notations for referencing defined values.
Likewise, the ASN.1 Schema translation of a Value is a mix of markup
for literal values and markup for referencing notations
(meta-values). A Value is categorized by the following definitions.
Definition: A Value is a literal value if and only if it is not a
meta-value.
Definition: A Value is a meta-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 a meta-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 and the Value of the NamedValue is a
meta-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 and the Value of the
ChoiceValue is a meta-value, or
(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 and the Value of the
NamedValue is a meta-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 a meta-value, or
(iii) the DefinedValue is a ParameterizedValue and the Value
Legg & Prager Expires 11 October 2005 [Page 46]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
on the right hand side of the referenced
ParameterizedValueAssignment is a meta-value, or
(c) the Value is an ObjectClassFieldValue, and
(1) the ObjectClassFieldValue is an OpenTypeFieldVal, or
(2) the ObjectClassFieldValue is a FixedTypeFieldVal, and
(i) the FixedTypeFieldVal is a BuiltinValue that satisfies
case (a), or
(ii) the FixedTypeFieldVal is a ReferencedValue that
satisfies case (b).
7.1. Translation of Literal Values
The translation of a literal value is either the attribute form
translation of a literal value, or the element form translation of a
literal value.
The attribute form translation of a literal value is an attribute
with the [local name] "literal" whose [normalized value] is the RXER
encoding [RXER] of the Value.
The element form translation of a literal value is an element with
the [local name] "value" whose content is the RXER encoding of the
Value, except that a value of the EXTERNAL type (or a subtype
thereof) is encoded according to the associated type defined in
Clause 34.5 of X.680 [X.680]. In addition, where the content of an
element in the encoding corresponds to a nested meta-value the
translation specified in Section 7.2. SHALL be used instead (for the
content of that element). If the content of an element in the
encoding corresponds to a nested literal Value that is a BuiltinValue
that is a a SequenceValue, SetValue, ChoiceValue, SequenceOfValue or
SetOfValue then that nested literal Value MAY be translated as a
meta-value. An attribute with the [local name] "meta",
[namespace name] "http://xmled.info/ns/ASN.1" and [normalized value]
"false" or "0" (e.g., asn1:meta="false") MAY be added to the
[attributes] of the <value> element.
ASIDE: The asn1:meta attribute operates as a switch that indicates
whether the content of the element containing the attribute is
interpreted as ASN.1 Schema notation (a meta-value) or as an RXER
encoding (a literal value).
The attribute form translation of a literal value SHALL NOT be used
if, the RXER encoding of the Value contains items other than
Legg & Prager Expires 11 October 2005 [Page 47]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
character information items, attribute forms of Value have been
explicitly disallowed, or the Value has a nested meta-value.
7.2. Translation of Meta-values
The translation of a meta-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 with the [local name] "value", which is appropriate for a
meta-value that stands on its own. However, a meta-value may also be
nested within a literal value, in which case the [local name] will be
determined according to RXER and the governing ASN.1 type of the
enclosing literal Value.
Examples
zero INTEGER ::= 0
<namedValue name="zero" type="asn1:INTEGER">
<value>0</value><!-- A literal value. -->
</namedValue>
nothing INTEGER ::= zero
<namedValue name="nothing" type="asn1:INTEGER"/>
<value asn1:meta="true" ref="tns:zero"/><!-- A meta-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. -->
<number asn1:meta="true" ref="tns:zero"/><!-- A meta-value. -->
<number>3</number><!-- A literal value. -->
<number>7</number><!-- A literal value. -->
</value>
</namedValue>
7.2.1. DefinedValue Translation
Legg & Prager Expires 11 October 2005 [Page 48]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
If a DefinedValue is a valuereference (not a DummyReference) or an
ExternalValueReference then the translation of the DefinedValue is
either the attribute form translation of a value reference, or the
element form translation of a value reference.
The attribute form translation of a value reference is an attribute
with the [local name] "value". The [normalized value] of this
attribute 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 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. An attribute with the [local name] "ref" SHALL be added to
the [attributes] of the <value> element. The [normalized value] of
this attribute 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 with the
[local name] "context" SHALL be added to the [attributes] of the
<value> element. The [normalized value] of this attribute 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 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, the Value that substitutes for a
DummyReference or ParameterizedValue is necessarily also a
meta-value.
Legg & Prager Expires 11 October 2005 [Page 49]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
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
Value (which is necessarily a meta-value).
The translation of a ChoiceValue 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] of the <value> element. An
element 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. An attribute with the
[local name] "name" SHALL be added to the [attributes] of the
<attribute>, <element>, <content> or <member> element. The
[normalized value] of this attribute is the RXER encoding 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.
The translation of a SequenceValue or SetValue 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] 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, in the order in which their
corresponding NamedType instances appear in the definition of the
governing 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] of the <value>
element.
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.
If the SequenceOfValue has a ValueList then an element with the
[local name] "element" SHALL be appended to the [children] of the
<value> element for each Value in the ValueList. An attribute with
the [local name] "name" and [normalized value] "item" SHALL be added
Legg & Prager Expires 11 October 2005 [Page 50]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
to the [attributes] of the <element> element. The translation of the
Value (from the ValueList) SHALL be added to the content of the
<element> element.
The translation of a NamedValue is an element with the same
[local name] as the translation of the corresponding NamedType, i.e.,
"attribute", "element", "content" or "item". An attribute with the
[local name] "name" SHALL be added to the [attributes] of the
element. The [normalized value] of this attribute is the RXER
encoding of the effective name of the NamedType. The translation of
the Value SHALL be added to the content of the element.
Examples
-- This is the governing type.
MyType ::= SEQUENCE {
one [ATTRIBUTE] INTEGER,
two INTEGER,
three [ATTRIBUTE][LIST] SEQUENCE OF number INTEGER
}
<namedType name="MyType">
<type>
<sequence>
<attribute name="one" type="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.
<namedValue name="myValue1" type="tns:MyType">
<value 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
</namedValue>
myValue2 MyType ::= {
one 456,
two myObject.&number,
-- only the value for component "two" is a meta-value
three { number 123, number 456 }
}
<namedValue name="myValue2" type="tns:MyType">
<value one="456" three="123 456">
<two asn1:meta="true">
<fromObjects object="tns:myObject" fieldName="number"/>
</two>
</value>
</namedValue>
myValue3 MyType ::= {
one myObject.&number,
two 123,
three { number 123, number myObject.&number }
}
<namedValue name="myValue3" type="tns:MyType">
<value asn1:meta="true">
<attribute name="one">
<value asn1:meta="true">
<fromObjects object="tns:myObject" fieldName="number"/>
</value>
</attribute>
<element name="two" literal="123"/>
<attribute name="three">
<value asn1:meta="true">
<item name="number" literal="123"/>
<item name="number">
<value asn1:meta="true">
<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 with the
[local name] "value". An attribute 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. An element with the [local name] "fromObjects" SHALL be
added to the [children] of the <value> element.
The translation of the ReferencedObjects in the ValueFromObject SHALL
be added to the content of the <fromObjects> element.
The translation of the FieldName in the ValueFromObject SHALL be
appended to the content of the <fromObjects> element.
7.2.4. ObjectClassFieldValue Translation
If an ObjectClassFieldValue is a BuiltinValue in a FixedTypeFieldVal
then the translation of the ObjectClassFieldValue is the translation
of the BuiltinValue.
If an ObjectClassFieldValue is a ReferencedValue in a
FixedTypeFieldVal then the translation of the ObjectClassFieldValue
is the translation of the ReferencedValue.
If an ObjectClassFieldValue is an OpenTypeFieldVal then the
translation of the ObjectClassFieldValue is an element 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. An element with the [local name] "openTypeValue" SHALL be
added to the [children] of the <value> element. The translation of
the Type in the OpenTypeFieldVal SHALL be added to the content of the
<openTypeValue> element. The translation of the Value in the
OpenTypeFieldVal SHALL be appended to the content of the
<openTypeValue> element.
Example
myValue TYPE-IDENTIFIER.&Type ::= INTEGER:123
<namedValue name="myValue">
<type>
<fromClass class="asn1:TYPE-IDENTIFIER" fieldName="Type"/>
</type>
<value asn1:meta="true">
<openTypeValue type="asn1:INTEGER" literal="123"/>
</value>
</namedValue>
8. Translation of Value Sets
Legg & Prager Expires 11 October 2005 [Page 53]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
The translation of a ValueSet is an element with the [local name]
"valueSet". The translation of the ElementSetSpecs in the ValueSet
SHALL be added to the [children] of the <valueSet> element.
Example
{ 1 | 3..7, ..., 9..19 EXCEPT ( 11 | 12 ) }
<valueSet>
<union>
<value>1</value>
<range>
<minInclusive literal="3"/>
<maxInclusive literal="7"/>
</range>
</union>
<extension>
<all>
<range>
<minInclusive literal="9"/>
<maxInclusive literal="19"/>
</range>
<except>
<union>
<value>11</value>
<value>12</value>
</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 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.
8.2. ElementSetSpec Translation
If the ElementSetSpec is of the "ALL Exclusions" form then the
Legg & Prager Expires 11 October 2005 [Page 54]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
translation of the ElementSetSpec is an element with the [local name]
"all". An element with the [local name] "except" SHALL be added to
the [children] of the <all> element. The translation of the Elements
in the Exclusions SHALL be added to the [children] of the <except>
element.
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 with the [local name]
"union". The translation of each Intersections SHALL be appended to
the [children] of the <union> element.
If the Intersections has only one IntersectionElements then the
translation of the Intersections is the translation of that
IntersectionElements, otherwise the translation of the Intersections
is an element with the [local name] "intersection". The translation
of each IntersectionElements SHALL be appended to the [children] of
the <intersection> element.
If the IntersectionElements is of the "Elems Exclusions" form then
the translation of the IntersectionElements is an element with the
[local name] "all". The content of the <all> element is the
translation of the Elements in the Elems followed by an element with
the [local name] "except". The translation of the Elements in the
Exclusions SHALL be added to the [children] of the <except> element.
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 with the [local name] "includes".
The translation of the Type in the ContainedSubtype SHALL be added to
the content of the <includes> element.
If a SubtypeElements is a ValueRange then the translation of the
Legg & Prager Expires 11 October 2005 [Page 55]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
SubtypeElements is the translation of the ValueRange.
If a SubtypeElements is a SizeConstraint then the translation of the
SubtypeElements is an element with the [local name] "size". The
content of the <size> element is the translation of the Constraint in
the SizeConstraint.
If a SubtypeElements is a TypeConstraint then the translation of the
SubtypeElements is an element with the [local name] "typeConstraint".
The content of the <typeConstraint> element is the translation of the
Type in the TypeConstraint.
If a SubtypeElements is a PermittedAlphabet then the translation of
the SubtypeElements is an element with the [local name] "from". The
content of the <from> element is the translation of the 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 with the [local name] "pattern".
The content of the <pattern> element is the translation of the Value
in the PatternConstraint.
8.3.1. ValueRange Translation
The translation of a ValueRange is an element with the [local name]
"range".
If the LowerEndpoint in the ValueRange is of the "LowerEndValue <"
form then an element with the [local name] "minExclusive" SHALL be
added to the [children] of the <range> element. If the LowerEndValue
is not "MIN" then the content of the <minExclusive> element 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 with the
[local name] "minInclusive" SHALL be added to the [children] of the
<range> element. The content of the <minInclusive> element 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 with the [local name]
"minInclusive" MAY be added to the [children] of the <range> element.
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, 2005
form then an element with the [local name] "maxExclusive" SHALL be
added to the [children] of the <range> element. If the UpperEndValue
is not "MAX" then the content of the <maxExclusive> element 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 with the
[local name] "maxInclusive" SHALL be added to the [children] of the
<range> element. The content of the <maxInclusive> element 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 with the [local name]
"maxInclusive" MAY be added to the [children] of the <range> element.
Examples
1..10
<range>
<minInclusive literal="1"/>
<maxInclusive literal="10"/>
</range>
0..MAX
<range>
<minInclusive literal="0"/>
</range>
0<..<MAX
<range>
<minExclusive literal="0"/>
<maxExclusive/>
</range>
8.3.2. InnerTypeConstraints Translation
The translation of an InnerTypeConstraints of the
"WITH COMPONENT SingleTypeConstraint" form is an element with the
[local name] "withComponent". The content of the <withComponent>
element is the translation of the Constraint in the
SingleTypeConstraint.
The translation of an InnerTypeConstraints of the
"WITH COMPONENTS MultipleTypeConstraints" form is an element with the
[local name] "withComponents".
Legg & Prager Expires 11 October 2005 [Page 57]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
If the MultipleTypeConstraints is a PartialSpecification then an
attribute with the [local name] "partial" and the [normalized value]
"true" or "1" SHALL be added to the [attributes] of the
<withComponents> element. If the MultipleTypeConstraints is a
FullSpecification then an attribute with the [local name] "partial"
and the [normalized value] "false" or "0" MAY be added to the
[attributes] of the <withComponents> element.
The translation of each NamedConstraint in the
MultipleTypeConstraints SHALL be appended to the [children] of the
<withComponents> element.
The translation of a NamedConstraint is an element 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 with the [local name] "name" SHALL
be added to the [attributes] of the <attribute>, <element>, <content>
or <member> element, as appropriate. The [normalized value] of this
attribute is the RXER encoding 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 with the [local name]
"use" SHALL be added to the [attributes] of the <component> element.
The [normalized value] of this attribute 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, 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 extensibilityImplied
attribute, according to the provisions of Section 6.14.
Legg & Prager Expires 11 October 2005 [Page 58]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
9.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
attribute with the [local name] "class". The [normalized value] of
this attribute 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 with the [local name] "class". An attribute with the
[local name] "ref" SHALL be added to the [attributes] of the <class>
element. The [normalized value] of this attribute 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 with the [local name] "context"
SHALL be added to the [attributes] of the <class> element. The
[normalized value] of this attribute 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, 2005
9.2. ObjectClassDefn Translation
The translation of an ObjectClassDefn is an element with the
[local name] "class". The translation of each FieldSpec in the
ObjectClassDefn SHALL be appended to the [children] of the <class>
element.
The translation of a FieldSpec is the translation of either a
TypeFieldSpec, a FixedTypeValueFieldSpec, a
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 with the [local name] "typeField".
The translation of a TypeFieldSpec with a TypeOptionalitySpec of
"OPTIONAL" is an element with the [local name] "optional". An
element with the [local name] "typeField" SHALL be added to the
[children] of the <optional> element.
The translation of a TypeFieldSpec with a TypeOptionalitySpec of
"DEFAULT" is an element with the [local name] "optional". An element
with the [local name] "typeField" SHALL be added to the [children] of
the <optional> element. An element with the [local name] "default"
SHALL be appended to the [children] of the <optional> element. The
content of the <default> element is the translation of the Type in
the TypeOptionalitySpec.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <typeField> element. The [normalized value] of
this attribute 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
The translation of a FixedTypeValueFieldSpec where the
ValueOptionalitySpec is absent is an element with the [local name]
"valueField".
The translation of a FixedTypeValueFieldSpec with a
ValueOptionalitySpec of "OPTIONAL" is an element with the
[local name] "optional". An element with the [local name]
"valueField" SHALL be added to the [children] of the <optional>
element.
The translation of a FixedTypeValueFieldSpec with a
ValueOptionalitySpec of "DEFAULT" is an element with the [local name]
"optional". An element with the [local name] "valueField" SHALL be
added to the [children] of the <optional> element. An element with
the [local name] "default" SHALL be appended to the [children] of the
<optional> element. The content of the <default> element is the
translation of the Value in the ValueOptionalitySpec.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <valueField> element. The [normalized value] of
this attribute is the valuefieldreference of the
FixedTypeValueFieldSpec, without the ampersand. If the "UNIQUE"
keyword is present then an attribute with the [local name] "unique"
and [normalized value] "true" or "1" SHALL be added to the
[attributes] of the <valueField> element, otherwise an attribute with
the [local name] "unique" and [normalized value] "false" or "0" MAY
be added to the [attributes] of the <valueField> element. The
translation of the Type in the FixedTypeValueFieldSpec SHALL be added
to the content of the <valueField> element.
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"/>
<default literal="0"/>
</optional>
</class>
9.2.3. FixedTypeValueSetFieldSpec Translation
The translation of a FixedTypeValueSetFieldSpec where the
ValueSetOptionalitySpec is absent is an element with the [local name]
"valueSetField".
The translation of a FixedTypeValueSetFieldSpec with a
ValueSetOptionalitySpec of "OPTIONAL" is an element with the
[local name] "optional". An element with the [local name]
"valueSetField" SHALL be added to the [children] of the <optional>
element.
The translation of a FixedTypeValueSetFieldSpec with a
ValueSetOptionalitySpec of "DEFAULT" is an element with the
[local name] "optional". An element with the [local name]
"valueSetField" SHALL be added to the [children] of the <optional>
element. An element with the [local name] "default" SHALL be
appended to the [children] of the <optional> element. The content of
the <default> element is the translation of the ValueSet in the
ValueSetOptionalitySpec.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <valueSetField> element. The [normalized value]
of this attribute is the valuesetfieldreference of the
FixedTypeValueSetFieldSpec, without the ampersand. The translation
of the Type in the FixedTypeValueSetFieldSpec SHALL be added to the
content of the <valueSetField> element.
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"/>
<default>
<valueSet>
<union>
<value>1</value>
<value>2</value>
</union>
</valueSet>
</default>
</optional>
</class>
9.2.4. VariableTypeValueFieldSpec Translation
The translation of a VariableTypeValueFieldSpec where the
ValueOptionalitySpec is absent is an element with the [local name]
"valueField".
The translation of a VariableTypeValueFieldSpec with a
ValueOptionalitySpec of "OPTIONAL" is an element with the
[local name] "optional". An element with the [local name]
"valueField" SHALL be added to the [children] of the <optional>
element.
The translation of a VariableTypeValueFieldSpec with a
ValueOptionalitySpec of "DEFAULT" is an element with the [local name]
"optional". An element with the [local name] "valueField" SHALL be
added to the [children] of the <optional> element. An element with
the [local name] "default" SHALL be appended to the [children] of the
<optional> element. The translation of the Value in the
ValueOptionalitySpec SHALL be added to the content of the <default>
element.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <valueField> element. The [normalized value] of
this attribute is the valuefieldreference of the
VariableTypeValueFieldSpec, without the ampersand. An element with
the [local name] "typeFromField" SHALL be added to the [children] of
the <valueField> element. The translation of the FieldName in the
VariableTypeValueFieldSpec SHALL be added to the content of the
<typeFromField> element.
Example
Legg & Prager Expires 11 October 2005 [Page 63]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
CLASS {
&Syntax DEFAULT INTEGER,
&one &Syntax,
&two &Syntax OPTIONAL,
&three &Syntax DEFAULT 0
}
<class>
<optional>
<typeField name="Syntax"/>
<default 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>
<default literal="0"/>
</optional>
</class>
9.2.5. VariableTypeValueSetFieldSpec Translation
The translation of a VariableTypeValueSetFieldSpec where the
ValueSetOptionalitySpec is absent is an element with the [local name]
"valueSetField".
The translation of a VariableTypeValueSetFieldSpec with a
ValueSetOptionalitySpec of "OPTIONAL" is an element with the
[local name] "optional". An element with the [local name]
"valueSetField" SHALL be added to the [children] of the <optional>
element.
The translation of a VariableTypeValueSetFieldSpec with a
ValueSetOptionalitySpec of "DEFAULT" is an element with the
[local name] "optional". An element with the [local name]
"valueSetField" SHALL be added to the [children] of the <optional>
element. An element with the [local name] "default" SHALL be
appended to the [children] of the <optional> element. The content of
the <default> element is the translation of the ValueSet in the
ValueSetOptionalitySpec.
Legg & Prager Expires 11 October 2005 [Page 64]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <valueSetField> element. The [normalized value]
of this attribute is the valuesetfieldreference of the
VariableTypeValueSetFieldSpec, without the ampersand. An element
with the [local name] "typeFromField" SHALL be added to the
[children] of the <valueSetField> element. The translation of the
FieldName in the VariableTypeValueSetFieldSpec SHALL be added to the
content of the <typeFromField> element.
Example
CLASS {
&Syntax DEFAULT INTEGER,
&One &Syntax,
&Two &Syntax OPTIONAL,
&Three &Syntax DEFAULT { 1 | 2 }
}
<class>
<optional>
<typeField name="Syntax"/>
<default 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>
</union>
</valueSet>
</default>
</optional>
</class>
9.2.6. FieldName Translation
Legg & Prager Expires 11 October 2005 [Page 65]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
The translation of a FieldName is either, at the translator's option,
an attribute with the [local name] "fieldName" added to the
[attributes] of the enclosing element, or an element with the
[local name] "fieldName" appended to the [children] of the enclosing
element.
The [normalized value] of the attribute is a "/" (U+002F) separated
list of the primitive field names without the ampersand characters
("&", U+0026).
The content of the <fieldName> element is (ignoring comment and
processing instruction items) a "/" (U+002F) separated list of the
primitive field names without the ampersand characters ("&", U+0026).
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 with the [local name] "objectField".
The translation of a ObjectFieldSpec with a ObjectOptionalitySpec of
"OPTIONAL" is an element with the [local name] "optional". An
element with the [local name] "objectField" SHALL be added to the
[children] of the <optional> element.
The translation of a ObjectFieldSpec with a ObjectOptionalitySpec of
"DEFAULT" is an element with the [local name] "optional". An element
with the [local name] "objectField" SHALL be added to the [children]
of the <optional> element. An element with the [local name]
"default" SHALL be appended to the [children] of the <optional>
element. The content of the <default> element is the translation of
the Object in the ObjectOptionalitySpec.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <objectField> element. The [normalized value] of
this attribute is the objectfieldreference of the ObjectFieldSpec,
without the ampersand. The translation of the DefinedObjectClass in
the ObjectFieldSpec SHALL be added to the content of the
<objectField> element.
Example
CLASS {
Legg & Prager Expires 11 October 2005 [Page 66]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
&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 with the
[local name] "objectSetField".
The translation of a ObjectSetFieldSpec with a
ObjectSetOptionalitySpec of "OPTIONAL" is an element with the
[local name] "optional". An element with the [local name]
"objectSetField" SHALL be added to the [children] of the <optional>
element.
The translation of a ObjectSetFieldSpec with a
ObjectSetOptionalitySpec of "DEFAULT" is an element with the
[local name] "optional". An element with the [local name]
"objectSetField" SHALL be added to the [children] of the <optional>
element. An element with the [local name] "default" SHALL be
appended to the [children] of the <optional> element. The content of
the <default> element is the translation of the ObjectSet in the
ObjectSetOptionalitySpec.
An attribute with the [local name] "name" SHALL be added to the
[attributes] of the <objectSetField> element. The [normalized value]
of this attribute is the objectsetfieldreference of the
ObjectSetFieldSpec, without the ampersand. The translation of the
DefinedObjectClass in the ObjectSetFieldSpec SHALL be added to the
content of the <objectSetField> element.
Example
CLASS {
&One TYPE-IDENTIFIER,
Legg & Prager Expires 11 October 2005 [Page 67]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
&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 extensibilityImplied attribute, 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
with the [local name] "object". The [normalized value] of this
attribute 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, 2005
The element form translation of an object reference is an element
with the [local name] "object". An attribute with the [local name]
"ref" SHALL be added to the [attributes] of the <object> element.
The [normalized value] of this attribute 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 with the [local name] "context" SHALL be added to the
[attributes] of the <object> element. The [normalized value] of this
attribute 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 extensibilityImplied attribute, 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 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.
The translation of a FieldSetting is an element with the [local name]
"field". An attribute with the [local name] "name" SHALL be added to
the [attributes] of the <field> element. The [normalized value] of
this attribute is the PrimitiveFieldName without the ampersand. The
translation of the Type, Value, ValueSet, Object or ObjectSet in the
Legg & Prager Expires 11 October 2005 [Page 69]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
Setting of the FieldSetting SHALL be added to the [children] of the
<field> element.
Example
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"/>
<field name="Three">
<valueSet>
<union>
<value>1</value>
<value>2</value>
</union>
</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 with the
[local name] "object". An element with the [local name]
"fromObjects" SHALL be added to the [children] of the <object>
element.
The translation of the ReferencedObjects in the ObjectFromObject
SHALL be added to the content of the <fromObjects> element.
The translation of the FieldName in the ObjectFromObject SHALL be
appended to the content of the <fromObjects> element.
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 with the [local name] "objectSet". The
translation of the ObjectSetSpec in the ObjectSet SHALL be added to
the [children] of the <objectSet> element.
ASIDE: An ObjectSet that is directly a DefinedObjectSet is a
notational capability that does not exist in ASN.1 specifications
but is allowed in ASN.1 Schema to avoid excessive nesting of
<objectSet> elements 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
element 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.
If an ObjectSetSpec does not contain a RootElementSetSpec then the
Legg & Prager Expires 11 October 2005 [Page 71]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
translation of the ObjectSetSpec is an element 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.
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 with the [local name] "objectSet". The [normalized value]
of this attribute 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
with the [local name] "objectSet". An attribute with the
[local name] "ref" SHALL be added to the [attributes] of the
<objectSet> element. The [normalized value] of this attribute 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 with the [local name] "context"
SHALL be added to the [attributes] of the <objectSet> element. The
[normalized value] of this attribute 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
object definition is referenced by an objectsetreference or an
ExternalObjectSetReference.
Usually the translator is free to choose either the attribute form or
element form translation for an object set reference, however in some
contexts the attribute form is explicitly disallowed.
If a DefinedObjectSet is a DummyReference then the translation of the
Legg & Prager Expires 11 October 2005 [Page 72]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
DefinedObjectSet 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 extensibilityImplied attribute, 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.1 specifications but is
allowed in ASN.1 Schema 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 extensibilityImplied attribute, according
to the provisions of Section 6.14.
11.2.1. ObjectSetFromObjects Translation
The translation of an ObjectSetFromObjects is an element with the
[local name] "objectSet". An element with the [local name]
"fromObjects" SHALL be added to the [children] of the <objectSet>
element.
The translation of the ReferencedObjects in the ObjectSetFromObjects
Legg & Prager Expires 11 October 2005 [Page 73]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
SHALL be added to the content of the <fromObjects> element.
The translation of the FieldName in the ObjectSetFromObjects SHALL be
appended to the content of the <fromObjects> element.
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.1 specifications
but is allowed in ASN.1 Schema 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 extensibilityImplied attribute, according
to the provisions of Section 6.14.
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 in ASN.1 Schema, but rather affect how an
Legg & Prager Expires 11 October 2005 [Page 74]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ASN.1 specification is translated into an ASN.1 Schema 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 in ASN.1 Schema.
If the encodingreference in an EncodingControlSection is GSER then
the translation of the EncodingControlSection is an element with the
[local name] "encodingControl-GSER". The translation of the
EncodingInstructionAssignmentList SHALL be added to the content of
the <encodingControl-GSER> element.
The EncodingInstructionAssignmentList notation is different for each
set of encoding instructions. The translation into ASN.1 Schema 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 with the
[local name] "encodingControl-XER". The translation of the
EncodingInstructionAssignmentList SHALL be added to the content of
the <encodingControl-XER> element. The translation into ASN.1 Schema
of an EncodingInstructionAssignmentList for XER is specified in a
separate document [XEREIT].
14. Security Considerations
The ASN.1 Schema 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.1 Schema translation.
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, 2005
Appendix A. ASN.1 for ASN.1 Schema
This appendix is normative.
ASN1-Schema
{ iso(1) identified-organization(3) dod(6)
internet(1) private(4) enterprise(1)
xmled(21472) asn1(1) module(0) schema(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,
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
FROM GSER-EncodingInstructionSchema
{ iso(1) identified-organization(3) dod(6)
internet(1) private(4) enterprise(1)
xmled(21472) asn1(1) module(0) gser-ei-schema(2) }
XER-EncodingInstruction,
XER-EncodingInstructionAssignmentList
FROM XER-EncodingInstructionSchema
{ iso(1) identified-organization(3) dod(6)
internet(1) private(4) enterprise(1)
xmled(21472) asn1(1) module(0) xer-ei-schema(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, 2005
tagDefault [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
}
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, 2005
value [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,
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, 2005
content 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,
definition [CONTENT] SEQUENCE {
name [ATTRIBUTE] NCName,
identifier [ATTRIBUTE] IdentifierOrEmpty OPTIONAL,
typeAsVersion [ATTRIBUTE] BOOLEAN DEFAULT FALSE,
type [CONTENT] Type
}
}
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,
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, 2005
instanceOf 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 {
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] INTEGER
Legg & 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]
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-EncodingInstruction
Legg & Prager Expires 11 October 2005 [Page 81]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
XER-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
}
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 OPTIONAL
Legg & 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
}
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, 2005
PrecedenceList ::= [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 { ...,
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, 2005
SequenceOfOrListType ::= 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,
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, 2005
valueSet [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 ::= AnySimpleType
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 {
literal [ATTRIBUTE] AnySimpleType,
valueRef [NAME AS "value"] [ATTRIBUTE] QName,
value ElementFormValue
}
Legg & Prager Expires 11 October 2005 [Page 86]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
ElementFormValue ::= AnyType
-- If asn1:meta="true" then the governing type of Value.value
-- is ElementFormMetaValue.
ElementFormMetaValue ::= SEQUENCE {
definition [CONTENT] CHOICE {
reference [CONTENT] GeneralReference,
fromObjects InformationFromObjects,
openTypeValue SEQUENCE {
type [CONTENT] Type,
value [CONTENT] Value
},
components [CONTENT] ComponentValueList
}
}
ComponentValueList ::= SEQUENCE SIZE (1..MAX) OF
component [CONTENT] NamedValue
NamedValue ::= CHOICE {
attribute GenericNamedValue,
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, 2005
ElementSetSpec ::= 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
IntersectionElements ::= CHOICE {
all SEQUENCE {
elements [CONTENT] Elements OPTIONAL,
except SEQUENCE {
exclusions [CONTENT] Elements
}
},
elements [CONTENT] Elements
}
Elements ::= CHOICE {
value ElementFormValue,
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, 2005
withComponents 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 {
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, 2005
PresenceConstraint ::= [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
}
}
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, 2005
WITH 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 {
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, 2005
ValueSetFieldReference ::= 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,
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, 2005
ElementFormObjectSet ::= 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
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"
TARGET-NAMESPACE "http://xmled.info/ns/ASN.1"
COMPONENT schema ModuleDefinition
COMPONENT meta [ATTRIBUTE] BOOLEAN
END
Appendix B. ASN.1 Schema for ASN.1 Schema
This appendix is non-normative.
<?xml version="1.0"?>
<asn1:schema 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"
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, 2005
targetNamespace="http://xmled.info/ns/ASN.1"
extensibilityImplied="true">
<!-- Copyright (C) The Internet Society 2005. This version of
this ASN.1 Schema is part of RFC XXXX; see the RFC itself
for full legal notices. -->
<import name="GSER-EncodingInstructionSchema"
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"/>
<import name="XER-EncodingInstructionSchema"
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"/>
<namedType name="ModuleDefinition">
<type>
<sequence>
<attribute name="name" type="asd:ModuleReference"/>
<optional>
<attribute name="identifier" type="asd: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"/>
<default literal="AUTOMATIC"/>
</optional>
<optional>
<attribute name="extensibilityImplied" type="asn1:BOOLEAN"/>
<default literal="false"/>
</optional>
<optional>
<content name="imports" type="asd:ImportList"/>
</optional>
<optional>
<content name="assignments" type="asd: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"/>
</optional>
</sequence>
</type>
</namedType>
<namedType name="ModuleReference" type="asd:TypeReference"/>
<namedType name="DefinitiveIdentifier"
type="asn1:OBJECT-IDENTIFIER"/>
<namedType name="TagDefault">
<type>
<enumerated>
<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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="Import">
<type>
<sequence>
<optional>
<attribute name="name" type="asd:ModuleReference"/>
</optional>
<optional>
<attribute name="identifier" type="asd: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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="Assignment">
<type>
<choice>
<element name="namedType" type="asd:TypeAssignment"/>
<element name="namedValue" type="asd:ValueAssignment"/>
<element name="namedValueSet" type="asd:ValueSetTypeAssignment"/>
<element name="namedClass" type="asd:ObjectClassAssignment"/>
<element name="namedObject" type="asd:ObjectAssignment"/>
<element name="namedObjectSet" type="asd:ObjectSetAssignment"/>
<content name="component" type="asd:TopLevelNamedType"/>
</choice>
</type>
</namedType>
<namedType name="TypeAssignment">
<type>
<sequence>
<attribute name="name" type="asd:TypeReference"/>
<content name="type" type="asd:Type"/>
</sequence>
</type>
</namedType>
<namedType name="TypeReference">
<type>
<constrained type="asn1:UTF8String">
<pattern literal="[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, 2005
<content name="type" type="asd:Type"/>
<content name="value" type="asd:Value"/>
</sequence>
</type>
</namedType>
<namedType name="ValueReference" type="asd:Identifier"/>
<namedType name="Identifier">
<type>
<constrained type="asn1:UTF8String">
<pattern literal="[a-z]\w(-\w+)*"/>
</constrained>
</type>
</namedType>
<namedType name="ValueSetTypeAssignment">
<type>
<sequence>
<attribute name="name" type="asd:TypeReference"/>
<content name="type" type="asd:Type"/>
<content name="valueSet" type="asd:ValueSet"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectClassAssignment">
<type>
<sequence>
<attribute name="name" type="asd:ObjectClassReference"/>
<content name="objectClass" type="asd:ObjectClass"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectClassReference">
<type>
<constrained type="asn1:UTF8String">
<pattern literal="[A-Z][A-Z0-9]*(-[A-Z0-9]+)*"/>
</constrained>
</type>
</namedType>
<namedType name="ObjectAssignment">
<type>
<sequence>
<attribute name="name" type="asd:ObjectReference"/>
<content name="objectClass" type="asd:DefinedObjectClass"/>
Legg & Prager Expires 11 October 2005 [Page 97]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
<content name="object" type="asd:Object"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectReference" type="asd:ValueReference"/>
<namedType name="ObjectSetAssignment">
<type>
<sequence>
<attribute name="name" type="asd:ObjectSetReference"/>
<content name="objectClass" type="asd:DefinedObjectClass"/>
<content name="objectSet" type="asd:ObjectSet"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectSetReference" type="asd:TypeReference"/>
<namedType name="TopLevelNamedType">
<type>
<constrained type="asd: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"/>
<element name="element" type="asd:Element"/>
<element name="content" type="asd:InvisibleNamedType"/>
<element name="member" type="asd:InvisibleNamedType"/>
Legg & Prager Expires 11 October 2005 [Page 98]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
<element name="item" type="asd:InvisibleNamedType"/>
</choice>
</type>
</namedType>
<namedType name="Attribute">
<type>
<constrained type="asd:GenericNamedType">
<withComponents partial="true">
<content name="definition">
<withComponents partial="true">
<attribute name="typeAsVersion" use="ABSENT"/>
</withComponents>
</content>
</withComponents>
</constrained>
</type>
</namedType>
<namedType name="Element" type="asd:GenericNamedType"/>
<namedType name="InvisibleNamedType">
<type>
<constrained type="asd: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"/>
<content name="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, 2005
<attribute name="typeAsVersion" type="asn1:BOOLEAN"/>
<default literal="false"/>
</optional>
<content name="type" type="asd:Type"/>
</sequence>
</type>
</content>
</choice>
</type>
</namedType>
<namedType name="IdentifierOrEmpty">
<type>
<constrained type="asn1:UTF8String">
<union>
<includes type="asd:Identifier"/>
<value></value>
</union>
</constrained>
</type>
</namedType>
<namedType name="Type">
<type>
<choice>
<attribute name="type" identifier="typeRef" type="asn1:QName"/>
<element name="type" type="asd:ElementFormType"/>
</choice>
</type>
</namedType>
<namedType name="ElementFormType">
<type>
<sequence>
<optional>
<attribute name="tagDefault" type="asd:TagDefault"/>
</optional>
<optional>
<attribute name="extensibilityImplied" type="asn1:BOOLEAN"/>
</optional>
<optional>
<attribute name="explicit" type="asn1:BOOLEAN"/>
<default literal="false"/>
</optional>
<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, 2005
<attribute name="ancestor">
<type>
<constrained type="asn1:INTEGER">
<range>
<minInclusive literal="1"/>
</range>
</constrained>
</type>
</attribute>
<element name="namedBitList" type="asd:NamedBitList"/>
<element name="namedNumberList" type="asd:NamedNumberList"/>
<element name="enumerated" type="asd:EnumeratedType"/>
<element name="tagged" type="asd:TaggedType"/>
<element name="prefixed" type="asd:EncodingPrefixedType"/>
<element name="selection" type="asd:SelectionType"/>
<element name="instanceOf" type="asd:InstanceOfType"/>
<element name="fromClass" type="asd:ObjectClassFieldType"/>
<element name="fromObjects"
type="asd:InformationFromObjects"/>
<element name="sequence" type="asd:SequenceType"/>
<element name="set" type="asd:SetType"/>
<element name="choice" type="asd:ChoiceType"/>
<element name="union" type="asd:UnionType"/>
<element name="sequenceOf" type="asd:SequenceOfType"/>
<element name="setOf" type="asd:SetOfType"/>
<element name="list" type="asd: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"/>
</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>
<namedType name="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>
<namedType name="NamedBitList">
<type>
<sequence>
<content name="namedBits">
<type>
<sequenceOf minSize="1">
<element name="namedBit" type="asd:NamedBit"/>
</sequenceOf>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="NamedBit">
<type>
<sequence>
<attribute name="name" type="asn1:NCName"/>
<optional>
<attribute name="identifier" type="asd:Identifier"/>
</optional>
<attribute name="bit">
<type>
<constrained type="asn1:INTEGER">
<range>
<minInclusive literal="0"/>
Legg & Prager Expires 11 October 2005 [Page 102]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
</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"/>
</sequenceOf>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="NamedNumber">
<type>
<sequence>
<attribute name="name" type="asn1:NCName"/>
<optional>
<attribute name="identifier" type="asd:Identifier"/>
</optional>
<attribute name="number" type="asn1:INTEGER"/>
</sequence>
</type>
</namedType>
<namedType name="EnumeratedType">
<type>
<sequence>
<content name="root" type="asd:Enumeration"/>
<optional>
<element name="extension">
<type>
<sequence>
<optional>
<element name="exception" type="asd:ExceptionSpec"/>
</optional>
<optional>
<content name="additions" type="asd: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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="EnumerationItem">
<type>
<sequence>
<attribute name="name" type="asn1:NCName"/>
<optional>
<attribute name="identifier" type="asd:Identifier"/>
</optional>
<optional>
<attribute name="number" type="asn1:INTEGER"/>
</optional>
</sequence>
</type>
</namedType>
<namedType name="TaggedType">
<type>
<sequence>
<optional>
<attribute name="tagClass" type="asd:TagClass"/>
</optional>
<optional>
<attribute name="tagging" type="asd:Tagging"/>
</optional>
<content name="type" type="asd: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"/>
<content name="type" type="asd:Type"/>
</sequence>
</type>
</namedType>
<namedType name="EncodingPrefixes">
<type>
<sequenceOf minSize="1">
<content name="prefix" type="asd:EncodingPrefix"/>
</sequenceOf>
</type>
</namedType>
<namedType name="EncodingPrefix">
<type>
<choice>
<element name="GSER" identifier="gser"
type="asd:GSER-EncodingInstructions"/>
<element name="XER" identifier="xer"
type="asd: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"/>
</sequence>
</type>
</namedType>
<namedType name="InstanceOfType">
<type>
<sequence>
<content name="objectClass" type="asd:DefinedObjectClass"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectClassFieldType">
<type>
<sequence>
<content name="objectClass" type="asd:DefinedObjectClass"/>
<content name="fieldName" type="asd:FieldName"/>
</sequence>
</type>
</namedType>
<namedType name="FieldName">
Legg & Prager Expires 11 October 2005 [Page 106]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
<type>
<choice>
<attribute name="fieldName" identifier="fieldNameAtt"
type="asd:PrimitiveFieldNames"/>
<element name="fieldName" type="asd:PrimitiveFieldNames"/>
</choice>
</type>
</namedType>
<namedType name="PrimitiveFieldNames" type="asn1:UTF8String"/>
<namedType name="InformationFromObjects">
<type>
<sequence>
<content name="referencedObjects" type="asd:ReferencedObjects"/>
<content name="fieldName" type="asd:FieldName"/>
</sequence>
</type>
</namedType>
<namedType name="ReferencedObjects">
<type>
<choice>
<content name="object" type="asd:Object"/>
<content name="objectSet" type="asd:ObjectSet"/>
</choice>
</type>
</namedType>
<namedType name="SequenceType">
<type>
<sequence>
<optional>
<content name="root" type="asd:ComponentTypeList"/>
</optional>
<optional>
<content name="extensionAndFinal">
<type>
<sequence>
<element name="extension">
<type>
<sequence>
<optional>
<element name="exception" type="asd:ExceptionSpec"/>
</optional>
<optional>
<content name="additions" type="asd: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"/>
</optional>
</sequence>
</type>
</content>
</optional>
</sequence>
</type>
</namedType>
<namedType name="ComponentTypeList">
<type>
<sequenceOf minSize="1">
<content name="componentType" type="asd:ComponentType"/>
</sequenceOf>
</type>
</namedType>
<namedType name="ComponentType">
<type>
<choice>
<content name="component" type="asd:SequenceNamedType"/>
<element name="optional">
<type>
<sequence>
<content name="component" type="asd:SequenceNamedType"/>
<optional>
<element name="default">
<type>
<sequence>
<content name="value" type="asd:Value"/>
</sequence>
</type>
</element>
</optional>
</sequence>
</type>
</element>
<element name="componentsOf">
<type>
<sequence>
<content name="type" type="asd: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>
<constrained type="asd: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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="ExtensionAddition">
<type>
<choice>
<element name="extensionGroup"
type="asd:ExtensionAdditionGroup"/>
<content name="componentType" type="asd:ComponentType"/>
</choice>
</type>
</namedType>
<namedType name="ExtensionAdditionGroup">
<type>
<sequence>
<optional>
<attribute name="version" type="asd:VersionNumber"/>
</optional>
<content name="componentTypes" type="asd: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>
<minInclusive literal="2"/>
</range>
</constrained>
</type>
</namedType>
<namedType name="SetType" type="asd:SequenceType"/>
<namedType name="ChoiceOrUnionType">
<type>
<sequence>
<optional>
<attribute name="precedence" type="asd:PrecedenceList"/>
</optional>
<content name="root" type="asd:AlternativeTypeList"/>
<optional>
<element name="extension">
<type>
<sequence>
<optional>
<element name="exception" type="asd:ExceptionSpec"/>
</optional>
<optional>
<content name="additions"
type="asd:ExtensionAdditionAlternatives"/>
</optional>
</sequence>
</type>
</element>
</optional>
</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"/>
</sequenceOf>
Legg & Prager Expires 11 October 2005 [Page 110]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
</type>
</namedType>
<namedType name="ChoiceOrUnionNamedType">
<type>
<constrained type="asd: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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="ExtensionAdditionAlternative">
<type>
<choice>
<element name="extensionGroup"
type="asd:ExtensionAdditionAlternativesGroup"/>
<content name="component" type="asd:ChoiceOrUnionNamedType"/>
</choice>
</type>
</namedType>
<namedType name="ExtensionAdditionAlternativesGroup">
<type>
<sequence>
<optional>
<attribute name="version" type="asd:VersionNumber"/>
</optional>
<content name="alternatives" type="asd:AlternativeTypeList"/>
</sequence>
</type>
</namedType>
<namedType name="ChoiceType">
<type>
<constrained type="asd: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>
<includes type="asd: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>
<includes type="asd:ChoiceNamedType"/>
</withComponent>
</content>
</withComponents>
</element>
<content name="component">
<includes type="asd:ChoiceNamedType"/>
</content>
</withComponents>
</withComponent>
</content>
</withComponents>
</element>
</withComponents>
</constrained>
</type>
</namedType>
<namedType name="ChoiceNamedType">
<type>
<constrained type="asd:ChoiceOrUnionNamedType">
<withComponents partial="true">
<element name="member" use="ABSENT"/>
</withComponents>
</constrained>
</type>
</namedType>
<namedType name="UnionType">
<type>
<constrained type="asd:ChoiceOrUnionType">
<withComponents partial="true">
<content name="root">
<withComponent>
Legg & Prager Expires 11 October 2005 [Page 112]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
<includes type="asd: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>
<includes type="asd:UnionNamedType"/>
</withComponent>
</content>
</withComponents>
</element>
<content name="component">
<includes type="asd:UnionNamedType"/>
</content>
</withComponents>
</withComponent>
</content>
</withComponents>
</element>
</withComponents>
</constrained>
</type>
</namedType>
<namedType name="UnionNamedType">
<type>
<constrained type="asd: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>
<minInclusive literal="0"/>
</range>
</constrained>
</type>
</attribute>
</optional>
<optional>
<attribute name="maxSize">
<type>
<constrained type="asn1:INTEGER">
<range>
<minInclusive literal="0"/>
</range>
</constrained>
</type>
</attribute>
</optional>
<content name="component">
<type>
<constrained type="asd:NamedType">
<withComponents partial="true">
<element name="attribute" use="ABSENT"/>
<element name="member" use="ABSENT"/>
</withComponents>
</constrained>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="SequenceOfType">
<type>
<constrained type="asd: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, 2005
<namedType name="ListType">
<type>
<constrained type="asd: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"/>
<content name="constraint" type="asd:Constraint"/>
</sequence>
</type>
</namedType>
<namedType name="Constraint">
<type>
<sequence>
<content name="constraintSpec">
<type>
<choice>
<content name="subtype" type="asd:ElementSetSpecs"/>
<element name="constrainedBy"
type="asd:UserDefinedConstraint"/>
<element name="table" type="asd:TableConstraint"/>
<element name="contents" type="asd:ContentsConstraint"/>
</choice>
</type>
</content>
<optional>
<element name="exception" type="asd: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"/>
</optional>
</sequence>
</type>
</namedType>
<namedType name="ConstraintParameters">
<type>
<sequenceOf minSize="1">
<content name="parameter"
type="asd:UserDefinedConstraintParameter"/>
</sequenceOf>
</type>
</namedType>
<namedType name="UserDefinedConstraintParameter">
<type>
<choice>
<element name="valueParameter">
<type>
<sequence>
<content name="type" type="asd:Type"/>
<content name="value" type="asd:Value"/>
</sequence>
</type>
</element>
<element name="valueSetParameter">
<type>
<sequence>
<content name="type" type="asd:Type"/>
<content name="valueSet" type="asd:ValueSet"/>
</sequence>
</type>
</element>
<element name="objectParameter">
<type>
<sequence>
<content name="objectClass" type="asd:DefinedObjectClass"/>
<content name="object" type="asd:Object"/>
</sequence>
</type>
</element>
<element name="objectSetParameter">
<type>
<sequence>
<content name="objectClass" type="asd:DefinedObjectClass"/>
<content name="objectSet" type="asd:ObjectSet"/>
Legg & Prager Expires 11 October 2005 [Page 116]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
</sequence>
</type>
</element>
<element name="typeParameter">
<type>
<sequence>
<content name="type" type="asd:Type"/>
</sequence>
</type>
</element>
<element name="classParameter">
<type>
<sequence>
<content name="objectClass" type="asd:DefinedObjectClass"/>
</sequence>
</type>
</element>
</choice>
</type>
</namedType>
<namedType name="TableConstraint">
<type>
<sequence>
<content name="objectSet" type="asd:ObjectSet"/>
<optional>
<content name="componentRelation" type="asd:AtNotations"/>
</optional>
</sequence>
</type>
</namedType>
<namedType name="AtNotations">
<type>
<sequenceOf minSize="1">
<element name="restrictBy" type="asd:AtNotation"/>
</sequenceOf>
</type>
</namedType>
<namedType name="AtNotation" type="asn1:AnySimpleType"/>
<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"/>
</sequence>
</type>
</element>
</optional>
<optional>
<element name="encodedBy">
<type>
<sequence>
<content name="value" type="asd: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">
<type>
<sequence>
<content name="type" type="asd:Type"/>
<content name="value" type="asd:Value"/>
</sequence>
</type>
</namedType>
<namedType name="Value">
<type>
<choice>
<attribute name="literal" type="asn1:AnySimpleType"/>
<attribute name="value" identifier="valueRef" type="asn1:QName"/>
<element name="value" type="asd:ElementFormValue"/>
</choice>
</type>
Legg & Prager Expires 11 October 2005 [Page 118]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
</namedType>
<namedType name="ElementFormValue" type="asn1:AnyType"/>
<namedType name="ElementFormMetaValue">
<type>
<sequence>
<content name="definition">
<type>
<choice>
<content name="reference" type="asd:GeneralReference"/>
<element name="fromObjects"
type="asd:InformationFromObjects"/>
<element name="openTypeValue">
<type>
<sequence>
<content name="type" type="asd:Type"/>
<content name="value" type="asd:Value"/>
</sequence>
</type>
</element>
<content name="components" type="asd:ComponentValueList"/>
</choice>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="ComponentValueList">
<type>
<sequenceOf minSize="1">
<content name="component" type="asd:NamedValue"/>
</sequenceOf>
</type>
</namedType>
<namedType name="NamedValue">
<type>
<choice>
<element name="attribute" type="asd:GenericNamedValue"/>
<element name="element" type="asd:GenericNamedValue"/>
<element name="content" type="asd:GenericNamedValue"/>
<element name="member" type="asd:GenericNamedValue"/>
<element name="item" type="asd: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"/>
</sequence>
</type>
</namedType>
<namedType name="ValueSet">
<type>
<choice>
<element name="valueSet" type="asd:ElementFormValueSet"/>
</choice>
</type>
</namedType>
<namedType name="ElementFormValueSet">
<type>
<sequence>
<content name="definition">
<type>
<choice>
<content name="elementSetSpecs" type="asd:ElementSetSpecs"/>
</choice>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="ElementSetSpecs">
<type>
<sequence>
<content name="root" type="asd:ElementSetSpec"/>
<optional>
<element name="extension">
<type>
<sequence>
<content name="additions" type="asd: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"/>
<element name="union">
<type>
<sequence>
<content name="list" type="asd:IntersectionsList"/>
</sequence>
</type>
</element>
</choice>
</type>
</namedType>
<namedType name="IntersectionsList">
<type>
<sequenceOf minSize="2">
<content name="intersections" type="asd:Intersections"/>
</sequenceOf>
</type>
</namedType>
<namedType name="Intersections">
<type>
<choice>
<content name="single" type="asd:IntersectionElements"/>
<element name="intersection">
<type>
<sequence>
<content name="list" type="asd:IntersectionElementsList"/>
</sequence>
</type>
</element>
</choice>
</type>
</namedType>
<namedType name="IntersectionElementsList">
<type>
<sequenceOf minSize="2">
<content name="intersectionElements"
type="asd: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"/>
</optional>
<element name="except">
<type>
<sequence>
<content name="exclusions" type="asd:Elements"/>
</sequence>
</type>
</element>
</sequence>
</type>
</element>
<content name="elements" type="asd:Elements"/>
</choice>
</type>
</namedType>
<namedType name="Elements">
<type>
<choice>
<element name="value" type="asd:ElementFormValue"/>
<element name="includes">
<type>
<sequence>
<content name="containedSubtype" type="asd:Type"/>
</sequence>
</type>
</element>
<element name="range" type="asd:ValueRange"/>
<element name="size">
<type>
<sequence>
<content name="constraint" type="asd:Constraint"/>
</sequence>
</type>
</element>
<element name="typeConstraint">
<type>
<sequence>
<content name="type" type="asd: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"/>
</sequence>
</type>
</element>
<element name="withComponent">
<type>
<sequence>
<content name="singleTypeConstraint" type="asd:Constraint"/>
</sequence>
</type>
</element>
<element name="withComponents"
type="asd:MultipleTypeConstraints"/>
<element name="pattern">
<type>
<sequence>
<content name="patternConstraint" type="asd:Value"/>
</sequence>
</type>
</element>
<element name="object" type="asd:ElementFormObject"/>
<element name="objectSet" type="asd: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"/>
</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"/>
</optional>
</sequence>
</type>
</element>
</choice>
</type>
</content>
<default>
<value>
<minInclusive/>
</value>
</default>
</optional>
<optional>
<content name="maximum">
<type>
<choice>
<element name="maxInclusive">
<type>
<sequence>
<optional>
<content name="upperEndValue" type="asd:Value"/>
</optional>
</sequence>
</type>
</element>
<element name="maxExclusive">
<type>
<sequence>
<optional>
<content name="upperEndValue" type="asd:Value"/>
</optional>
</sequence>
</type>
</element>
</choice>
</type>
</content>
<default>
<value>
<maxInclusive/>
</value>
</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"/>
<default literal="false"/>
</optional>
<content name="typeConstraints" type="asd:TypeConstraints"/>
</sequence>
</type>
</namedType>
<namedType name="TypeConstraints">
<type>
<sequenceOf minSize="1">
<content name="namedConstraint" type="asd:NamedConstraint"/>
</sequenceOf>
</type>
</namedType>
<namedType name="NamedConstraint">
<type>
<choice>
<element name="attribute" type="asd:GenericNamedConstraint"/>
<element name="element" type="asd:GenericNamedConstraint"/>
<element name="content" type="asd:GenericNamedConstraint"/>
<element name="member" type="asd:GenericNamedConstraint"/>
<element name="item" type="asd:GenericNamedConstraint"/>
</choice>
</type>
</namedType>
<namedType name="GenericNamedConstraint">
<type>
<sequence>
<attribute name="name" type="asn1:QName"/>
<optional>
<attribute name="use" type="asd:PresenceConstraint"/>
</optional>
<optional>
<content name="constraint" type="asd: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"/>
<element name="class" type="asd:ElementFormObjectClass"/>
</choice>
</type>
</namedType>
<namedType name="DefinedObjectClass">
<type>
<constrained type="asd: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"/>
<content name="objectClassDefn" type="asd: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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="FieldSpec">
<type>
<choice>
<element name="typeField" type="asd:TypeField"/>
<element name="valueField" type="asd:ValueField"/>
<element name="valueSetField" type="asd:ValueSetField"/>
<element name="objectField" type="asd:ObjectField"/>
<element name="objectSetField" type="asd:ObjectSetField"/>
<element name="optional" type="asd:OptionalField"/>
</choice>
</type>
</namedType>
<namedType name="OptionalField">
<type>
<constrained>
<type>
<sequence>
<content name="field">
<type>
<choice>
<element name="typeField" type="asd:TypeField"/>
<element name="valueField" type="asd:ValueField"/>
<element name="valueSetField" type="asd:ValueSetField"/>
<element name="objectField" type="asd:ObjectField"/>
<element name="objectSetField" type="asd:ObjectSetField"/>
</choice>
</type>
</content>
<optional>
<element name="default">
<type>
<sequence>
<content name="setting" type="asd: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">
<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">
<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"/>
</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"/>
<namedType name="ValueField">
<type>
<constrained>
<type>
<sequence>
<attribute name="name" type="asd:ValueFieldReference"/>
<optional>
<attribute name="unique" type="asn1:BOOLEAN"/>
<default literal="false"/>
</optional>
<content name="governor">
<type>
<choice>
<content name="type" type="asd:Type"/>
<element name="typeFromField">
<type>
<sequence>
<content name="fieldName" type="asd: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, 2005
<namedType name="ValueSetField">
<type>
<sequence>
<attribute name="name" type="asd:ValueSetFieldReference"/>
<content name="governor">
<type>
<choice>
<content name="type" type="asd:Type"/>
<element name="typeFromField">
<type>
<sequence>
<content name="fieldName" type="asd:FieldName"/>
</sequence>
</type>
</element>
</choice>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="ValueSetFieldReference" type="asd:TypeReference"/>
<namedType name="ObjectField">
<type>
<sequence>
<attribute name="name" type="asd:ObjectFieldReference"/>
<content name="objectClass" type="asd:DefinedObjectClass"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectFieldReference" type="asd:ObjectReference"/>
<namedType name="ObjectSetField">
<type>
<sequence>
<attribute name="name" type="asd:ObjectSetFieldReference"/>
<content name="objectClass" type="asd:DefinedObjectClass"/>
</sequence>
</type>
</namedType>
<namedType name="ObjectSetFieldReference"
type="asd: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"/>
</choice>
</type>
</namedType>
<namedType name="ElementFormObject">
<type>
<sequence>
<content name="definition">
<type>
<choice>
<content name="reference" type="asd:Reference"/>
<element name="fromObjects"
type="asd:InformationFromObjects"/>
<content name="fields" type="asd:ObjectDefn"/>
</choice>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="ObjectDefn">
<type>
<sequenceOf>
<element name="field" type="asd:FieldSetting"/>
</sequenceOf>
</type>
</namedType>
<namedType name="FieldSetting">
<type>
<sequence>
<attribute name="name" type="asn1:NCName"/>
<content name="setting" type="asd:Setting"/>
</sequence>
</type>
</namedType>
<namedType name="Setting">
<type>
<choice>
<content name="type" type="asd:Type"/>
<content name="value" type="asd:Value"/>
Legg & Prager Expires 11 October 2005 [Page 132]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
<content name="valueSet" type="asd:ValueSet"/>
<content name="object" type="asd:Object"/>
<content name="objectSet" type="asd:ObjectSet"/>
</choice>
</type>
</namedType>
<namedType name="ObjectSet">
<type>
<choice>
<attribute name="objectSet" identifier="objectSetRef"
type="asn1:QName"/>
<element name="objectSet" type="asd:ElementFormObjectSet"/>
</choice>
</type>
</namedType>
<namedType name="ElementFormObjectSet">
<type>
<sequence>
<content name="definition">
<type>
<choice>
<content name="reference" type="asd:Reference"/>
<content name="objectSetSpec" type="asd:ObjectSetSpec"/>
<element name="fromObjects"
type="asd:InformationFromObjects"/>
</choice>
</type>
</content>
</sequence>
</type>
</namedType>
<namedType name="ObjectSetSpec">
<type>
<sequence>
<optional>
<content name="root" type="asd:ElementSetSpec"/>
</optional>
<optional>
<element name="extension">
<type>
<sequence>
<content name="additions" type="asd: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"/>
</sequenceOf>
</type>
</namedType>
<namedType name="EncodingControlSection">
<type>
<choice>
<element name="encodingControl-GSER"
type="gser:GSER-EncodingInstructionAssignmentList"/>
<element name="encodingControl-XER"
type="xer:XER-EncodingInstructionAssignmentList"/>
</choice>
</type>
</namedType>
<element name="schema" type="asd:ModuleDefinition"/>
<attribute name="meta" type="asn1:BOOLEAN"/>
</asn1:schema>
Appendix C. An XML Schema for ASN.1 Schema
To be supplied.
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, a
Legg & Prager Expires 11 October 2005 [Page 134]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
work in progress, to be published.
[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, April
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 Representation for GSER Encoding
Instructions", draft-legg-xed-asd-gserei-xx.txt, a work in
progress, to be published.
[XEREIT] Legg, S., "ASN.1 Schema Representation for XER Encoding
Instructions", draft-legg-xed-asd-xerei-xx.txt, a work in
progress, April 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] 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.
Legg & Prager Expires 11 October 2005 [Page 135]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
[XMLNS] 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", W3C
Recommendation, http://www.w3.org/TR/2001/REC-xml-
infoset-20011024, October 2001.
Informative References
[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.com
Dr. Daniel Prager
EMail: dan@layabout.net
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
Legg & Prager Expires 11 October 2005 [Page 136]
INTERNET-DRAFT ASN.1 Schema April 11, 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.
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 & Prager Expires 11 October 2005 [Page 137]
INTERNET-DRAFT ASN.1 Schema April 11, 2005
A <definition> element has been added to the translation of
ObjectDefn to avoid the potential for ambiguity between an ObjectDefn
and an ObjectFromObject.
The assumedName attribute on the <element> child of a <sequenceOf> or
<setOf> element has been replaced by a pair of attributes - name and
identifier. The identifier attribute 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 name attribute, i.e.
because there is no identifier, or the identifier is modified by a
NAME encoding instruction.
The ASN.1 for ASN.1 Schema, and the ASN.1 Schema for ASN.1 Schema,
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 has been included.
The ASN.1 for ASN.1 Schema has been changed to use RXER encoding
instructions instead of XER encoding instructions.
The ASN.1 for ASN.1 Schema, and the ASN.1 Schema for ASN.1 Schema,
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 has been renamed to "identifier" (a
noun).
The OBJECT IDENTIFIER for the ASN1-Schema module has been replaced.
The translation of AtNotation has been changed from the value of a
component attribute of a <restrictBy> element to simple content of
the <restrictBy> element.
A solution for translating recursive parameterized definitions has
been added.
Legg & Prager Expires 11 October 2005 [Page 138]
| PAFTECH AB 2003-2026 | 2026-04-24 05:48:06 |