RFC4911 日本語訳

4911 Encoding Instructions for the Robust XML Encoding Rules (RXER).S. Legg. July 2007. (Format: TXT=178977 bytes) (Status: EXPERIMENTAL)
プログラムでの自動翻訳です。
RFC一覧
英語原文

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

Leggがコメントのために要求するワーキンググループS.をネットワークでつないでください: 4911年のeB2Bcomカテゴリ: 実験的な2007年7月

                     Encoding Instructions for the
                    Robust XML Encoding Rules (RXER)

強健なXML符号化規則のための指示をコード化します。(RXER)

Status of This Memo

このメモの状態

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

このメモはインターネットコミュニティのためにExperimentalプロトコルを定義します。 それはどんな種類のインターネット標準も指定しません。 議論と改善提案は要求されています。 このメモの分配は無制限です。

Copyright Notice

版権情報

   Copyright (C) The IETF Trust (2007).

IETFが信じる著作権(C)(2007)。

Abstract

要約

   This document defines encoding instructions that may be used in an
   Abstract Syntax Notation One (ASN.1) specification to alter how ASN.1
   values are encoded by the Robust XML Encoding Rules (RXER) and
   Canonical Robust XML Encoding Rules (CRXER), for example, to encode a
   component of an ASN.1 value as an Extensible Markup Language (XML)
   attribute rather than as a child element.  Some of these encoding
   instructions also affect how an ASN.1 specification is translated
   into an Abstract Syntax Notation X (ASN.X) specification.  Encoding
   instructions that allow an ASN.1 specification to reference
   definitions in other XML schema languages are also defined.

このドキュメントは、ASN.1値がRobust XML Encoding Rules(RXER)によってどうコード化されるかを変更する抽象的なSyntax Notation Oneで中古(ASN.1)の仕様とCanonical Robust XML Encoding Rulesが(CRXER)であったなら例えば子供要素としてというよりむしろ拡張マークアップ言語(XML)属性としてASN.1価値のコンポーネントをコード化するためにそうするかもしれないコード化指示を定義します。 また、指示をコード化するこれらの或るものはASN.1仕様がどう抽象的なSyntax Notation X(ASN.X)仕様に翻訳されるかに影響します。 他のXMLとの参照定義にASN.1仕様を許容する指示をコード化して、また、スキーマ言語は定義されます。

Legg                          Experimental                      [Page 1]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[1ページ]RFC4911

Table of Contents

目次

   1. Introduction ....................................................3
   2. Conventions .....................................................3
   3. Definitions .....................................................4
   4. Notation for RXER Encoding Instructions .........................4
   5. Component Encoding Instructions .................................6
   6. Reference Encoding Instructions .................................8
   7. Expanded Names of Components ...................................10
   8. The ATTRIBUTE Encoding Instruction .............................11
   9. The ATTRIBUTE-REF Encoding Instruction .........................12
   10. The COMPONENT-REF Encoding Instruction ........................13
   11. The ELEMENT-REF Encoding Instruction ..........................16
   12. The LIST Encoding Instruction .................................17
   13. The NAME Encoding Instruction .................................19
   14. The REF-AS-ELEMENT Encoding Instruction .......................19
   15. The REF-AS-TYPE Encoding Instruction ..........................20
   16. The SCHEMA-IDENTITY Encoding Instruction ......................22
   17. The SIMPLE-CONTENT Encoding Instruction .......................22
   18. The TARGET-NAMESPACE Encoding Instruction .....................23
   19. The TYPE-AS-VERSION Encoding Instruction ......................24
   20. The TYPE-REF Encoding Instruction .............................25
   21. The UNION Encoding Instruction ................................26
   22. The VALUES Encoding Instruction ...............................27
   23. Insertion Encoding Instructions ...............................29
   24. The VERSION-INDICATOR Encoding Instruction ....................32
   25. The GROUP Encoding Instruction ................................34
      25.1. Unambiguous Encodings ....................................36
           25.1.1. Grammar Construction ..............................37
           25.1.2. Unique Component Attribution ......................47
           25.1.3. Deterministic Grammars ............................52
           25.1.4. Attributes in Unknown Extensions ..................54
   26. Security Considerations .......................................56
   27. References ....................................................56
      27.1. Normative References .....................................56
      27.2. Informative References ...................................57
   Appendix A. GROUP Encoding Instruction Examples ...................58
   Appendix B. Insertion Encoding Instruction Examples ...............74
   Appendix C. Extension and Versioning Examples .....................87

1. 序論…3 2. コンベンション…3 3. 定義…4 4. 指示をコード化するRXERのための記法…4 5. 指示をコード化するコンポーネント…6 6. 指示をコード化する参照…8 7. コンポーネントの名前を広げます…10 8. 指示をコード化する属性…11 9. 指示をコード化する属性審判…12 10. 指示をコード化するコンポーネント審判…13 11. 指示をコード化する要素審判…16 12. 指示をコード化するリスト…17 13. 指示をコード化する名前…19 14. 要素としての指示をコード化する審判…19 15. タイプとしての指示をコード化する審判…20 16. 指示をコード化する図式アイデンティティ…22 17. 指示をコード化する簡単な内容…22 18. 指示をコード化する目標名前空間…23 19. バージョンとしての指示をコード化するタイプ…24 20. 指示をコード化するタイプ審判…25 21. 指示をコード化する組合…26 22. 指示をコード化する値…27 23. 指示をコード化する挿入…29 24. 指示をコード化するバージョンインディケータ…32 25. 指示をコード化するグループ…34 25.1. 明白なEncodings…36 25.1.1. 文法工事…37 25.1.2. ユニークなコンポーネント属性…47 25.1.3. 決定論的な文法…52 25.1.4. 未知の拡大における属性…54 26. セキュリティ問題…56 27. 参照…56 27.1. 標準の参照…56 27.2. 有益な参照…指示の例をコード化して、57付録A.は分類されます…58 指示の例をコード化する付録B.挿入…74 付録C.拡大とVersioningの例…87

Legg                          Experimental                      [Page 2]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[2ページ]RFC4911

1.  Introduction

1. 序論

   This document defines encoding instructions [X.680-1] that may be
   used in an Abstract Syntax Notation One (ASN.1) [X.680] specification
   to alter how ASN.1 values are encoded by the Robust XML Encoding
   Rules (RXER) [RXER] and Canonical Robust XML Encoding Rules (CRXER)
   [RXER], for example, to encode a component of an ASN.1 value as an
   Extensible Markup Language (XML) [XML10] attribute rather than as a
   child element.  Some of these encoding instructions also affect how
   an ASN.1 specification is translated into an Abstract Syntax Notation
   X (ASN.X) specification [ASN.X].

このドキュメントは、例えば、ASN.1値が子供要素としてというよりむしろ拡張マークアップ言語(XML)[XML10]属性としてASN.1価値のコンポーネントをコード化するためにRobust XML Encoding Rules(RXER)[RXER]とCanonical Robust XML Encoding Rules(CRXER)[RXER]によってどうコード化されるかを変更するのに抽象的なSyntax Notation One(ASN.1)[X.680]仕様で使用されるかもしれない指示[X.680-1]をコード化しながら、定義します。 また、指示をコード化するこれらの或るものはASN.1仕様がどう抽象的なSyntax Notation X(ASN.X)仕様[ASN.X]に翻訳されるかに影響します。

   This document also defines encoding instructions that allow an ASN.1
   specification to incorporate the definitions of types, elements, and
   attributes in specifications written in other XML schema languages.
   References to XML Schema [XSD1] types, elements, and attributes,
   RELAX NG [RNG] named patterns and elements, and XML document type
   definition (DTD) [XML10] element types are supported.

また、このドキュメントは他のXMLスキーマ言語で書かれた仕様に基づきASN.1仕様がタイプの定義を取り入れることができる指示をコード化する、要素、および属性を定義します。 XML Schema[XSD1]タイプ、要素、および属性についての言及、パターンと要素というRELAX NG[RNG]、およびXMLドキュメント型定義(DTD)[XML10]要素型はサポートされます。

   In most cases, the effect of an encoding instruction is only briefly
   mentioned in this document.  The precise effects of these encoding
   instructions are described fully in the specifications for RXER
   [RXER] and ASN.X [ASN.X], at the points where they apply.

多くの場合、コード化指示の効果は簡潔に本書では言及されるだけです。 これらが指示をコード化するという正確な効果はRXER[RXER]とASN.X[ASN.X]のための仕様で完全に説明されます、それらが適用するポイントで。

2.  Conventions

2. コンベンション

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

キーワード“MUST"、「必須NOT」が「必要です」、“SHALL"、「」、“SHOULD"、「」、このドキュメントの「推薦され」て「5月」はBCP14RFC2119[BCP14]で説明されるように解釈されることになっているべきであるものとします。 「任意である」というキーワードはASN.1意味と共に排他的に使用されます。

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

このドキュメント中では、ASN.1がタイプすることを意味するために「タイプ」を取るものとします、そして、ASNの.1の抽象的な価値を意味するために「値」を取るものとします、別の方法で資格がない場合。

   A reference to an ASN.1 production [X.680] (e.g., Type, NamedType) is
   a reference to text in an ASN.1 specification corresponding to that
   production.  Throughout this document, "component" is synonymous with
   NamedType.

ASN.1生産[X.680](例えば、Type、NamedType)の参照はその生産に対応するASN.1仕様によるテキストの参照です。 このドキュメント中では、「コンポーネント」はNamedTypeと同義です。

   This document uses the namespace prefix "xsi:" to stand for the
   namespace name [XMLNS10] "http://www.w3.org/2001/XMLSchema-instance".

名前空間が前に置くこのドキュメント用途は「以下をxsiします」。 名前空間を表すには、[XMLNS10]を" http://www.w3.org/2001/XMLSchema-instance "と命名してください。

   Example ASN.1 definitions in this document are assumed to be defined
   in an ASN.1 module with a TagDefault of "AUTOMATIC TAGS" and an
   EncodingReferenceDefault [X.680-1] of "RXER INSTRUCTIONS".

「自動タグ」のTagDefaultと「RXER指示」のEncodingReferenceDefault[X.680-1]と共にASN.1モジュールで例のASN.1定義が定義されると本書では思われます。

Legg                          Experimental                      [Page 3]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[3ページ]RFC4911

3.  Definitions

3. 定義

   The following definition of base type is used in specifying a number
   of encoding instructions.

ベースタイプの以下の定義は多くのコード化指示を指定する際に使用されます。

   Definition (base type): If a type, T, is a constrained type, then the
   base type of T is the base type of the type that is constrained; else
   if T is a prefixed type, then the base type of T is the base type of
   the type that is prefixed; else if T is a type notation that
   references or denotes another type (i.e., DefinedType,
   ObjectClassFieldType, SelectionType, TypeFromObject, or
   ValueSetFromObjects), then the base type of T is the base type of the
   type that is referenced or denoted; otherwise, the base type of T is
   T itself.

定義(ベースタイプ): タイプ(T)が制約つきタイプであるなら、Tのベースタイプは制約つきであるタイプのベースタイプです。 ほかに、Tが前に置かれたタイプであるなら、Tのベースタイプは前に置かれているタイプのベースタイプです。 ほかに、Tが別のタイプ(すなわち、DefinedType、ObjectClassFieldType、SelectionType、TypeFromObject、またはValueSetFromObjects)を参照をつけるか、または指示するタイプ記法であるなら、Tのベースタイプは参照をつけられるか、または指示されるタイプのベースタイプです。 さもなければ、TのベースタイプはT自体です。

      Aside: A tagged type is a special case of a prefixed type.

傍らに: タグ付けをされたタイプは前に置かれたタイプの特別なケースです。

4.  Notation for RXER Encoding Instructions

4. 指示をコード化するRXERのための記法

   The grammar of ASN.1 permits the application of encoding instructions
   [X.680-1], through type prefixes and encoding control sections, that
   modify how abstract values are encoded by nominated encoding rules.

ASN.1の文法は抽象的な値が指名符号化規則でどうコード化されるかを変更するタイプ接頭語と制御セクションをコード化するのによる指示[X.680-1]をコード化するアプリケーションを可能にします。

   The generic notation for type prefixes and encoding control sections
   is defined by the ASN.1 basic notation [X.680] [X.680-1], and
   includes an encoding reference to identify the specific encoding
   rules that are affected by the encoding instruction.

タイプ接頭語と制御セクションをコード化するためのジェネリック記法は、ASN.1の基本的な記法[X.680][X.680-1]で定義されて、コード化指示で影響を受ける特定の符号化規則を特定するためにコード化指示するものを含んでいます。

   The encoding reference that identifies the Robust XML Encoding rules
   is literally RXER.  An RXER encoding instruction applies equally to
   both RXER and CRXER encodings.

Robust XML Encoding規則を特定するコード化参照は文字通りRXERです。 指示をコード化するRXERは等しくRXERとCRXER encodingsの両方に適用します。

   The specific notation for an encoding instruction for a specific set
   of encoding rules is left to the specification of those encoding
   rules.  Consequently, this companion document to the RXER
   specification [RXER] defines the notation for RXER encoding
   instructions.  Specifically, it elaborates the EncodingInstruction
   and EncodingInstructionAssignmentList placeholder productions of the
   ASN.1 basic notation.

特定の符号化規則のためのコード化指示のための特定の記法はそれらの符号化規則の仕様に残されます。 その結果、RXER仕様[RXER]へのこの仲間ドキュメントは指示をコード化するRXERのために記法を定義します。 明確に、それはASN.1の基本的な記法のEncodingInstructionとEncodingInstructionAssignmentListプレースホルダ創作について詳しく説明します。

   In the context of the RXER encoding reference, the
   EncodingInstruction production is defined as follows, using the
   conventions of the ASN.1 basic notation:

参照をコード化するRXERの文脈では、EncodingInstruction生産は以下の通り定義されます、ASNの.1の基本的な記法のコンベンションを使用して:

Legg                          Experimental                      [Page 4]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[4ページ]RFC4911

      EncodingInstruction ::=
          AttributeInstruction |
          AttributeRefInstruction |
          ComponentRefInstruction |
          ElementRefInstruction |
          GroupInstruction |
          InsertionsInstruction |
          ListInstruction |
          NameInstruction |
          RefAsElementInstruction |
          RefAsTypeInstruction |
          SimpleContentInstruction |
          TypeAsVersionInstruction |
          TypeRefInstruction |
          UnionInstruction |
          ValuesInstruction |
          VersionIndicatorInstruction

EncodingInstruction:、:= AttributeInstruction| AttributeRefInstruction| ComponentRefInstruction| ElementRefInstruction| GroupInstruction| InsertionsInstruction| ListInstruction| NameInstruction| RefAsElementInstruction| RefAsTypeInstruction| SimpleContentInstruction| TypeAsVersionInstruction| TypeRefInstruction| UnionInstruction| ValuesInstruction| VersionIndicatorInstruction

   In the context of the RXER encoding reference, the
   EncodingInstructionAssignmentList production (which only appears in
   an encoding control section) is defined as follows:

参照をコード化するRXERの文脈では、EncodingInstructionAssignmentList生産(コード化制御セクションに現れるだけである)は以下の通り定義されます:

      EncodingInstructionAssignmentList ::=
          SchemaIdentityInstruction ?
          TargetNamespaceInstruction ?
          TopLevelComponents ?

EncodingInstructionAssignmentList:、:= SchemaIdentityInstruction? TargetNamespaceInstruction? TopLevelComponents?

      TopLevelComponents ::= TopLevelComponent TopLevelComponents ?

TopLevelComponents:、:= TopLevelComponent TopLevelComponents?

      TopLevelComponent ::= "COMPONENT" NamedType

TopLevelComponent:、:= 「コンポーネント」NamedType

   Definition (top-level NamedType): A NamedType is a top-level
   NamedType (equivalently, a top-level component) if and only if it is
   the NamedType in a TopLevelComponent.  A NamedType nested within the
   Type of the NamedType of a TopLevelComponent is not itself a
   top-level NamedType.

定義(トップレベルNamedType): NamedTypeがトップレベルNamedType(同等に、aはコンポーネントを先端で平らにする)である、それである場合にだけ、TopLevelComponentのNamedTypeはそうです。 TopLevelComponentのNamedTypeのTypeの中で入れ子にされたNamedTypeはそれ自体でトップレベルNamedTypeではありません。

      Aside: Specification writers should note that non-trivial types
      defined within a top-level NamedType will not be visible to ASN.1
      tools that do not understand RXER.

傍らに: 仕様作家は、トップレベルNamedTypeの中で定義された重要なタイプがRXERを理解していないASN.1ツールに目に見えるようにならないことに注意するべきです。

   Although a top-level NamedType only appears in an RXER encoding
   control section, the default encoding reference for the module
   [X.680-1] still applies when parsing a top-level NamedType.

トップレベルNamedTypeは制御セクションをコード化するRXERに現れるだけですが、トップレベルNamedTypeを分析するとき、モジュール[X.680-1]の参照をコード化するデフォルトはまだ適用されています。

   Each top-level NamedType within a module SHALL have a distinct
   identifier.

モジュールの中のそれぞれのトップレベルNamedType SHALLには、異なった識別子があります。

Legg                          Experimental                      [Page 5]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[5ページ]RFC4911

   The NamedType production is defined by the ASN.1 basic notation.  The
   other productions are described in subsequent sections and make use
   of the following productions:

NamedType生産はASN.1の基本的な記法で定義されます。 他の創作は、その後のセクションで説明されて、以下の創作を利用します:

      NCNameValue ::= Value

NCNameValue:、:= 値

      AnyURIValue ::= Value

AnyURIValue:、:= 値

      QNameValue ::= Value

QNameValue:、:= 値

      NameValue ::= Value

NameValue:、:= 値

   The Value production is defined by the ASN.1 basic notation.

Value生産はASN.1の基本的な記法で定義されます。

   The governing type for the Value in an NCNameValue is the NCName type
   from the AdditionalBasicDefinitions module [RXER].

NCNameValueのValueのための支配的なタイプはAdditionalBasicDefinitionsモジュール[RXER]からのNCNameタイプです。

   The governing type for the Value in an AnyURIValue is the AnyURI type
   from the AdditionalBasicDefinitions module.

AnyURIValueのValueのための支配的なタイプはAdditionalBasicDefinitionsモジュールからのAnyURIタイプです。

   The governing type for the Value in a QNameValue is the QName type
   from the AdditionalBasicDefinitions module.

QNameValueのValueのための支配的なタイプはAdditionalBasicDefinitionsモジュールからのQNameタイプです。

   The governing type for the Value in a NameValue is the Name type from
   the AdditionalBasicDefinitions module.

NameValueのValueのための支配的なタイプはAdditionalBasicDefinitionsモジュールからのNameタイプです。

   The Value in an NCNameValue, AnyURIValue, QNameValue, or NameValue
   SHALL NOT be a DummyReference [X.683] and SHALL NOT textually contain
   a nested DummyReference.

Value、NCNameValue、AnyURIValue、QNameValue、またはNameValue SHALLでは、DummyReference[X.683]とSHALL NOTが原文でなかったなら、入れ子にされたDummyReferenceを含んでください。

      Aside: Thus, encoding instructions are not permitted to be
      parameterized in any way.  This restriction will become important
      if a future specification for ASN.X explicitly represents
      parameterized definitions and parameterized references instead of
      expanding out parameterized references as in the current
      specification.  A parameterized definition could not be directly
      translated into ASN.X if it contained encoding instructions that
      were not fully specified.

傍らに: したがって、コード化指示によって何らかの方法でparameterizedされることは許可されていません。 ASN.Xのための将来の仕様が明らかにparameterized定義を表して、外に広がることの代わりにparameterized参照が現在の仕様のように参照をparameterizedしたなら、この制限は重要になるでしょう。 完全に指定されたというわけではないコード化指示を含んでいるなら、直接parameterized定義をASN.Xに翻訳できないでしょうに。

5.  Component Encoding Instructions

5. 指示をコード化するコンポーネント

   Certain of the RXER encoding instructions are categorized as
   component encoding instructions.  The component encoding instructions
   are the ATTRIBUTE, ATTRIBUTE-REF, COMPONENT-REF, GROUP, ELEMENT-REF,
   NAME, REF-AS-ELEMENT, SIMPLE-CONTENT, TYPE-AS-VERSION, and
   VERSION-INDICATOR encoding instructions (whose notations are
   described respectively by AttributeInstruction,
   AttributeRefInstruction, ComponentRefInstruction, GroupInstruction,

あるRXERコード化では、指示は指示をコード化するコンポーネントとして分類されます。 コンポーネントコード化指示がATTRIBUTEと、ATTRIBUTE-REFと、COMPONENT-REFと、GROUPと、ELEMENT-REFと、NAMEと、REF-AS-ELEMENTと、SIMPLE-CONTENTと、TYPE-AS-バージョンと、指示をコード化するバージョン-INDICATORである、(記法がAttributeInstruction、AttributeRefInstruction、ComponentRefInstruction、GroupInstructionによってそれぞれ説明される

Legg                          Experimental                      [Page 6]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[6ページ]RFC4911

   ElementRefInstruction, NameInstruction, RefAsElementInstruction,
   SimpleContentInstruction, TypeAsVersionInstruction, and
   VersionIndicatorInstruction).

ElementRefInstruction、NameInstruction、RefAsElementInstruction、SimpleContentInstruction、TypeAsVersionInstruction、およびVersionIndicatorInstruction)

   The Type in the EncodingPrefixedType for a component encoding
   instruction SHALL be either:

指示SHALLをコード化するコンポーネントのためのEncodingPrefixedTypeのTypeは以下の通りです。

   (1) the Type in a NamedType, or

または(1) NamedTypeのタイプ。

   (2) the Type in an EncodingPrefixedType in a PrefixedType in a
       BuiltinType in a Type that is one of (1) to (4), or

または(2) 1歳である(4)への(1)のTypeのBuiltinTypeのPrefixedTypeのEncodingPrefixedTypeのType。

   (3) the Type in an TaggedType in a PrefixedType in a BuiltinType in a
       Type that is one of (1) to (4), or

または(3) 1歳である(4)への(1)のTypeのBuiltinTypeのPrefixedTypeのTaggedTypeのType。

   (4) the Type in a ConstrainedType (excluding a TypeWithConstraint) in
       a Type that is one of (1) to (4).

(4) 1歳である(4)への(1)のTypeのConstrainedType(TypeWithConstraintを除いた)のType。

      Aside: The effect of this condition is to force the component
      encoding instructions to be textually within the NamedType to
      which they apply.  Only case (2) can be true on the first
      iteration as the Type belongs to an EncodingPrefixedType; however,
      any of (1) to (4) can be true on subsequent iterations.

傍らに: この状態の効果は指示をコード化するコンポーネントがそれらが適用するNamedTypeの中で原文であることを強制することです。 TypeがEncodingPrefixedTypeに属すとき、ケース(2)だけが最初の繰り返しのときに本当である場合があります。 その後の繰り返しのときに(4) 缶への(1)でしかしながら、いくらか、本当であってください。

   Case (4) is not permitted when the encoding instruction is the
   ATTRIBUTE-REF, COMPONENT-REF, ELEMENT-REF, or REF-AS-ELEMENT encoding
   instruction.

コード化指示が指示をコード化するATTRIBUTE-REF、COMPONENT-REF、ELEMENT-REF、またはREF-AS-ELEMENTであるときに、ケース(4)は受入れられません。

   The NamedType in case (1) is said to be "subject to" the component
   encoding instruction.

場合(1)におけるNamedTypeは指示をコード化するコンポーネント「を条件として」、あると言われています。

   A top-level NamedType SHALL NOT be subject to an ATTRIBUTE-REF,
   COMPONENT-REF, GROUP, ELEMENT-REF, REF-AS-ELEMENT, or SIMPLE-CONTENT
   encoding instruction.

AはNamedType SHALL NOTを先端で平らにします。指示をコード化するATTRIBUTE-REF、COMPONENT-REF、GROUP、ELEMENT-REF、REF-AS-ELEMENT、またはSIMPLE-CONTENTを条件として、いてください。

      Aside: This condition does not preclude these encoding
      instructions being used on a nested NamedType.

傍らに: この状態は、指示をコード化しながら、入れ子にされたNamedTypeで使用されることでこれらを排除しません。

   A NamedType SHALL NOT be subject to two or more component encoding
   instructions of the same kind, e.g., a NamedType is not permitted to
   be subject to two NAME encoding instructions.

NamedType SHALL、同じ種類(例えば、NamedTypeが指示をコード化する2NAMEを受けることがあることは許可されていないa)の指示をコード化する2以上コンポーネントを受けることがありません。

   The ATTRIBUTE, ATTRIBUTE-REF, COMPONENT-REF, GROUP, ELEMENT-REF,
   REF-AS-ELEMENT, SIMPLE-CONTENT, and TYPE-AS-VERSION encoding
   instructions are mutually exclusive.  The NAME, ATTRIBUTE-REF,
   COMPONENT-REF, ELEMENT-REF, and REF-AS-ELEMENT encoding instructions
   are mutually exclusive.  A NamedType SHALL NOT be subject to two or
   more encoding instructions that are mutually exclusive.

ATTRIBUTE、ATTRIBUTE-REF、COMPONENT-REF、GROUP、ELEMENT-REF、REF-AS-ELEMENT、SIMPLE-CONTENT、および指示をコード化するTYPE-AS-バージョンは互いに排他的です。 指示をコード化するNAME、ATTRIBUTE-REF、COMPONENT-REF、ELEMENT-REF、およびREF-AS-ELEMENTは互いに排他的です。 2を受けることがあるか互いに排他的な指示をさらにコード化していないNamedType SHALL。

Legg                          Experimental                      [Page 7]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[7ページ]RFC4911

   A SelectionType [X.680] SHALL NOT be used to select the Type from a
   NamedType that is subject to an ATTRIBUTE-REF, COMPONENT-REF,
   ELEMENT-REF or REF-AS-ELEMENT encoding instruction.  The other
   component encoding instructions are not inherited by the type denoted
   by a SelectionType.

SelectionType[X.680]SHALL NOT、使用されて、指示をコード化するATTRIBUTE-REF、COMPONENT-REF、ELEMENT-REFまたは受けることがあるNamedTypeからREF-AS-ELEMENTまでTypeを選択してください。 他のコンポーネントコード化指示はSelectionTypeによって指示されたタイプによって引き継がれません。

   Definition (attribute component):  An attribute component is a
   NamedType that is subject to an ATTRIBUTE or ATTRIBUTE-REF encoding
   instruction, or subject to a COMPONENT-REF encoding instruction that
   references a top-level NamedType that is subject to an ATTRIBUTE
   encoding instruction.

定義(属性コンポーネント): 属性コンポーネントは指示をコード化するATTRIBUTEかATTRIBUTE-REFを受けることがあるNamedTypeであるかCOMPONENT-REFコード化指示を条件としたその参照が指示をコード化するATTRIBUTEを受けることがあるトップレベルNamedTypeです。

   Definition (element component):  An element component is a NamedType
   that is not subject to an ATTRIBUTE, ATTRIBUTE-REF, GROUP, or
   SIMPLE-CONTENT encoding instruction, and not subject to a
   COMPONENT-REF encoding instruction that references a top-level
   NamedType that is subject to an ATTRIBUTE encoding instruction.

定義(要素成分): 要素成分は、指示をコード化するATTRIBUTEを受けることがないNamedType、ATTRIBUTE-REF、GROUP、またはSIMPLE-CONTENTであり、COMPONENT-REFコード化指示を条件としたどんなその参照も指示をコード化するATTRIBUTEを受けることがあるトップレベルNamedTypeではありません。

      Aside: A NamedType subject to a GROUP or SIMPLE-CONTENT encoding
      instruction is neither an attribute component nor an element
      component.

傍らに: 指示をコード化するGROUPかSIMPLE-CONTENTを条件としたNamedTypeは属性コンポーネントでなくてまた要素成分ではありません。

6.  Reference Encoding Instructions

6. 指示をコード化する参照

   Certain of the RXER encoding instructions are categorized as
   reference encoding instructions.  The reference encoding instructions
   are the ATTRIBUTE-REF, COMPONENT-REF, ELEMENT-REF, REF-AS-ELEMENT,
   REF-AS-TYPE, and TYPE-REF encoding instructions (whose notations are
   described respectively by AttributeRefInstruction,
   ComponentRefInstruction, ElementRefInstruction,
   RefAsElementInstruction, RefAsTypeInstruction, and
   TypeRefInstruction).  These encoding instructions (except
   COMPONENT-REF) allow an ASN.1 specification to incorporate the
   definitions of types, elements, and attributes in specifications
   written in other XML schema languages, through implied constraints on
   the markup that may appear in values of the Markup ASN.1 type from
   the AdditionalBasicDefinitions module [RXER] (for ELEMENT-REF,
   REF-AS-ELEMENT, REF-AS-TYPE, and TYPE-REF) or the UTF8String type
   (for ATTRIBUTE-REF).  References to XML Schema [XSD1] types,
   elements, and attributes, RELAX NG [RNG] named patterns and elements,
   and XML document type definition (DTD) [XML10] element types are
   supported.  References to ASN.1 types and top-level components are
   also permitted.  The COMPONENT-REF encoding instruction provides a
   more direct method of referencing a top-level component.

あるRXERコード化では、指示は指示をコード化する参照として分類されます。 参照コード化指示は、指示(記法はAttributeRefInstruction、ComponentRefInstruction、ElementRefInstruction、RefAsElementInstruction、RefAsTypeInstruction、およびTypeRefInstructionによってそれぞれ説明される)をコード化するATTRIBUTE-REFと、COMPONENT-REFと、ELEMENT-REFと、REF-AS-ELEMENTと、REF-AS-TYPEと、TYPE-REFです。 指示(COMPONENT-REFを除いた)をコード化するこれらで、ASN.1仕様は他のXMLスキーマ言語で書かれた仕様にタイプ、要素、および属性の定義を取り入れることができます、AdditionalBasicDefinitionsモジュール[RXER](ELEMENT-REF、REF-AS-ELEMENT、REF-AS-TYPE、およびTYPE-REFのための)かUTF8Stringタイプ(ATTRIBUTE-REFのための)からMarkup ASN.1タイプの値に現れるかもしれないマークアップにおける暗示している規制で。 XML Schema[XSD1]タイプ、要素、および属性についての言及、パターンと要素というRELAX NG[RNG]、およびXMLドキュメント型定義(DTD)[XML10]要素型はサポートされます。 また、ASN.1タイプとトップレベルコンポーネントの参照は受入れられます。 指示をコード化するCOMPONENT-REFはトップレベルコンポーネントに参照をつけるより多くのダイレクトメソッドをaに提供します。

   The Type in the EncodingPrefixedType for an ELEMENT-REF,
   REF-AS-ELEMENT, REF-AS-TYPE, or TYPE-REF encoding instruction SHALL
   be either:

指示SHALLをコード化するELEMENT-REF、REF-AS-ELEMENT、REF-AS-TYPE、またはTYPE-REFのためのEncodingPrefixedTypeのTypeは以下の通りです。

Legg                          Experimental                      [Page 8]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[8ページ]RFC4911

   (1) a ReferencedType that is a DefinedType that is a typereference
       (not a DummyReference) or ExternalTypeReference that references
       the Markup ASN.1 type from the AdditionalBasicDefinitions module
       [RXER], or

または(1) typereferenceであるDefinedType(DummyReferenceでない)かAdditionalBasicDefinitionsモジュールからMarkup ASN.1タイプに参照をつけるExternalTypeReference[RXER]であるReferencedType。

   (2) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (3), or

または(2) (3)へのTaggedTypeのTypeが1歳である(1)のTaggedTypeであるPrefixedTypeであるBuiltinType。

   (3) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (3) and the EncodingPrefix in the
       EncodingPrefixedType does not contain a reference encoding
       instruction.

(3) EncodingPrefixedTypeのEncodingPrefixedTypeのTypeが(3)への(1)とEncodingPrefixのひとりであるEncodingPrefixedTypeであるPrefixedTypeであるBuiltinTypeは指示をコード化する参照を含んでいません。

      Aside: Case (3) and similar cases for the ATTRIBUTE-REF and
      COMPONENT-REF encoding instructions have the effect of making the
      reference encoding instructions mutually exclusive as well as
      singly occurring.

傍らに: 指示をコード化するATTRIBUTE-REFとCOMPONENT-REFのためのケース(3)と類例には、互いに排他的で単独で起こるように指示をコード化する参照をするという効果があります。

   With respect to the REF-AS-TYPE and TYPE-REF encoding instructions,
   the DefinedType in case (1) is said to be "subject to" the encoding
   instruction.

指示をコード化するREF-AS-TYPEとTYPE-REFに関して、場合(1)におけるDefinedTypeはコード化指示「を条件として」、あると言われています。

   The restrictions on the Type in the EncodingPrefixedType for an
   ATTRIBUTE-REF encoding instruction are specified in Section 9.  The
   restrictions on the Type in the EncodingPrefixedType for a
   COMPONENT-REF encoding instruction are specified in Section 10.

指示をコード化するATTRIBUTE-REFのためのEncodingPrefixedTypeのTypeにおける制限はセクション9で指定されます。 指示をコード化するCOMPONENT-REFのためのEncodingPrefixedTypeのTypeにおける制限はセクション10で指定されます。

   The reference encoding instructions make use of a common production
   defined as follows:

参照コード化指示は以下の通り定義された一般的な生産を利用します:

      RefParameters ::= ContextParameter ?

RefParameters:、:= ContextParameter?

      ContextParameter ::= "CONTEXT" AnyURIValue

ContextParameter:、:= 「文脈」AnyURIValue

   A RefParameters instance provides extra information about a reference
   to a definition.  A ContextParameter is used when a reference is
   ambiguous, i.e., refers to definitions in more than one schema
   document or external DTD subset.  This situation would occur, for
   example, when importing types with the same name from independently
   developed XML Schemas defined without a target namespace [XSD1].
   When used in conjunction with a reference to an element type in an
   external DTD subset, the AnyURIValue in the ContextParameter is the
   system identifier (a Uniform Resource Identifier or URI [URI]) of the
   external DTD subset; otherwise, the AnyURIValue is a URI that
   indicates the intended schema document, either an XML Schema
   specification, a RELAX NG specification, or an ASN.1 or ASN.X
   specification.

RefParametersインスタンスは定義の参照に関するその他の情報を提供します。 すなわち、参照があいまいであるときに使用されるContextParameterは1つ以上の図式ドキュメントか外部のDTD部分集合との定義について言及します。 同じ名前で目標名前空間[XSD1]なしで定義された独自に開発されたXML Schemasからタイプをインポートするとき、例えば、この状況は起こるでしょう。 要素型についての言及に関連して外部のDTD部分集合に使用されると、ContextParameterのAnyURIValueは外部のDTD部分集合に関するシステム識別子(Uniform Resource IdentifierかURI[URI])です。 さもなければ、AnyURIValueは意図している図式ドキュメント、XML Schema仕様、RELAX NG仕様、ASN.1またはASN.X仕様を示すURIです。

Legg                          Experimental                      [Page 9]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[9ページ]RFC4911

7.  Expanded Names of Components

7. コンポーネントの拡張名前

   Each NamedType has an associated expanded name [XMLNS10], determined
   as follows:

各NamedTypeには、以下の通り決定する関連拡張名前[XMLNS10]があります:

   (1) if the NamedType is subject to a NAME encoding instruction, then
       the local name of the expanded name is the character string
       specified by the NCNameValue of the NAME encoding instruction,

(1) NamedTypeは指示をコード化するNAMEを受けることがあるなら、拡張名前の地方名が指示をコード化するNAMEのNCNameValueによって指定された文字列です。

   (2) else if the NamedType is subject to a COMPONENT-REF encoding
       instruction, then the expanded name is the same as the expanded
       name of the referenced top-level NamedType,

(2) NamedTypeは指示をコード化するCOMPONENT-REFを受けることがあるなら、ほかに、拡張名前が参照をつけられたトップレベルNamedTypeという拡張名前と同じです。

   (3) else if the NamedType is subject to an ATTRIBUTE-REF or
       ELEMENT-REF encoding instruction, then the namespace name of the
       expanded name is equal to the namespace-name component of the
       QNameValue of the encoding instruction, and the local name is
       equal to the local-name component of the QNameValue,

(3) NamedTypeは指示をコード化するATTRIBUTE-REFかELEMENT-REFを受けることがあるなら、ほかに、存在というコード化指示のQNameValueの名前空間名の部品、および地方名と等しい拡張名前の名前空間名はQNameValueの地方名の部品と等しいです。

   (4) else if the NamedType is subject to a REF-AS-ELEMENT encoding
       instruction, then the local name of the expanded name is the
       LocalPart [XMLNS10] of the qualified name specified by the
       NameValue of the encoding instruction,

(4) ほかに、NamedTypeは指示をコード化するREF-AS-ELEMENTを受けることがあるなら、拡張名前の地方名がコード化指示のNameValueによって指定された適切な名前のLocalPart[XMLNS10]です。

   (5) otherwise, the local name of the expanded name is the identifier
       of the NamedType.

(5) さもなければ、拡張名前の地方名はNamedTypeに関する識別子です。

   In cases (1) and (5), if the NamedType is a top-level NamedType and
   the module containing the NamedType has a TARGET-NAMESPACE encoding
   instruction, then the namespace name of the expanded name is the
   character string specified by the AnyURIValue of the TARGET-NAMESPACE
   encoding instruction; otherwise, the namespace name has no value.

場合(1)と(5)では、NamedTypeがトップレベルNamedTypeであり、TARGET-NAMESPACEがNamedTypeを含むモジュールで指示をコード化するなら、拡張名前の名前空間名は指示をコード化するTARGET-NAMESPACEのAnyURIValueによって指定された文字列です。 さもなければ、名前空間名には、値が全くありません。

      Aside: Thus, the TARGET-NAMESPACE encoding instruction applies to
      a top-level NamedType but not to any other NamedType.

傍らに: したがって、指示をコード化するTARGET-NAMESPACEはトップレベルNamedTypeに適用しますが、いかなる他のNamedTypeにも適用するというわけではありません。

   In case (4), if the encoding instruction contains a Namespace, then
   the namespace name of the expanded name is the character string
   specified by the AnyURIValue of the Namespace; otherwise, the
   namespace name has no value.

場合(4)では、コード化指示がNamespaceを含んでいるなら、拡張名前の名前空間名はNamespaceのAnyURIValueによって指定された文字列です。 さもなければ、名前空間名には、値が全くありません。

   The expanded names for the attribute components of a CHOICE,
   SEQUENCE, or SET type MUST be distinct.  The expanded names for the
   components of a CHOICE, SEQUENCE, or SET type that are not attribute
   components MUST be distinct.  These tests are applied after the
   COMPONENTS OF transformation specified in X.680, Clause 24.4 [X.680].

CHOICE、SEQUENCE、またはSETタイプの属性成分のための拡張名前は異なっているに違いありません。 属性コンポーネントでないCHOICE、SEQUENCE、またはSETタイプの成分のための拡張名前は異なっているに違いありません。 COMPONENTS OF変換がX.680、Clause24.4[X.680]で指定した後にこれらのテストは適用されています。

Legg                          Experimental                     [Page 10]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[10ページ]RFC4911

      Aside: Two components of the same CHOICE, SEQUENCE, or SET type
      may have the same expanded name if one of them is an attribute
      component and the other is not.  Note that the "not" case includes
      components that are subject to a GROUP or SIMPLE-CONTENT encoding
      instruction.

傍らに: それらの1つが属性コンポーネントであり、もう片方が持っていないなら、同じCHOICE、SEQUENCE、またはSETタイプの2つの成分には同じ拡張名前があるかもしれません。 “not"ケースが指示をコード化するGROUPかSIMPLE-CONTENTを受けることがあるコンポーネントを含んでいることに注意してください。

   The expanded name of a top-level NamedType subject to an ATTRIBUTE
   encoding instruction MUST be distinct from the expanded name of every
   other top-level NamedType subject to an ATTRIBUTE encoding
   instruction in the same module.

指示をコード化するATTRIBUTEを条件としたトップレベルNamedTypeという拡張名前は同じモジュールで指示をコード化するATTRIBUTEを条件とした他のあらゆるトップレベルNamedTypeという拡張名前と異なっているに違いありません。

   The expanded name of a top-level NamedType not subject to an
   ATTRIBUTE encoding instruction MUST be distinct from the expanded
   name of every other top-level NamedType not subject to an ATTRIBUTE
   encoding instruction in the same module.

指示をコード化するATTRIBUTEを条件としたトップレベルNamedTypeでないという拡張名前は同じモジュールで指示をコード化するATTRIBUTEを条件とした他のあらゆるトップレベルNamedTypeでないという拡張名前と異なっているに違いありません。

      Aside: Two top-level components may have the same expanded name if
      one of them is an attribute component and the other is not.

傍らに: それらの1つが属性コンポーネントであり、もう片方が持っていないなら、2つのトップレベルコンポーネントには同じ拡張名前があるかもしれません。

8.  The ATTRIBUTE Encoding Instruction

8. 指示をコード化する属性

   The ATTRIBUTE encoding instruction causes an RXER encoder to encode a
   value of the component to which it is applied as an XML attribute
   instead of as a child element.

指示をコード化するATTRIBUTEはRXERエンコーダにそれが子供要素の代わりにXML属性として適用されるコンポーネントの値をコード化させます。

   The notation for an ATTRIBUTE encoding instruction is defined as
   follows:

指示をコード化するATTRIBUTEのための記法は以下の通り定義されます:

      AttributeInstruction ::= "ATTRIBUTE"

AttributeInstruction:、:= 「属性」

   The base type of the type of a NamedType that is subject to an
   ATTRIBUTE encoding instruction SHALL NOT be:

ベースはNamedTypeのタイプにタイプされます、すなわち、指示SHALL NOTをコード化するATTRIBUTEを条件として、いてください、:

   (1) a CHOICE, SET, or SET OF type, or

または(1) CHOICE、SET、またはSET OFがタイプする。

   (2) a SEQUENCE type other than the one defining the QName type from
       the AdditionalBasicDefinitions module [RXER] (i.e., QName is
       allowed), or

または(2) QNameを定義するもの以外のSEQUENCEタイプがAdditionalBasicDefinitionsモジュール[RXER]からタイプする、(すなわち、QNameは許容されています)。

   (3) a SEQUENCE OF type where the SequenceOfType is not subject to a
       LIST encoding instruction, or

または(3) SequenceOfTypeは指示をコード化するLISTを受けることがないSEQUENCE OFタイプ。

   (4) an open type.

(4) 開放型。

Legg                          Experimental                     [Page 11]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[11ページ]RFC4911

   Example

      PersonalDetails ::= SEQUENCE {
          firstName   [ATTRIBUTE] UTF8String,
          middleName  [ATTRIBUTE] UTF8String,
          surname     [ATTRIBUTE] UTF8String
      }

PersonalDetails:、:= 系列firstName[ATTRIBUTE]UTF8String、middleName[ATTRIBUTE]UTF8String、姓[ATTRIBUTE]のUTF8String

9.  The ATTRIBUTE-REF Encoding Instruction

9. 指示をコード化する属性審判

   The ATTRIBUTE-REF encoding instruction causes an RXER encoder to
   encode a value of the component to which it is applied as an XML
   attribute instead of as a child element, where the attribute's name
   is a qualified name of the attribute declaration referenced by the
   encoding instruction.  In addition, the ATTRIBUTE-REF encoding
   instruction causes values of the UTF8String type to be restricted to
   conform to the type of the attribute declaration.

指示をコード化するATTRIBUTE-REFはRXERエンコーダにそれが属性の名前がコード化指示で参照をつけられる属性宣言の適切な名前である子供要素の代わりにXML属性として適用されるコンポーネントの値をコード化させます。 さらに、指示をコード化するATTRIBUTE-REFは、属性宣言のタイプに従うためにUTF8Stringタイプの値を制限させます。

   The notation for an ATTRIBUTE-REF encoding instruction is defined as
   follows:

指示をコード化するATTRIBUTE-REFのための記法は以下の通り定義されます:

      AttributeRefInstruction ::=
          "ATTRIBUTE-REF" QNameValue RefParameters

AttributeRefInstruction:、:= 「属性審判」QNameValue RefParameters

   Taken together, the QNameValue and the ContextParameter in the
   RefParameters (if present) MUST reference an XML Schema attribute
   declaration or a top-level NamedType that is subject to an ATTRIBUTE
   encoding instruction.

一緒に取って、RefParameters(存在しているなら)のQNameValueとContextParameterは指示をコード化するATTRIBUTEを受けることがあるXML Schema属性宣言かトップレベルNamedTypeに参照をつけなければなりません。

   The type of a referenced XML Schema attribute declaration SHALL NOT
   be, either directly or by derivation, the XML Schema type QName,
   NOTATION, ENTITY, ENTITIES, or anySimpleType.

参照をつけられたXML Schemaのタイプは直接か派生によるXML SchemaタイプがQName、NOTATION、ENTITY、ENTITIES、またはanySimpleTypeであったなら宣言SHALL NOTを結果と考えます。

      Aside: Values of these types require information from the context
      of the attribute for interpretation.  Because an ATTRIBUTE-REF
      encoding instruction is restricted to prefixing the ASN.1
      UTF8String type, there is no mechanism to capture such context.

傍らに: これらのタイプの値は解釈のために属性の文脈からの情報を必要とします。 指示をコード化するATTRIBUTE-REFがASN.1UTF8Stringタイプを前に置くのに制限されるので、そのような文脈を得るために、メカニズムは全くありません。

   The type of a referenced top-level NamedType SHALL NOT be, either
   directly or by subtyping, the QName type from the
   AdditionalBasicDefinitions module [RXER].

aのタイプはAdditionalBasicDefinitionsからの直接か副タイプするのによるQNameタイプがモジュール[RXER]であったならトップレベルNamedType SHALL NOTに参照をつけました。

   The Type in the EncodingPrefixedType for an ATTRIBUTE-REF encoding
   instruction SHALL be either:

指示SHALLをコード化するATTRIBUTE-REFのためのEncodingPrefixedTypeのTypeは以下の通りです。

   (1) the UTF8String type, or

または(1) UTF8Stringがタイプする。

Legg                          Experimental                     [Page 12]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[12ページ]RFC4911

   (2) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (3), or

または(2) (3)へのTaggedTypeのTypeが1歳である(1)のTaggedTypeであるPrefixedTypeであるBuiltinType。

   (3) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (3) and the EncodingPrefix in the
       EncodingPrefixedType does not contain a reference encoding
       instruction.

(3) EncodingPrefixedTypeのEncodingPrefixedTypeのTypeが(3)への(1)とEncodingPrefixのひとりであるEncodingPrefixedTypeであるPrefixedTypeであるBuiltinTypeは指示をコード化する参照を含んでいません。

   The identifier of a NamedType subject to an ATTRIBUTE-REF encoding
   instruction does not contribute to the name of attributes in an RXER
   encoding.  For the sake of consistency, the identifier SHOULD, where
   possible, be the same as the local name of the referenced attribute
   declaration.

指示をコード化するATTRIBUTE-REFを条件としたNamedTypeに関する識別子はRXERコード化における属性の名前に貢献しません。 一貫性、識別子SHOULDのために、可能であるところでは、参照をつけられた属性宣言の地方名と同じにしてください。

10.  The COMPONENT-REF Encoding Instruction

10. 指示をコード化するコンポーネント審判

   The ASN.1 basic notation does not have a concept of a top-level
   NamedType and therefore does not have a mechanism to reference a
   top-level NamedType.  The COMPONENT-REF encoding instruction provides
   a way to specify that a NamedType within a combining type definition
   is equivalent to a referenced top-level NamedType.

ASNの.1の基本的な記法は、トップレベルNamedTypeの概念を持っていなくて、またしたがって、メカニズム参照への最高レベルNamedTypeを持っていません。 指示をコード化するCOMPONENT-REFは結合型定義の中のNamedTypeが参照をつけられたトップレベルNamedTypeに同等であると指定する方法を提供します。

   The notation for a COMPONENT-REF encoding instruction is defined as
   follows:

指示をコード化するCOMPONENT-REFのための記法は以下の通り定義されます:

      ComponentRefInstruction ::= "COMPONENT-REF" ComponentReference

ComponentRefInstruction:、:= 「コンポーネント審判」ComponentReference

      ComponentReference ::=
          InternalComponentReference |
          ExternalComponentReference

ComponentReference:、:= InternalComponentReference| ExternalComponentReference

      InternalComponentReference ::= identifier FromModule ?

InternalComponentReference:、:= 識別子FromModule?

      FromModule ::= "FROM" GlobalModuleReference

FromModule:、:= "FROM" GlobalModuleReference

      ExternalComponentReference ::= modulereference "." identifier

ExternalComponentReference:、:= "modulereference" 」 識別子

   The GlobalModuleReference production is defined by the ASN.1 basic
   notation [X.680].  If the GlobalModuleReference is absent from an
   InternalComponentReference, then the identifier MUST be the
   identifier of a top-level NamedType in the same module.  If the
   GlobalModuleReference is present in an InternalComponentReference,
   then the identifier MUST be the identifier of a top-level NamedType
   in the referenced module.

ASN.1の基本的な記法[X.680]でGlobalModuleReference生産は定義されます。 GlobalModuleReferenceがInternalComponentReferenceから欠けるなら、識別子は同じモジュールによるトップレベルNamedTypeに関する識別子であるに違いありません。 GlobalModuleReferenceがInternalComponentReferenceに存在しているなら、識別子は参照をつけられたモジュールによるトップレベルNamedTypeに関する識別子であるに違いありません。

Legg                          Experimental                     [Page 13]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[13ページ]RFC4911

   The modulereference in an ExternalComponentReference is used in the
   same way as a modulereference in an ExternalTypeReference.  The
   identifier in an ExternalComponentReference MUST be the identifier of
   a top-level NamedType in the referenced module.

modulereferenceと同様に、ExternalComponentReferenceのmodulereferenceはExternalTypeReferenceで使用されます。 ExternalComponentReferenceの識別子は参照をつけられたモジュールによるトップレベルNamedTypeに関する識別子であるに違いありません。

   The Type in the EncodingPrefixedType for a COMPONENT-REF encoding
   instruction SHALL be either:

指示SHALLをコード化するCOMPONENT-REFのためのEncodingPrefixedTypeのTypeは以下の通りです。

   (1) a ReferencedType that is a DefinedType that is a typereference
       (not a DummyReference) or an ExternalTypeReference, or

(1) a ReferencedType that is a DefinedType that is a typereference (not a DummyReference) or an ExternalTypeReference, or

   (2) a BuiltinType or ReferencedType that is one of the productions in
       Table 1 in Section 5 of the specification for RXER [RXER], or

(2) a BuiltinType or ReferencedType that is one of the productions in Table 1 in Section 5 of the specification for RXER [RXER], or

   (3) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (4), or

(3) a BuiltinType that is a PrefixedType that is a TaggedType where the Type in the TaggedType is one of (1) to (4), or

   (4) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (4) and the EncodingPrefix in the
       EncodingPrefixedType does not contain a reference encoding
       instruction.

(4) a BuiltinType that is a PrefixedType that is an EncodingPrefixedType where the Type in the EncodingPrefixedType is one of (1) to (4) and the EncodingPrefix in the EncodingPrefixedType does not contain a reference encoding instruction.

   The restrictions on the use of RXER encoding instructions are such
   that no other RXER encoding instruction is permitted within a
   NamedType if the NamedType is subject to a COMPONENT-REF encoding
   instruction.

The restrictions on the use of RXER encoding instructions are such that no other RXER encoding instruction is permitted within a NamedType if the NamedType is subject to a COMPONENT-REF encoding instruction.

   The Type in the top-level NamedType referenced by the COMPONENT-REF
   encoding instruction MUST be either:

The Type in the top-level NamedType referenced by the COMPONENT-REF encoding instruction MUST be either:

   (a) if the preceding case (1) is used, a ReferencedType that is a
       DefinedType that is a typereference or ExternalTypeReference that
       references the same type as the DefinedType in case (1), or

(a) if the preceding case (1) is used, a ReferencedType that is a DefinedType that is a typereference or ExternalTypeReference that references the same type as the DefinedType in case (1), or

   (b) if the preceding case (2) is used, a BuiltinType or
       ReferencedType that is the same as the BuiltinType or
       ReferencedType in case (2), or

(b) if the preceding case (2) is used, a BuiltinType or ReferencedType that is the same as the BuiltinType or ReferencedType in case (2), or

   (c) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (a) to (c), and the EncodingPrefix in the
       EncodingPrefixedType contains an RXER encoding instruction.

(c) a BuiltinType that is a PrefixedType that is an EncodingPrefixedType where the Type in the EncodingPrefixedType is one of (a) to (c), and the EncodingPrefix in the EncodingPrefixedType contains an RXER encoding instruction.

   In principle, the COMPONENT-REF encoding instruction creates a
   notional NamedType where the expanded name is that of the referenced
   top-level NamedType and the Type in case (1) or (2) is substituted by
   the Type of the referenced top-level NamedType.

In principle, the COMPONENT-REF encoding instruction creates a notional NamedType where the expanded name is that of the referenced top-level NamedType and the Type in case (1) or (2) is substituted by the Type of the referenced top-level NamedType.

Legg                          Experimental                     [Page 14]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 14] RFC 4911 Encoding Instructions for RXER July 2007

   In practice, it is sufficient for non-RXER encoders and decoders to
   use the original NamedType rather than the notional NamedType because
   the Type in case (1) or (2) can only differ from the Type of the
   referenced top-level NamedType by having fewer RXER encoding
   instructions, and RXER encoding instructions are ignored by non-RXER
   encoders and decoders.

In practice, it is sufficient for non-RXER encoders and decoders to use the original NamedType rather than the notional NamedType because the Type in case (1) or (2) can only differ from the Type of the referenced top-level NamedType by having fewer RXER encoding instructions, and RXER encoding instructions are ignored by non-RXER encoders and decoders.

   Although any prefixes for the Type in case (1) or (2) would be
   bypassed, it is sufficient for RXER encoders and decoders to use the
   referenced top-level NamedType instead of the notional NamedType
   because these prefixes cannot be RXER encoding instructions (except,
   of course, for the COMPONENT-REF encoding instruction) and can have
   no effect on an RXER encoding.

Although any prefixes for the Type in case (1) or (2) would be bypassed, it is sufficient for RXER encoders and decoders to use the referenced top-level NamedType instead of the notional NamedType because these prefixes cannot be RXER encoding instructions (except, of course, for the COMPONENT-REF encoding instruction) and can have no effect on an RXER encoding.

   Example

Example

      Modules ::= SEQUENCE OF
          module [COMPONENT-REF module
                     FROM AbstractSyntaxNotation-X
                         { 1 3 6 1 4 1 21472 1 0 1 }]
                     ModuleDefinition

Modules ::= SEQUENCE OF module [COMPONENT-REF module FROM AbstractSyntaxNotation-X { 1 3 6 1 4 1 21472 1 0 1 }] ModuleDefinition

      Note that the "module" top-level NamedType in the
      AbstractSyntaxNotation-X module is defined like so:

Note that the "module" top-level NamedType in the AbstractSyntaxNotation-X module is defined like so:

         COMPONENT module ModuleDefinition

COMPONENT module ModuleDefinition

      The ASN.X translation of the SEQUENCE OF type definition provides
      a more natural representation:

The ASN.X translation of the SEQUENCE OF type definition provides a more natural representation:

         <namedType xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                    name="Modules">
          <sequenceOf>
           <element ref="asnx:module"/>
          </sequenceOf>
         </namedType>

<namedType xmlns:asnx="urn:ietf:params:xml:ns:asnx" name="Modules"> <sequenceOf> <element ref="asnx:module"/> </sequenceOf> </namedType>

         Aside: The <namedType> element in ASN.X corresponds to a
         TypeAssignment, not a NamedType.

Aside: The <namedType> element in ASN.X corresponds to a TypeAssignment, not a NamedType.

   The identifier of a NamedType subject to a COMPONENT-REF encoding
   instruction does not contribute to an RXER encoding.  For the sake of
   consistency with other encoding rules, the identifier SHOULD be the
   same as the identifier in the ComponentRefInstruction.

The identifier of a NamedType subject to a COMPONENT-REF encoding instruction does not contribute to an RXER encoding. For the sake of consistency with other encoding rules, the identifier SHOULD be the same as the identifier in the ComponentRefInstruction.

Legg                          Experimental                     [Page 15]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 15] RFC 4911 Encoding Instructions for RXER July 2007

11.  The ELEMENT-REF Encoding Instruction

11. The ELEMENT-REF Encoding Instruction

   The ELEMENT-REF encoding instruction causes an RXER encoder to encode
   a value of the component to which it is applied as an element where
   the element's name is a qualified name of the element declaration
   referenced by the encoding instruction.  In addition, the ELEMENT-REF
   encoding instruction causes values of the Markup ASN.1 type to be
   restricted to conform to the type of the element declaration.

The ELEMENT-REF encoding instruction causes an RXER encoder to encode a value of the component to which it is applied as an element where the element's name is a qualified name of the element declaration referenced by the encoding instruction. In addition, the ELEMENT-REF encoding instruction causes values of the Markup ASN.1 type to be restricted to conform to the type of the element declaration.

   The notation for an ELEMENT-REF encoding instruction is defined as
   follows:

The notation for an ELEMENT-REF encoding instruction is defined as follows:

      ElementRefInstruction ::= "ELEMENT-REF" QNameValue RefParameters

ElementRefInstruction ::= "ELEMENT-REF" QNameValue RefParameters

   Taken together, the QNameValue and the ContextParameter in the
   RefParameters (if present) MUST reference an XML Schema element
   declaration, a RELAX NG element definition, or a top-level NamedType
   that is not subject to an ATTRIBUTE encoding instruction.

Taken together, the QNameValue and the ContextParameter in the RefParameters (if present) MUST reference an XML Schema element declaration, a RELAX NG element definition, or a top-level NamedType that is not subject to an ATTRIBUTE encoding instruction.

   A referenced XML Schema element declaration MUST NOT have a type that
   requires the presence of values for the XML Schema ENTITY or ENTITIES
   types.

A referenced XML Schema element declaration MUST NOT have a type that requires the presence of values for the XML Schema ENTITY or ENTITIES types.

      Aside: Entity declarations are not supported by CRXER.

Aside: Entity declarations are not supported by CRXER.

   Example

Example

      AnySchema ::= CHOICE {
          module   [ELEMENT-REF {
                       namespace-name
                           "urn:ietf:params:xml:ns:asnx",
                       local-name "module" }]
                   Markup,
          schema   [ELEMENT-REF {
                       namespace-name
                           "http://www.w3.org/2001/XMLSchema",
                       local-name "schema" }]
                   Markup,
          grammar  [ELEMENT-REF {
                       namespace-name
                           "http://relaxng.org/ns/structure/1.0",
                       local-name "grammar" }]
                   Markup
      }

AnySchema ::= CHOICE { module [ELEMENT-REF { namespace-name "urn:ietf:params:xml:ns:asnx", local-name "module" }] Markup, schema [ELEMENT-REF { namespace-name "http://www.w3.org/2001/XMLSchema", local-name "schema" }] Markup, grammar [ELEMENT-REF { namespace-name "http://relaxng.org/ns/structure/1.0", local-name "grammar" }] Markup }

      The ASN.X translation of the choice type definition provides a
      more natural representation:

The ASN.X translation of the choice type definition provides a more natural representation:

Legg                          Experimental                     [Page 16]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 16] RFC 4911 Encoding Instructions for RXER July 2007

         <namedType xmlns:asnx="urn:ietf:params:xml:ns:asnx"
                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    xmlns:rng="http://relaxng.org/ns/structure/1.0"
                    name="AnySchema">
          <choice>
           <element ref="asnx:module" embedded="true"/>
           <element ref="xs:schema" embedded="true"/>
           <element ref="rng:grammar" embedded="true"/>
          </choice>
         </namedType>

<namedType xmlns:asnx="urn:ietf:params:xml:ns:asnx" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rng="http://relaxng.org/ns/structure/1.0" name="AnySchema"> <choice> <element ref="asnx:module" embedded="true"/> <element ref="xs:schema" embedded="true"/> <element ref="rng:grammar" embedded="true"/> </choice> </namedType>

   The identifier of a NamedType subject to an ELEMENT-REF encoding
   instruction does not contribute to the name of an element in an RXER
   encoding.  For the sake of consistency, the identifier SHOULD, where
   possible, be the same as the local name of the referenced element
   declaration.

The identifier of a NamedType subject to an ELEMENT-REF encoding instruction does not contribute to the name of an element in an RXER encoding. For the sake of consistency, the identifier SHOULD, where possible, be the same as the local name of the referenced element declaration.

12.  The LIST Encoding Instruction

12. The LIST Encoding Instruction

   The LIST encoding instruction causes an RXER encoder to encode a
   value of a SEQUENCE OF type as a white-space-separated list of the
   component values.

The LIST encoding instruction causes an RXER encoder to encode a value of a SEQUENCE OF type as a white-space-separated list of the component values.

   The notation for a LIST encoding instruction is defined as follows:

The notation for a LIST encoding instruction is defined as follows:

      ListInstruction ::= "LIST"

ListInstruction ::= "LIST"

   The Type in an EncodingPrefixedType for a LIST encoding instruction
   SHALL be either:

The Type in an EncodingPrefixedType for a LIST encoding instruction SHALL be either:

   (1) a BuiltinType that is a SequenceOfType of the
       "SEQUENCE OF NamedType" form, or

(1) a BuiltinType that is a SequenceOfType of the "SEQUENCE OF NamedType" form, or

   (2) a ConstrainedType that is a TypeWithConstraint of the
       "SEQUENCE Constraint OF NamedType" form or
       "SEQUENCE SizeConstraint OF NamedType" form, or

(2) a ConstrainedType that is a TypeWithConstraint of the "SEQUENCE Constraint OF NamedType" form or "SEQUENCE SizeConstraint OF NamedType" form, or

   (3) a ConstrainedType that is not a TypeWithConstraint where the Type
       in the ConstrainedType is one of (1) to (5), or

(3) a ConstrainedType that is not a TypeWithConstraint where the Type in the ConstrainedType is one of (1) to (5), or

   (4) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (5), or

(4) a BuiltinType that is a PrefixedType that is a TaggedType where the Type in the TaggedType is one of (1) to (5), or

   (5) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (5).

(5) a BuiltinType that is a PrefixedType that is an EncodingPrefixedType where the Type in the EncodingPrefixedType is one of (1) to (5).

Legg                          Experimental                     [Page 17]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 17] RFC 4911 Encoding Instructions for RXER July 2007

   The effect of this condition is to force the LIST encoding
   instruction to be textually co-located with the SequenceOfType or
   TypeWithConstraint to which it applies.

The effect of this condition is to force the LIST encoding instruction to be textually co-located with the SequenceOfType or TypeWithConstraint to which it applies.

      Aside: This makes it clear to a reader that the encoding
      instruction applies to every use of the type no matter how it
      might be referenced.

Aside: This makes it clear to a reader that the encoding instruction applies to every use of the type no matter how it might be referenced.

   The SequenceOfType in case (1) and the TypeWithConstraint in case (2)
   are said to be "subject to" the LIST encoding instruction.

The SequenceOfType in case (1) and the TypeWithConstraint in case (2) are said to be "subject to" the LIST encoding instruction.

   A SequenceOfType or TypeWithConstraint SHALL NOT be subject to more
   than one LIST encoding instruction.

A SequenceOfType or TypeWithConstraint SHALL NOT be subject to more than one LIST encoding instruction.

   The base type of the component type of a SequenceOfType or
   TypeWithConstraint that is subject to a LIST encoding instruction
   MUST be one of the following:

The base type of the component type of a SequenceOfType or TypeWithConstraint that is subject to a LIST encoding instruction MUST be one of the following:

   (1) the BOOLEAN, INTEGER, ENUMERATED, REAL, OBJECT IDENTIFIER,
       RELATIVE-OID, GeneralizedTime, or UTCTime type, or

(1) the BOOLEAN, INTEGER, ENUMERATED, REAL, OBJECT IDENTIFIER, RELATIVE-OID, GeneralizedTime, or UTCTime type, or

   (2) the NCName, AnyURI, Name, or QName type from the
       AdditionalBasicDefinitions module [RXER].

(2) the NCName, AnyURI, Name, or QName type from the AdditionalBasicDefinitions module [RXER].

      Aside: While it would be feasible to allow the component type to
      also be any character string type that is constrained such that
      all its abstract values have a length greater than zero and none
      of its abstract values contain any white space characters, testing
      whether this condition is satisfied can be quite involved.  For
      the sake of simplicity, only certain immediately useful
      constrained UTF8String types, which are known to be suitable, are
      permitted (i.e., NCName, AnyURI, and Name).

Aside: While it would be feasible to allow the component type to also be any character string type that is constrained such that all its abstract values have a length greater than zero and none of its abstract values contain any white space characters, testing whether this condition is satisfied can be quite involved. For the sake of simplicity, only certain immediately useful constrained UTF8String types, which are known to be suitable, are permitted (i.e., NCName, AnyURI, and Name).

   The NamedType in a SequenceOfType or TypeWithConstraint that is
   subject to a LIST encoding instruction MUST NOT be subject to an
   ATTRIBUTE, ATTRIBUTE-REF, COMPONENT-REF, GROUP, ELEMENT-REF,
   REF-AS-ELEMENT, SIMPLE-CONTENT, or TYPE-AS-VERSION encoding
   instruction.

The NamedType in a SequenceOfType or TypeWithConstraint that is subject to a LIST encoding instruction MUST NOT be subject to an ATTRIBUTE, ATTRIBUTE-REF, COMPONENT-REF, GROUP, ELEMENT-REF, REF-AS-ELEMENT, SIMPLE-CONTENT, or TYPE-AS-VERSION encoding instruction.

   Example

Example

      UpdateTimes ::= [LIST] SEQUENCE OF updateTime GeneralizedTime

UpdateTimes ::= [LIST] SEQUENCE OF updateTime GeneralizedTime

Legg                          Experimental                     [Page 18]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 18] RFC 4911 Encoding Instructions for RXER July 2007

13.  The NAME Encoding Instruction

13. The NAME Encoding Instruction

   The NAME encoding instruction causes an RXER encoder to use a
   nominated character string instead of a component's identifier
   wherever that identifier would otherwise appear in the encoding
   (e.g., as an element or attribute name).

The NAME encoding instruction causes an RXER encoder to use a nominated character string instead of a component's identifier wherever that identifier would otherwise appear in the encoding (e.g., as an element or attribute name).

   The notation for a NAME encoding instruction is defined as follows:

The notation for a NAME encoding instruction is defined as follows:

      NameInstruction ::= "NAME" "AS"? NCNameValue

NameInstruction ::= "NAME" "AS"? NCNameValue

   Example

Example

      CHOICE {
          foo-att   [ATTRIBUTE] [NAME AS "Foo"] INTEGER,
          foo-elem  [NAME "Foo"] INTEGER
      }

CHOICE { foo-att [ATTRIBUTE] [NAME AS "Foo"] INTEGER, foo-elem [NAME "Foo"] INTEGER }

14.  The REF-AS-ELEMENT Encoding Instruction

14. The REF-AS-ELEMENT Encoding Instruction

   The REF-AS-ELEMENT encoding instruction causes an RXER encoder to
   encode a value of the component to which it is applied as an element
   where the element's name is the name of the external DTD subset
   element type declaration referenced by the encoding instruction.  In
   addition, the REF-AS-ELEMENT encoding instruction causes values of
   the Markup ASN.1 type to be restricted to conform to the content and
   attributes permitted by that element type declaration and its
   associated attribute-list declarations.

The REF-AS-ELEMENT encoding instruction causes an RXER encoder to encode a value of the component to which it is applied as an element where the element's name is the name of the external DTD subset element type declaration referenced by the encoding instruction. In addition, the REF-AS-ELEMENT encoding instruction causes values of the Markup ASN.1 type to be restricted to conform to the content and attributes permitted by that element type declaration and its associated attribute-list declarations.

   The notation for a REF-AS-ELEMENT encoding instruction is defined as
   follows:

The notation for a REF-AS-ELEMENT encoding instruction is defined as follows:

      RefAsElementInstruction ::=
          "REF-AS-ELEMENT" NameValue Namespace ? RefParameters

RefAsElementInstruction ::= "REF-AS-ELEMENT" NameValue Namespace ? RefParameters

      Namespace ::= "NAMESPACE" AnyURIValue

Namespace ::= "NAMESPACE" AnyURIValue

   Taken together, the NameValue and the ContextParameter in the
   RefParameters (if present) MUST reference an element type declaration
   in an external DTD subset that is conformant with Namespaces in XML
   1.0 [XMLNS10].

Taken together, the NameValue and the ContextParameter in the RefParameters (if present) MUST reference an element type declaration in an external DTD subset that is conformant with Namespaces in XML 1.0 [XMLNS10].

   The Namespace is present if and only if the Name of the referenced
   element type declaration conforms to a PrefixedName (a QName)
   [XMLNS10], in which case the Namespace specifies the namespace name
   to be associated with the Prefix of the PrefixedName.

The Namespace is present if and only if the Name of the referenced element type declaration conforms to a PrefixedName (a QName) [XMLNS10], in which case the Namespace specifies the namespace name to be associated with the Prefix of the PrefixedName.

Legg                          Experimental                     [Page 19]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 19] RFC 4911 Encoding Instructions for RXER July 2007

   The referenced element type declaration MUST NOT require the presence
   of attributes of type ENTITY or ENTITIES.

The referenced element type declaration MUST NOT require the presence of attributes of type ENTITY or ENTITIES.

      Aside: Entity declarations are not supported by CRXER.

Aside: Entity declarations are not supported by CRXER.

   Example

Example

      Suppose that the following external DTD subset has been defined
      with a system identifier of "http://www.example.com/inventory":

Suppose that the following external DTD subset has been defined with a system identifier of "http://www.example.com/inventory":

         <?xml version='1.0'?>
         <!ELEMENT product EMPTY>
         <!ATTLIST product
             name       CDATA #IMPLIED
             partNumber CDATA #REQUIRED
             quantity   CDATA #REQUIRED >

<?xml version='1.0'?> <!ELEMENT product EMPTY> <!ATTLIST product name CDATA #IMPLIED partNumber CDATA #REQUIRED quantity CDATA #REQUIRED >

      The product element type declaration can be referenced as an
      element in an ASN.1 type definition:

The product element type declaration can be referenced as an element in an ASN.1 type definition:

         CHOICE {
             product  [REF-AS-ELEMENT "product"
                          CONTEXT "http://www.example.com/inventory"]
                      Markup
         }

CHOICE { product [REF-AS-ELEMENT "product" CONTEXT "http://www.example.com/inventory"] Markup }

      Here is the ASN.X translation of this ASN.1 type definition:

Here is the ASN.X translation of this ASN.1 type definition:

         <type>
          <choice>
           <element elementType="product"
                    context="http://www.example.com/inventory"/>
          </choice>
         </type>

<type> <choice> <element elementType="product" context="http://www.example.com/inventory"/> </choice> </type>

   The identifier of a NamedType subject to a REF-AS-ELEMENT encoding
   instruction does not contribute to the name of an element in an RXER
   encoding.  For the sake of consistency, the identifier SHOULD, where
   possible, be the same as the Name of the referenced element type
   declaration (or the LocalPart if the Name conforms to a
   PrefixedName).

The identifier of a NamedType subject to a REF-AS-ELEMENT encoding instruction does not contribute to the name of an element in an RXER encoding. For the sake of consistency, the identifier SHOULD, where possible, be the same as the Name of the referenced element type declaration (or the LocalPart if the Name conforms to a PrefixedName).

15.  The REF-AS-TYPE Encoding Instruction

15. The REF-AS-TYPE Encoding Instruction

   The REF-AS-TYPE encoding instruction causes values of the Markup
   ASN.1 type to be restricted to conform to the content and attributes
   permitted by a nominated element type declaration and its associated
   attribute-list declarations in an external DTD subset.

The REF-AS-TYPE encoding instruction causes values of the Markup ASN.1 type to be restricted to conform to the content and attributes permitted by a nominated element type declaration and its associated attribute-list declarations in an external DTD subset.

Legg                          Experimental                     [Page 20]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 20] RFC 4911 Encoding Instructions for RXER July 2007

   The notation for a REF-AS-TYPE encoding instruction is defined as
   follows:

The notation for a REF-AS-TYPE encoding instruction is defined as follows:

      RefAsTypeInstruction ::= "REF-AS-TYPE" NameValue RefParameters

RefAsTypeInstruction ::= "REF-AS-TYPE" NameValue RefParameters

   Taken together, the NameValue and the ContextParameter of the
   RefParameters (if present) MUST reference an element type declaration
   in an external DTD subset that is conformant with Namespaces in XML
   1.0 [XMLNS10].

Taken together, the NameValue and the ContextParameter of the RefParameters (if present) MUST reference an element type declaration in an external DTD subset that is conformant with Namespaces in XML 1.0 [XMLNS10].

   The referenced element type declaration MUST NOT require the presence
   of attributes of type ENTITY or ENTITIES.

The referenced element type declaration MUST NOT require the presence of attributes of type ENTITY or ENTITIES.

      Aside: Entity declarations are not supported by CRXER.

傍らに: 実体宣言はCRXERによってサポートされません。

   Example

      The product element type declaration can be referenced as a type
      in an ASN.1 definition:

タイプとしてASN.1定義で製品要素型の宣言に参照をつけることができます:

         SEQUENCE OF
             inventoryItem
                 [REF-AS-TYPE "product"
                     CONTEXT "http://www.example.com/inventory"]
                 Markup

inventoryItem[タイプとしての審判「製品」文脈" http://www.example.com/inventory "]マーク付けの系列

      Here is the ASN.X translation of this definition:

ここに、この定義に関するASN.X翻訳があります:

         <sequenceOf>
          <element name="inventoryItem">
           <type elementType="product"
                 context="http://www.example.com/inventory"/>
          </element>
         </sequenceOf>

<sequenceOf><要素名前=「inventoryItem「><タイプelementType=」製品」文脈=" http://www.example.com/inventory "/></要素></sequenceOf>。

      Note that when an element type declaration is referenced as a
      type, the Name of the element type declaration does not contribute
      to RXER encodings.  For example, child elements in the RXER
      encoding of values of the above SEQUENCE OF type would resemble
      the following:

要素型の宣言がタイプとして参照をつけられるとき、要素型の宣言のNameがRXER encodingsに貢献しないことに注意してください。 例えば、上のSEQUENCE OFタイプの値のRXERコード化における子供要素は以下に類似しているでしょう:

         <inventoryItem name="hammer" partNumber="1543" quantity="29"/>

「1543」<inventoryItem名前=「ハンマー」partNumber=量=の「29インチ/>」

Legg                          Experimental                     [Page 21]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[21ページ]RFC4911

16.  The SCHEMA-IDENTITY Encoding Instruction

16. 指示をコード化する図式アイデンティティ

   The SCHEMA-IDENTITY encoding instruction associates a unique
   identifier, a URI [URI], with the ASN.1 module containing the
   encoding instruction.  This encoding instruction has no effect on an
   RXER encoder but does have an effect on the translation of an ASN.1
   specification into an ASN.X representation.

指示をコード化するSCHEMA-IDENTITYはユニークな識別子、URI[URI]をコード化指示を含んでいるASN.1モジュールに関連づけます。 このコード化指示は、RXERエンコーダの上に効き目がありませんが、ASN.1仕様に関する翻訳にASN.X表現に影響を与えます。

   The notation for a SCHEMA-IDENTITY encoding instruction is defined as
   follows:

指示をコード化するSCHEMA-IDENTITYのための記法は以下の通り定義されます:

      SchemaIdentityInstruction ::= "SCHEMA-IDENTITY" AnyURIValue

SchemaIdentityInstruction:、:= 「図式アイデンティティ」AnyURIValue

   The character string specified by the AnyURIValue of each
   SCHEMA-IDENTITY encoding instruction MUST be distinct.  In
   particular, successive versions of an ASN.1 module must each have a
   different schema identity URI value.

指示をコード化するそれぞれのSCHEMA-IDENTITYのAnyURIValueによって指定された文字列は異なっているに違いありません。 ASN.1モジュールの連続したバージョンには、それぞれ特に、異なった図式アイデンティティURI価値がなければなりません。

17.  The SIMPLE-CONTENT Encoding Instruction

17. 指示をコード化する簡単な内容

   The SIMPLE-CONTENT encoding instruction causes an RXER encoder to
   encode a value of a component of a SEQUENCE or SET type without
   encapsulation in a child element.

指示をコード化するSIMPLE-CONTENTがRXERエンコーダにSEQUENCEの部品の値をコード化させるか、またはSETは子供要素でカプセル化なしでタイプします。

   The notation for a SIMPLE-CONTENT encoding instruction is defined as
   follows:

指示をコード化するSIMPLE-CONTENTのための記法は以下の通り定義されます:

      SimpleContentInstruction ::= "SIMPLE-CONTENT"

SimpleContentInstruction:、:= 「簡単な内容」

   A NamedType subject to a SIMPLE-CONTENT encoding instruction SHALL be
   in a ComponentType in a ComponentTypeList in a RootComponentTypeList.
   At most one such NamedType of a SEQUENCE or SET type is permitted to
   be subject to a SIMPLE-CONTENT encoding instruction.  If any
   component is subject to a SIMPLE-CONTENT encoding instruction, then
   all other components in the same SEQUENCE or SET type definition MUST
   be attribute components.  These tests are applied after the
   COMPONENTS OF transformation specified in X.680, Clause 24.4 [X.680].

A NamedTypeはコネがRootComponentTypeListのComponentTypeListのComponentTypeであったならSIMPLE-CONTENTコード化指示にSHALLをかけます。 高々、そのようなNamedTypeのSEQUENCEかSETタイプのひとりは指示をコード化するSIMPLE-CONTENTを受けることがあることが許可されています。 何かコンポーネントが指示をコード化するSIMPLE-CONTENTを受けることがあるなら、同じSEQUENCEかSET型定義における他のすべてのコンポーネントが属性コンポーネントであるに違いありません。 COMPONENTS OF変換がX.680、Clause24.4[X.680]で指定した後にこれらのテストは適用されています。

      Aside: Child elements and simple content are mutually exclusive.
      Specification writers should note that use of the SIMPLE-CONTENT
      encoding instruction on a component of an extensible SEQUENCE or
      SET type means that all future extensions to the SEQUENCE or SET
      type are restricted to being attribute components with the limited
      set of types that are permitted for attribute components.  Using
      an ATTRIBUTE encoding instruction instead of a SIMPLE-CONTENT
      encoding instruction avoids this limitation.

傍らに: 子供要素と簡単な内容は互いに唯一です。 仕様作家は、広げることができるSEQUENCEかSETタイプの成分の指示をコード化するSIMPLE-CONTENTの使用が、SEQUENCEかSETタイプへのすべての今後の拡大が属性コンポーネントのために受入れられる限られたセットのタイプがある属性コンポーネントに制限されることを意味することに注意するべきです。 指示をコード化するSIMPLE-CONTENTの代わりに指示をコード化するATTRIBUTEを使用すると、この制限は避けられます。

Legg                          Experimental                     [Page 22]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[22ページ]RFC4911

   The base type of the type of a NamedType that is subject to a
   SIMPLE-CONTENT encoding instruction SHALL NOT be:

ベースはNamedTypeのタイプにタイプされます、すなわち、指示SHALL NOTをコード化するSIMPLE-CONTENTを条件として、いてください、:

   (1) a SET or SET OF type, or

または(1) SETかSET OFタイプ。

   (2) a CHOICE type where the ChoiceType is not subject to a UNION
       encoding instruction, or

または(2) ChoiceTypeは指示をコード化するUNIONを受けることがないCHOICEタイプ。

   (3) a SEQUENCE type other than the one defining the QName type from
       the AdditionalBasicDefinitions module [RXER] (i.e., QName is
       allowed), or

または(3) QNameを定義するもの以外のSEQUENCEタイプがAdditionalBasicDefinitionsモジュール[RXER]からタイプする、(すなわち、QNameは許容されています)。

   (4) a SEQUENCE OF type where the SequenceOfType is not subject to a
       LIST encoding instruction, or

または(4) SequenceOfTypeは指示をコード化するLISTを受けることがないSEQUENCE OFタイプ。

   (5) an open type.

(5) 開放型。

   If the type of a NamedType subject to a SIMPLE-CONTENT encoding
   instruction has abstract values with an empty character data
   translation [RXER] (i.e., an empty encoding), then the NamedType
   SHALL NOT be marked OPTIONAL or DEFAULT.

指示をコード化するSIMPLE-CONTENTを条件としたNamedTypeのタイプであるなら、空のキャラクタデータ変換[RXER](すなわち、空のコード化)がある抽象的な値、次にNamedType SHALLはOPTIONALかDEFAULTであるとマークされていませんか?

   Example

      SEQUENCE {
          units   [ATTRIBUTE] UTF8String,
          amount  [SIMPLE-CONTENT] INTEGER
      }

系列ユニット[ATTRIBUTE]UTF8String、量[SIMPLE-CONTENT]のINTEGER

18.  The TARGET-NAMESPACE Encoding Instruction

18. 指示をコード化する目標名前空間

   The TARGET-NAMESPACE encoding instruction associates an XML namespace
   name [XMLNS10], a URI [URI], with the type, object class, value,
   object, and object set references defined in the ASN.1 module
   containing the encoding instruction.  In addition, it associates the
   namespace name with each top-level NamedType in the RXER encoding
   control section.

指示をコード化するTARGET-NAMESPACEはXML名前空間名[XMLNS10]、オブジェクトのクラス(値)がタイプで反対させるURI[URI]、およびコード化指示を含むASN.1モジュールで定義されたオブジェクトセット参照を関連づけます。 さらに、それはRXERの制御セクションをコード化するそれぞれのトップレベルNamedTypeの名前空間名を関連づけます。

   The notation for a TARGET-NAMESPACE encoding instruction is defined
   as follows:

指示をコード化するTARGET-NAMESPACEのための記法は以下の通り定義されます:

      TargetNamespaceInstruction ::=
          "TARGET-NAMESPACE" AnyURIValue Prefix ?

TargetNamespaceInstruction:、:= 「目標名前空間」AnyURIValue接頭語?

      Prefix ::= "PREFIX" NCNameValue

以下を前に置いてください:= 「接頭語」NCNameValue

   The AnyURIValue SHALL NOT specify an empty string.

AnyURIValue SHALLは空のストリングを指定しません。

Legg                          Experimental                     [Page 23]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[23ページ]RFC4911

   Definition (target namespace):  If an ASN.1 module contains a
   TARGET-NAMESPACE encoding instruction, then the target namespace of
   the module is the character string specified by the AnyURIValue of
   the TARGET-NAMESPACE encoding instruction; otherwise, the target
   namespace of the module is said to be absent.

定義(目標名前空間): ASN.1モジュールが指示をコード化するTARGET-NAMESPACEを含んでいるなら、モジュールの目標名前空間は指示をコード化するTARGET-NAMESPACEのAnyURIValueによって指定された文字列です。 そうでなく、モジュールの目標名前空間は休むと言われています。

   Two or more ASN.1 modules MAY have the same non-absent target
   namespace if and only if the expanded names of the top-level
   attribute components are distinct across all those modules, the
   expanded names of the top-level element components are distinct
   across all those modules, and the defined type, object class, value,
   object, and object set references are distinct in their category
   across all those modules.

そして、2以上ASN.1モジュールには同じ非欠けている目標名前空間があるかもしれない、トップレベル属性コンポーネントの拡張名前がそれらのすべてのモジュールの向こう側に異なる場合にだけ、トップレベル要素成分の拡張名前はそれらのすべてのモジュールの向こう側に異なっていて、定義されたタイプ、オブジェクトのクラス、値、オブジェクト、およびオブジェクトセット参照はそれらのすべてのモジュールの向こう側にそれらのカテゴリにおいて異なっています。

   The Prefix, if present, suggests an NCName to use as the namespace
   prefix in namespace declarations involving the target namespace.  An
   RXER encoder is not obligated to use the nominated namespace prefix.

存在しているなら、Prefixは目標名前空間にかかわる名前空間宣言における名前空間接頭語として使用にNCNameを勧めます。 RXERエンコーダが指名名前空間接頭語を使用するのが義務付けられません。

   If there are no top-level components, then the RXER encodings
   produced using a module with a TARGET-NAMESPACE encoding instruction
   are backward compatible with the RXER encodings produced by the same
   module without the TARGET-NAMESPACE encoding instruction.

トップレベルコンポーネントが全くなければ、TARGET-NAMESPACEが指示をコード化しているモジュールを使用することで生産されたRXER encodingsはTARGET-NAMESPACEが指示をコード化しないで同じモジュールで生産されるRXER encodingsと互換性があった状態で後方です。

19.  The TYPE-AS-VERSION Encoding Instruction

19. バージョンとしての指示をコード化するタイプ

   The TYPE-AS-VERSION encoding instruction causes an RXER encoder to
   include an xsi:type attribute in the encoding of a value of the
   component to which the encoding instruction is applied.  This
   attribute allows an XML Schema [XSD1] validator to select, if
   available, the appropriate XML Schema translation for the version of
   the ASN.1 specification used to create the encoding.

指示をコード化するTYPE-AS-バージョンで、RXERエンコーダはxsiを含んでいます: コード化指示が適用されているコンポーネントの価値のコード化で属性をタイプしてください。 この属性で、XML Schema[XSD1]validatorは、ASN.1仕様のバージョンのための翻訳が使用した適切なXML Schemaが利用可能であるならコード化を作成するのを選択できます。

      Aside: Translations of an ASN.1 specification into a compatible
      XML Schema are expected to be slightly different across versions
      because of progressive extensions to the ASN.1 specification.  Any
      incompatibilities between these translations can be accommodated
      if each version uses a different target namespace.  The target
      namespace will be evident in the value of the xsi:type attribute
      and will cause an XML Schema validator to use the appropriate
      version.  This mechanism also accommodates an ASN.1 type that is
      renamed in a later version of the ASN.1 specification.

傍らに: コンパチブルXML SchemaへのASN.1仕様に関する翻訳が進歩的な拡大でバージョンの向こう側にASN.1仕様にわずかに異ならせると予想されます。 各バージョンが異なった目標名前空間を使用するなら、これらの翻訳の間のどんな非互換性も設備することができます。 目標名前空間で、xsi: タイプ属性の値で明白であり、XML Schema validatorは適切なバージョンを使用するでしょう。 また、このメカニズムはASN.1仕様の後のバージョンで改名されるASN.1タイプに対応します。

   The notation for a TYPE-AS-VERSION encoding instruction is defined as
   follows:

指示をコード化するTYPE-AS-バージョンのための記法は以下の通り定義されます:

      TypeAsVersionInstruction ::= "TYPE-AS-VERSION"

TypeAsVersionInstruction:、:= 「バージョンとして、タイプしてください」

Legg                          Experimental                     [Page 24]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[24ページ]RFC4911

   The Type in a NamedType that is subject to a TYPE-AS-VERSION encoding
   instruction MUST be a namespace-qualified reference [RXER].

指示をコード化しながらTYPE-AS-バージョンを受けることがあるNamedTypeのTypeは名前空間で適切な参照であるに違いありません[RXER]。

   The addition of a TYPE-AS-VERSION encoding instruction does not
   affect the backward compatibility of RXER encodings.

指示をコード化するTYPE-AS-バージョンの追加はRXER encodingsの後方の互換性に影響しません。

      Aside: In a translation of an ASN.1 specification into XML Schema,
      any Type in a NamedType that is subject to a TYPE-AS-VERSION
      encoding instruction is expected to be translated into the
      XML Schema anyType so that the xsi:type attribute acts as a switch
      to select the appropriate version.

傍らに: XML SchemaへのASN.1仕様に関する翻訳では、指示をコード化しながらTYPE-AS-バージョンを受けることがあるNamedTypeのどんなTypeによってもXML Schema anyTypeに翻訳されると予想されて、xsi: タイプは、適切なバージョンを選択するために行為をスイッチとみなします。

20.  The TYPE-REF Encoding Instruction

20. 指示をコード化するタイプ審判

   The TYPE-REF encoding instruction causes values of the Markup ASN.1
   type to be restricted to conform to a specific XML Schema named type,
   RELAX NG named pattern or an ASN.1 defined type.

指示をコード化するTYPE-REFがタイプという特定のXML Schemaに従うためにMarkup ASN.1タイプの値を制限させたか、RELAX NGがパターンを命名したか、またはASN.1はタイプを定義しました。

      Aside: Referencing an ASN.1 type in a TYPE-REF encoding
      instruction does not have the effect of imposing a requirement to
      preserve the Infoset [INFOSET] representation of the RXER encoding
      of an abstract value of the type.  It is still sufficient to
      preserve just the abstract value.

傍らに: 指示をコード化するTYPE-REFのASN.1タイプに参照をつけるのにおいて、タイプの抽象的な価値のRXERコード化のInfoset[INFOSET]表現を保存するという要件を課すという効果がありません。 まさしく抽象的な価値を守るのはまだ十分です。

   The notation for a TYPE-REF encoding instruction is defined as
   follows:

指示をコード化するTYPE-REFのための記法は以下の通り定義されます:

      TypeRefInstruction ::= "TYPE-REF" QNameValue RefParameters

TypeRefInstruction:、:= 「タイプ審判」QNameValue RefParameters

   Taken together, the QNameValue and the ContextParameter of the
   RefParameters (if present) MUST reference an XML Schema named type, a
   RELAX NG named pattern, or an ASN.1 defined type.

一緒に取って、RefParameters(存在しているなら)のQNameValueとContextParameterはXML Schemaがタイプ、パターンというRELAX NG、またはASN.1の定義されたタイプを命名した参照を取らなければなりません。

   A referenced XML Schema type MUST NOT require the presence of values
   for the XML Schema ENTITY or ENTITIES types.

参照をつけられたXML SchemaタイプがXML Schema ENTITYのために存在に値を要求してはいけない、さもなければ、ENTITIESはタイプします。

      Aside: Entity declarations are not supported by CRXER.

傍らに: 実体宣言はCRXERによってサポートされません。

   The QNameValue SHALL NOT be a direct reference to the XML Schema
   NOTATION type [XSD2] (i.e., the namespace name
   "http://www.w3.org/2001/XMLSchema" and local name "NOTATION");
   however, a reference to an XML Schema type derived from the NOTATION
   type is permitted.

QNameValue SHALL NOT、XML Schema NOTATIONタイプ[XSD2](すなわち、名前空間名前" http://www.w3.org/2001/XMLSchema "と地方名「記法」)は直接的な言及になってください。 しかしながら、NOTATIONタイプから得られたXML Schemaタイプについての言及は受入れられます。

      Aside: This restriction is to ensure that the lexical space [XSD2]
      of the referenced type is actually populated with the names of
      notations [XSD1].

傍らに: この制限は被参照型の語彙スペース[XSD2]が実際に記法[XSD1]の名前で居住されるのを保証することです。

Legg                          Experimental                     [Page 25]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[25ページ]RFC4911

   Example

      MyDecimal ::=
          [TYPE-REF {
              namespace-name "http://www.w3.org/2001/XMLSchema",
              local-name     "decimal" }]
          Markup

MyDecimal:、:= [TYPE-REFは" http://www.w3.org/2001/XMLSchema "、地方名を「小数」と名前空間で命名します] マーク付け

      Note that the ASN.X translation of this ASN.1 type definition
      provides a more natural way to reference the XML Schema decimal
      type:

このASN.1型定義に関するASN.X翻訳がXML Schemaの10進タイプを参照への、より当然の道に提供することに注意してください:

         <namedType xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    name="MyDecimal">
          <type ref="xs:decimal" embedded="true"/>
         </namedType>

<namedType xmlns: xsが" http://www.w3.org/2001/XMLSchema "名=と等しい、「MyDecimal「><タイプ審判=「xs: 小数」=「本当」埋め込まれた/></namedType>」

21.  The UNION Encoding Instruction

21. 指示をコード化する組合

   The UNION encoding instruction causes an RXER encoder to encode the
   value of an alternative of a CHOICE type without encapsulation in a
   child element.  The chosen alternative is optionally indicated with a
   member attribute.  The optional PrecedenceList also allows a
   specification writer to alter the order in which an RXER decoder will
   consider the alternatives of the CHOICE as it determines which
   alternative has been used (if the actual alternative has not been
   specified through the member attribute).

指示をコード化するUNIONはRXERエンコーダに子供要素のカプセル化なしでCHOICEタイプの代替手段の値をコード化させます。 選ばれた代替手段はメンバー属性で任意に示されます。 また、任意のPrecedenceListは仕様作家にどの代替手段が使用されたかを決定するとき(実際の代替手段がメンバー属性を通して指定されていないなら)RXERデコーダがCHOICEの代替手段を考えるオーダーを変更させます。

   The notation for a UNION encoding instruction is defined as follows:

指示をコード化するUNIONのための記法は以下の通り定義されます:

      UnionInstruction ::= "UNION" AlternativesPrecedence ?

UnionInstruction:、:= 「組合」AlternativesPrecedence?

      AlternativesPrecedence ::= "PRECEDENCE" PrecedenceList

AlternativesPrecedence:、:= 「先行」PrecedenceList

      PrecedenceList ::= identifier PrecedenceList ?

PrecedenceList:、:= 識別子PrecedenceList?

   The Type in the EncodingPrefixedType for a UNION encoding instruction
   SHALL be either:

指示SHALLをコード化するUNIONのためのEncodingPrefixedTypeのTypeは以下の通りです。

   (1) a BuiltinType that is a ChoiceType, or

または(1) ChoiceTypeであるBuiltinType。

   (2) a ConstrainedType that is not a TypeWithConstraint where the Type
       in the ConstrainedType is one of (1) to (4), or

または(2) ConstrainedTypeのTypeが1歳である(4)への(1)のTypeWithConstraintでないConstrainedType。

   (3) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (4), or

または(3) (4)へのTaggedTypeのTypeが1歳である(1)のTaggedTypeであるPrefixedTypeであるBuiltinType。

Legg                          Experimental                     [Page 26]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[26ページ]RFC4911

   (4) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (4).

(4) (4)へのEncodingPrefixedTypeのTypeが1歳である(1)のEncodingPrefixedTypeであるPrefixedTypeであるBuiltinType。

   The ChoiceType in case (1) is said to be "subject to" the UNION
   encoding instruction.

場合(1)におけるChoiceTypeは指示をコード化するUNION「を条件として」、あると言われています。

   The base type of the type of each alternative of a ChoiceType that is
   subject to a UNION encoding instruction SHALL NOT be:

ベースはChoiceTypeのそれぞれの選択肢のタイプにタイプされます、すなわち、指示SHALL NOTをコード化するUNIONを条件として、いてください、:

   (1) a CHOICE, SET, or SET OF type, or

または(1) CHOICE、SET、またはSET OFがタイプする。

   (2) a SEQUENCE type other than the one defining the QName type from
       the AdditionalBasicDefinitions module [RXER] (i.e., QName is
       allowed), or

または(2) QNameを定義するもの以外のSEQUENCEタイプがAdditionalBasicDefinitionsモジュール[RXER]からタイプする、(すなわち、QNameは許容されています)。

   (3) a SEQUENCE OF type where the SequenceOfType is not subject to a
       LIST encoding instruction, or

または(3) SequenceOfTypeは指示をコード化するLISTを受けることがないSEQUENCE OFタイプ。

   (4) an open type.

(4) 開放型。

   Each identifier in the PrecedenceList MUST be the identifier of a
   NamedType in the ChoiceType.

PrecedenceListの各識別子はChoiceTypeのNamedTypeに関する識別子であるに違いありません。

   A particular identifier SHALL NOT appear more than once in the same
   PrecedenceList.

特定の識別子SHALL NOTは同じPrecedenceListで一度より多く見えます。

   Every NamedType in a ChoiceType that is subject to a UNION encoding
   instruction MUST NOT be subject to an ATTRIBUTE, ATTRIBUTE-REF,
   COMPONENT-REF, GROUP, ELEMENT-REF, REF-AS-ELEMENT, SIMPLE-CONTENT, or
   TYPE-AS-VERSION encoding instruction.

指示をコード化するUNIONを受けることがあるChoiceTypeのあらゆるNamedTypeが、指示をコード化しながら、ATTRIBUTE、ATTRIBUTE-REF、COMPONENT-REF、GROUP、ELEMENT-REF、REF-AS-ELEMENT、SIMPLE-CONTENT、またはTYPE-AS-バージョンを受けることがあるに違いないというわけではありません。

   Example

      [UNION PRECEDENCE basicName] CHOICE {
          extendedName  UTF8String,
          basicName     PrintableString
      }

[組合先行basicName] 選択extendedName UTF8String、basicName PrintableString

22.  The VALUES Encoding Instruction

22. 指示をコード化する値

   The VALUES encoding instruction causes an RXER encoder to use
   nominated names instead of the identifiers that would otherwise
   appear in the encoding of a value of a BIT STRING, ENUMERATED, or
   INTEGER type.

RXERエンコーダが指示をコード化するのに使用するVALUESが識別子の代わりにそうでなければBIT STRINGの価値のコード化に現れる名前、ENUMERATEDを指名したか、またはINTEGERはタイプします。

Legg                          Experimental                     [Page 27]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[27ページ]RFC4911

   The notation for a VALUES encoding instruction is defined as follows:

指示をコード化するVALUESのための記法は以下の通り定義されます:

      ValuesInstruction ::=
          "VALUES" AllValuesMapped ? ValueMappingList ?

ValuesInstruction:、:= 「値」AllValuesMapped? ValueMappingList?

      AllValuesMapped ::= AllCapitalized | AllUppercased

AllValuesMapped:、:= AllCapitalized| AllUppercased

      AllCapitalized ::= "ALL" "CAPITALIZED"

AllCapitalized:、:= 「すべて」「大文字で書かれます」。

      AllUppercased ::= "ALL" "UPPERCASED"

AllUppercased:、:= 「すべて」「大文字されます」。

      ValueMappingList ::= ValueMapping ValueMappingList ?

ValueMappingList:、:= ValueMapping ValueMappingList?

      ValueMapping ::= "," identifier "AS" NCNameValue

ValueMapping:、:= 「」、識別子“AS" NCNameValue

   The Type in the EncodingPrefixedType for a VALUES encoding
   instruction SHALL be either:

指示SHALLをコード化するVALUESのためのEncodingPrefixedTypeのTypeは以下の通りです。

   (1) a BuiltinType that is a BitStringType with a NamedBitList, or

または(1) NamedBitListとBitStringTypeであるBuiltinType。

   (2) a BuiltinType that is an EnumeratedType, or

または(2) EnumeratedTypeであるBuiltinType。

   (3) a BuiltinType that is an IntegerType with a NamedNumberList, or

または(3) NamedNumberListとIntegerTypeであるBuiltinType。

   (4) a ConstrainedType that is not a TypeWithConstraint where the Type
       in the ConstrainedType is one of (1) to (6), or

または(4) ConstrainedTypeのTypeが1歳である(6)への(1)のTypeWithConstraintでないConstrainedType。

   (5) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (6), or

または(5) (6)へのTaggedTypeのTypeが1歳である(1)のTaggedTypeであるPrefixedTypeであるBuiltinType。

   (6) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (6).

(6) (6)へのEncodingPrefixedTypeのTypeが1歳である(1)のEncodingPrefixedTypeであるPrefixedTypeであるBuiltinType。

   The effect of this condition is to force the VALUES encoding
   instruction to be textually co-located with the type definition to
   which it applies.

この状態の効果は指示をコード化するVALUESがそれが適用される型定義で原文に共同見つけさせられることです。

   The BitStringType, EnumeratedType, or IntegerType in case (1), (2),
   or (3), respectively, is said to be "subject to" the VALUES encoding
   instruction.

ケース(1)、(2)、または(3)のBitStringType、EnumeratedType、またはIntegerTypeが指示をコード化するVALUES「を条件として」、あるとそれぞれ言われています。

   A BitStringType, EnumeratedType, or IntegerType SHALL NOT be subject
   to more than one VALUES encoding instruction.

BitStringType、EnumeratedType、またはIntegerType SHALL NOTを条件としているA、1つ以上のVALUESコード化指示。

   Each identifier in a ValueMapping MUST be an identifier appearing in
   the NamedBitList, Enumerations, or NamedNumberList, as the case may
   be.

ValueMappingの各識別子は場合によってNamedBitList、Enumerations、またはNamedNumberListに現れる識別子であるに違いありません。

Legg                          Experimental                     [Page 28]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[28ページ]RFC4911

   The identifier in a ValueMapping SHALL NOT be the same as the
   identifier in any other ValueMapping for the same ValueMappingList.

識別子、ValueMapping SHALL NOTでは、同じValueMappingListのためのいかなる他のValueMappingの識別子と同じくらいもそうです。

   Definition (replacement name):  Each identifier in a BitStringType,
   EnumeratedType, or IntegerType subject to a VALUES encoding
   instruction has a replacement name.  If there is a ValueMapping for
   the identifier, then the replacement name is the character string
   specified by the NCNameValue in the ValueMapping; else if
   AllCapitalized is used, then the replacement name is the identifier
   with the first character uppercased; else if AllUppercased is used,
   then the replacement name is the identifier with all its characters
   uppercased; otherwise, the replacement name is the identifier.

定義(交換名): 指示をコード化するVALUESを条件としたBitStringType、EnumeratedType、またはIntegerTypeの各識別子には、交換名があります。 識別子のためのValueMappingがあれば、交換名はValueMappingのNCNameValueによって指定された文字列です。 ほかに、AllCapitalizedが使用されているなら、交換名は最初のキャラクタが大文字されている識別子です。 ほかに、AllUppercasedが使用されているなら、交換名はすべてのキャラクタが大文字されている識別子です。 さもなければ、交換名は識別子です。

   The replacement names for the identifiers in a BitStringType subject
   to a VALUES encoding instruction MUST be distinct.

指示をコード化するVALUESを条件としたBitStringTypeの識別子のための交換名は異なっているに違いありません。

   The replacement names for the identifiers in an EnumeratedType
   subject to a VALUES encoding instruction MUST be distinct.

指示をコード化するVALUESを条件としたEnumeratedTypeの識別子のための交換名は異なっているに違いありません。

   The replacement names for the identifiers in an IntegerType subject
   to a VALUES encoding instruction MUST be distinct.

指示をコード化するVALUESを条件としたIntegerTypeの識別子のための交換名は異なっているに違いありません。

   Example

      Traffic-Light ::= [VALUES ALL CAPITALIZED, red AS "RED"]
          ENUMERATED {
              red,    -- Replacement name is RED.
              amber,  -- Replacement name is Amber.
              green   -- Replacement name is Green.
          }

信号:、:= 列挙されます[VALUESすべてのCAPITALIZED、赤いAS「赤」]。交換名はそうです。交換名はAmberです。赤--、REDこはく--緑色になってください--交換名はグリーンです。

23.  Insertion Encoding Instructions

23. 指示をコード化する挿入

   Certain of the RXER encoding instructions are categorized as
   insertion encoding instructions.  The insertion encoding instructions
   are the NO-INSERTIONS, HOLLOW-INSERTIONS, SINGULAR-INSERTIONS,
   UNIFORM-INSERTIONS, and MULTIFORM-INSERTIONS encoding instructions
   (whose notations are described respectively by
   NoInsertionsInstruction, HollowInsertionsInstruction,
   SingularInsertionsInstruction, UniformInsertionsInstruction, and
   MultiformInsertionsInstruction).

あるRXERコード化では、指示は指示をコード化する挿入として分類されます。 挿入コード化指示は、指示(記法はNoInsertionsInstruction、HollowInsertionsInstruction、SingularInsertionsInstruction、UniformInsertionsInstruction、およびMultiformInsertionsInstructionによってそれぞれ説明される)をコード化するINSERTIONSがなくて、HOLLOW-INSERTIONSと、SINGULAR-INSERTIONSと、UNIFORM-INSERTIONSと、MULTIFORM-INSERTIONSです。

   The notation for the insertion encoding instructions is defined as
   follows:

指示をコード化する挿入のための記法は以下の通り定義されます:

Legg                          Experimental                     [Page 29]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[29ページ]RFC4911

      InsertionsInstruction ::=
          NoInsertionsInstruction |
          HollowInsertionsInstruction |
          SingularInsertionsInstruction |
          UniformInsertionsInstruction |
          MultiformInsertionsInstruction

InsertionsInstruction:、:= NoInsertionsInstruction| HollowInsertionsInstruction| SingularInsertionsInstruction| UniformInsertionsInstruction| MultiformInsertionsInstruction

      NoInsertionsInstruction ::= "NO-INSERTIONS"

NoInsertionsInstruction:、:= 「入がありません」

      HollowInsertionsInstruction ::= "HOLLOW-INSERTIONS"

HollowInsertionsInstruction:、:= 「空洞の入」

      SingularInsertionsInstruction ::= "SINGULAR-INSERTIONS"

SingularInsertionsInstruction:、:= 「まれな入」

      UniformInsertionsInstruction ::= "UNIFORM-INSERTIONS"

UniformInsertionsInstruction:、:= 「一定の入」

      MultiformInsertionsInstruction ::= "MULTIFORM-INSERTIONS"

MultiformInsertionsInstruction:、:= 「多様な入」

   Using the GROUP encoding instruction on components with extensible
   types can lead to situations where an unknown extension could be
   associated with more than one extension insertion point.  The
   insertion encoding instructions remove this ambiguity by limiting the
   form that extensions can take.  That is, the insertion encoding
   instructions indicate what extensions can be made to an ASN.1
   specification without breaking forward compatibility for RXER
   encodings.

広げることができるタイプでコンポーネントの指示をコード化するGROUPを使用するのは1拡大挿入ポイント以上に未知の拡大を関連づけることができた状況に通じることができます。 挿入コード化指示は、拡大が取ることができる形を制限することによって、このあいまいさを取り除きます。 すなわち、挿入コード化指示は、RXER encodingsのために壊れている下位互換なしでどんな拡大をASN.1仕様にすることができるかを示します。

      Aside: Forward compatibility means the ability for a decoder to
      successfully decode an encoding containing extensions introduced
      into a version of the specification that is more recent than the
      one used by the decoder.

傍らに: 下位互換はデコーダによって使用されるものより最近の仕様のバージョンに取り入れられる拡大を含んでいて、デコーダが首尾よくコード化を解読する能力を意味します。

   In the most general case, an extension to a CHOICE, SET, or SEQUENCE
   type will generate zero or more attributes and zero or more elements,
   due to the potential use of the GROUP and ATTRIBUTE encoding
   instructions by the extension.

最も一般的な場合では、CHOICE、SET、またはSEQUENCEタイプへの拡大は、拡大で指示をコード化するGROUPとATTRIBUTEの潜在的使用のためゼロか以上が属性とゼロか、より多くの要素であると生成するでしょう。

   The MULTIFORM-INSERTIONS encoding instruction indicates that the RXER
   encodings produced by forward-compatible extensions to a type will
   always consist of one or more elements and zero or more attributes.
   No restriction is placed on the names of the elements.

指示をコード化するMULTIFORM-INSERTIONSは、タイプへの前進コンパチブル拡大で生産されたRXER encodingsが1つ以上の要素とゼロか、より多くの属性からいつも成るのを示します。 制限は全く要素の名前に関して課されません。

      Aside: Of necessity, the names of the attributes will all be
      different in any given encoding.

傍らに: 必要であることで、コード化を考えて、属性の名前はいずれでもすべて異なるようになるでしょう。

   The UNIFORM-INSERTIONS encoding instruction indicates that the RXER
   encodings produced by forward-compatible extensions to a type will
   always consist of one or more elements having the same expanded name,
   and zero or more attributes.  The expanded name shared by the

指示をコード化するUNIFORM-INSERTIONSは、タイプへの前進コンパチブル拡大で生産されたRXER encodingsが同じ拡張名前と、ゼロかその他の属性を持っている1つ以上の要素からいつも成るのを示します。 拡張名前は共有しました。

Legg                          Experimental                     [Page 30]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[30ページ]RFC4911

   elements in one particular encoding is not required to be the same as
   the expanded name shared by the elements in any other encoding of the
   extension.  For example, in one encoding of the extension the
   elements might all be called "foo", while in another encoding of the
   extension they might all be called "bar".

要素に従って、特定のコード化は広げるのと同じくらいが名前であったなら必要でない1つの要素が拡大のいかなる他のコード化でも共有されました。 例えば、拡大のあるコード化では、要素はすべて"foo"と呼ばれるかもしれません、拡大の別のコード化では、それらはすべて「バー」と呼ばれるかもしれませんが。

   The SINGULAR-INSERTIONS encoding instruction indicates that the RXER
   encodings produced by forward-compatible extensions to a type will
   always consist of a single element and zero or more attributes.  The
   name of the single element is not required to be the same in every
   possible encoding of the extension.

指示をコード化するSINGULAR-INSERTIONSは、タイプへの前進コンパチブル拡大で生産されたRXER encodingsがただ一つの要素とゼロか、より多くの属性からいつも成るのを示します。 ただ一つの要素の名前は、拡大のあらゆる可能なコード化で同じになるのに必要ではありません。

   The HOLLOW-INSERTIONS encoding instruction indicates that the RXER
   encodings produced by forward-compatible extensions to a type will
   always consist of zero elements and zero or more attributes.

指示をコード化するHOLLOW-INSERTIONSは、タイプへの前進コンパチブル拡大で生産されたRXER encodingsが零元とゼロか、より多くの属性からいつも成るのを示します。

   The NO-INSERTIONS encoding instruction indicates that no forward-
   compatible extensions can be made to a type.

INSERTIONSがないコード化指示は、どんな前進のコンパチブル拡大もタイプに作ることができないのを示します。

   Examples of forward-compatible extensions are provided in Appendix C.

前進コンパチブル拡大に関する例をAppendix Cに提供します。

   The Type in the EncodingPrefixedType for an insertion encoding
   instruction SHALL be either:

指示SHALLをコード化する挿入のためのEncodingPrefixedTypeのTypeは以下の通りです。

   (1) a BuiltinType that is a ChoiceType where the ChoiceType is not
       subject to a UNION encoding instruction, or

または(1) ChoiceTypeは指示をコード化するUNIONを受けることがないChoiceTypeであるBuiltinType。

   (2) a BuiltinType that is a SequenceType or SetType, or

または(2) SequenceTypeかSetTypeであるBuiltinType。

   (3) a ConstrainedType that is not a TypeWithConstraint where the Type
       in the ConstrainedType is one of (1) to (5), or

または(3) ConstrainedTypeのTypeが1歳である(5)への(1)のTypeWithConstraintでないConstrainedType。

   (4) a BuiltinType that is a PrefixedType that is a TaggedType where
       the Type in the TaggedType is one of (1) to (5), or

または(4) (5)へのTaggedTypeのTypeが1歳である(1)のTaggedTypeであるPrefixedTypeであるBuiltinType。

   (5) a BuiltinType that is a PrefixedType that is an
       EncodingPrefixedType where the Type in the EncodingPrefixedType
       is one of (1) to (5).

(5) (5)へのEncodingPrefixedTypeのTypeが1歳である(1)のEncodingPrefixedTypeであるPrefixedTypeであるBuiltinType。

   Case (2) is not permitted when the insertion encoding instruction is
   the SINGULAR-INSERTIONS, UNIFORM-INSERTIONS, or MULTIFORM-INSERTIONS
   encoding instruction.

指示をコード化する挿入が指示をコード化するSINGULAR-INSERTIONS、UNIFORM-INSERTIONS、またはMULTIFORM-INSERTIONSであるときに、ケース(2)は受入れられません。

Legg                          Experimental                     [Page 31]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[31ページ]RFC4911

      Aside: Because extensions to a SET or SEQUENCE type are serial and
      effectively optional, the SINGULAR-INSERTIONS, UNIFORM-INSERTIONS,
      and MULTIFORM-INSERTIONS encoding instructions offer no advantage
      over unrestricted extensions (for a SET or SEQUENCE).  For
      example, an optional series of singular insertions generates zero
      or more elements and zero or more attributes, just like an
      unrestricted extension.

傍らに: SETかSEQUENCEタイプへの拡大が連続していて事実上任意であるので、指示をコード化するSINGULAR-INSERTIONS、UNIFORM-INSERTIONS、およびMULTIFORM-INSERTIONSが無制限な拡大(SETかSEQUENCEのための)より利点を全く示しません。 例えば、まれな入の任意のシリーズは、ゼロか以上が要素とゼロか、より多くの属性であると生成します、まさしく無制限な拡大のように。

   The Type in case (1) or case (2) is said to be "subject to" the
   insertion encoding instruction.

場合(1)か場合(2)におけるTypeは指示をコード化する挿入「を条件として」、あると言われています。

   The Type in case (1) or case (2) MUST be extensible, either
   explicitly or by default.

場合(1)か場合(2)におけるTypeは明らかかデフォルトで広げることができなければなりません。

   A Type SHALL NOT be subject to more than one insertion encoding
   instruction.

Type SHALL NOT、1つ以上の挿入コード化命令を受けることがあってください。

   The insertion encoding instructions indicate what kinds of extensions
   can be made to a type without breaking forward compatibility, but
   they do not prohibit extensions that do break forward compatibility.
   That is, it is not an error for a type's base type to contain
   extensions that do not satisfy an insertion encoding instruction
   affecting the type.  However, if any such extensions are made, then a
   new value SHOULD be introduced into the extensible set of permitted
   values for a version indicator attribute, or attributes (see
   Section 24), whose scope encompasses the extensions.  An example is
   provided in Appendix C.

挿入コード化指示は、壊れている下位互換なしでどんな種類の拡大をタイプに作ることができるかを示しますが、それらは下位互換を壊す拡大を禁止しません。 すなわち、タイプに影響する指示をコード化する挿入を満たさないのは、タイプのベースタイプが拡大を含む誤りではありません。 しかしながら、いずれかであるなら、そのような拡大をして、次に、新しい値はSHOULDです。範囲が拡大を成就するバージョンインディケータ属性、または属性(セクション24を見る)のために広げることができる受入れられた値に導入してください。 Appendix Cに例を提供します。

24.  The VERSION-INDICATOR Encoding Instruction

24. 指示をコード化するバージョンインディケータ

   The VERSION-INDICATOR encoding instruction provides a mechanism for
   RXER decoders to be alerted that an encoding contains extensions that
   break forward compatibility (see the preceding section).

バージョン-INDICATORコード化指示は、RXERデコーダがコード化が下位互換を壊す拡大を含む(先行するセクションを見る)と警告されるためにメカニズムを提供します。

   The notation for a VERSION-INDICATOR encoding instruction is defined
   as follows:

指示をコード化するバージョン-INDICATORのための記法は以下の通り定義されます:

      VersionIndicatorInstruction ::= "VERSION-INDICATOR"

VersionIndicatorInstruction:、:= 「バージョンインディケータ」

   A NamedType that is subject to a VERSION-INDICATOR encoding
   instruction MUST also be subject to an ATTRIBUTE encoding
   instruction.

また、指示をコード化しながらバージョン-INDICATORを受けることがあるNamedTypeも指示をコード化するATTRIBUTEを受けることがあるに違いありません。

   The type of the NamedType that is subject to the VERSION-INDICATOR
   encoding instruction MUST be directly or indirectly a constrained
   type where the set of permitted values is defined to be extensible.
   Each value represents a different version of the ASN.1 specification.
   Ordinarily, an application will set the value of a version indicator

バージョン-INDICATORコード化指示を受けることがあるNamedTypeのタイプは直接そうであるに違いありませんか間接的に、aが、受入れられた値のセットが定義されるタイプが広げることができるのを抑制しました。 各値はASN.1仕様の異なった見解を表します。 通常、アプリケーションはバージョンインディケータの値を設定するでしょう。

Legg                          Experimental                     [Page 32]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[32ページ]RFC4911

   attribute to be the last of these permitted values.  An application
   MAY set the value of the version indicator attribute to the value
   corresponding to an earlier version of the specification if it has
   not used any of the extensions added in a subsequent version.

これらの最終である属性は値を可能にしました。 それがその後のバージョンで加えられた拡大のいずれも使用していないなら、アプリケーションは仕様の以前のバージョンに対応する値にバージョンインディケータ属性の値を設定するかもしれません。

   If an RXER decoder encounters a value of the type that is not one of
   the root values or extension additions (but that is still allowed
   since the set of permitted values is extensible), then this indicates
   that the decoder is using a version of the ASN.1 specification that
   is not compatible with the version used to produce the encoding.  In
   such cases, the decoder SHOULD treat the element containing the
   attribute as having an unknown ASN.1 type.

RXERデコーダが根の値か拡大追加の1つでないタイプの値に遭遇するなら(受入れられた値のセットが広げることができるので、それはまだ許容されています)、これは、デコーダがコード化を生産するのに使用されるバージョンと互換性がないASN.1仕様のバージョンを使用しているのを示します。 そのような場合、デコーダSHOULDは未知のASN.1にタイプさせるとして属性を含む要素を扱います。

      Aside: A version indicator attribute only indicates an
      incompatibility with respect to RXER encodings.  Other encodings
      are not affected because the GROUP encoding instruction does not
      apply to them.

傍らに: バージョンインディケータ属性はRXER encodingsに関して不一致を示すだけです。 指示をコード化するGROUPが彼らに適用しないので、他のencodingsは影響を受けません。

   Examples

      In this first example, the decoder is using an incompatible older
      version if the value of the version attribute in a received RXER
      encoding is not 1, 2, or 3.

この最初の例では、デコーダは容認されたRXERコード化における、バージョン属性の値が1でなくて、また2でなくて、また3でもないなら両立しない旧式のバージョンを使用しています。

         SEQUENCE {
             version  [ATTRIBUTE] [VERSION-INDICATOR]
                          INTEGER (1, ..., 2..3),
             message  MessageType
         }

系列バージョン[ATTRIBUTE][バージョン-INDICATOR]INTEGER(2 1、…、.3)、メッセージMessageType

      In this second example, the decoder is using an incompatible older
      version if the value of the format attribute in a received RXER
      encoding is not "1.0", "1.1", or "2.0".

容認されたRXERコード化における、形式属性の値が使用しないならこの2番目の例では、デコーダが両立しない旧式のバージョンを使用している、「1インチ、「1.1インチ、または「2インチ。」

         SEQUENCE {
             format   [ATTRIBUTE] [VERSION-INDICATOR]
                          UTF8String ("1.0", ..., "1.1" | "2.0"),
             message  MessageType
         }

系列[ATTRIBUTE][バージョン-INDICATOR]UTF8Stringをフォーマットしてください、(「1インチ、…、「1.1インチ|、「2インチ)、メッセージMessageType、」

      An extensive example is provided in Appendix C.

Appendix Cによく知られている例を提供します。

   It is not necessary for every extensible type to have its own version
   indicator attribute.  It would be typical for only the types of
   top-level element components to include a version indicator
   attribute, which would serve as the version indicator for all of the
   nested components.

すべての広げることができるタイプにはそれ自身のバージョンインディケータ属性があるのは必要ではありません。 トップレベル要素成分のタイプだけがバージョンインディケータ属性を入れるのは、典型的でしょう。(属性は入れ子にされたコンポーネントのすべてのためのバージョンインディケータとして機能するでしょう)。

Legg                          Experimental                     [Page 33]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[33ページ]RFC4911

25.  The GROUP Encoding Instruction

25. 指示をコード化するグループ

   The GROUP encoding instruction causes an RXER encoder to encode a
   value of the component to which it is applied without encapsulation
   as an element.  It allows the construction of non-trivial content
   models for element content.

指示をコード化するGROUPはRXERエンコーダにそれが要素としてカプセル化なしで適用されるコンポーネントの値をコード化させます。 それは要素含有量のための重要な満足しているモデルの構造を許容します。

   The notation for a GROUP encoding instruction is defined as follows:

指示をコード化するGROUPのための記法は以下の通り定義されます:

      GroupInstruction ::= "GROUP"

GroupInstruction:、:= 「分類してください」

   The base type of the type of a NamedType that is subject to a GROUP
   encoding instruction SHALL be either:

指示SHALLをコード化するGROUPを受けることがあるNamedTypeのタイプのベースタイプは以下の通りです。

   (1) a SEQUENCE, SET, or SET OF type, or

または(1) SEQUENCE、SET、またはSET OFがタイプする。

   (2) a CHOICE type where the ChoiceType is not subject to a UNION
       encoding instruction, or

または(2) ChoiceTypeは指示をコード化するUNIONを受けることがないCHOICEタイプ。

   (3) a SEQUENCE OF type where the SequenceOfType is not subject to a
       LIST encoding instruction.

(3) SequenceOfTypeは指示をコード化するLISTを受けることがないSEQUENCE OFタイプ。

   The SEQUENCE type in case (1) SHALL NOT be the associated type for a
   built-in type, SHALL NOT be a type from the
   AdditionalBasicDefinitions module [RXER], and SHALL NOT contain a
   component that is subject to a SIMPLE-CONTENT encoding instruction.

SEQUENCEは関連が内蔵型のためのタイプであったならケース(1)SHALL NOTをタイプします、AdditionalBasicDefinitionsモジュール[RXER]からのタイプであり、SHALL NOT。SHALL NOTは指示をコード化するSIMPLE-CONTENTを条件としているコンポーネントを含んでいます。

      Aside: Thus, the CHARACTER STRING, EMBEDDED PDV, EXTERNAL, REAL,
      and QName types are excluded.

傍らに: したがって、CHARACTER STRING、EMBEDDED PDV、EXTERNAL、レアル、およびQNameタイプは遮断されます。

   The CHOICE type in case (2) SHALL NOT be a type from the
   AdditionalBasicDefinitions module.

CHOICEはAdditionalBasicDefinitionsからのタイプがモジュールであったならケース(2)SHALL NOTをタイプします。

      Aside: Thus, the Markup type is excluded.

傍らに: したがって、Markupタイプは遮断されます。

   Definition (visible component): Ignoring all type constraints, the
   visible components for a type that is directly or indirectly a
   combining ASN.1 type (i.e., SEQUENCE, SET, CHOICE, SEQUENCE OF, or
   SET OF) is the set of components of the combining type definition
   plus, for each NamedType (of the combining type definition) that is
   subject to a GROUP encoding instruction, the visible components for
   the type of the NamedType.  The visible components are determined
   after the COMPONENTS OF transformation specified in X.680, Clause
   24.4 [X.680].

定義(目に見えるコンポーネント): すべてのタイプ規制を無視して、直接か間接的に、結合ASN.1タイプ(すなわち、SEQUENCE、SET、CHOICE、SEQUENCE OF、またはSET OF)が結合のコンポーネントのセットであるということであるタイプにおいて、目に見えるコンポーネントはそのうえ、定義をタイプします、指示をコード化するGROUPを受けることがあるそれぞれのNamedType(結合型定義の)のために、NamedTypeのタイプにおいて、目に見えるコンポーネント。 COMPONENTS OF変換がX.680、Clause24.4[X.680]で指定した後に目に見えるコンポーネントは決定しています。

Legg                          Experimental                     [Page 34]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[34ページ]RFC4911

      Aside: The set of visible attribute and element components for a
      type is the set of all the components of the type, and any nested
      types, that describe attributes and child elements appearing in
      the RXER encodings of values of the outer type.

傍らに: タイプのための目に見える属性と要素成分のセットは外側のタイプの値のRXER encodingsに現れる属性と子供要素について説明するタイプ、およびどんな入れ子にされたタイプのすべての成分のセットです。

   A GROUP encoding instruction MUST NOT be used where it would cause a
   NamedType to be a visible component of the type of that same
   NamedType (which is only possible if the type definition is
   recursive).

それがNamedTypeがその同じNamedType(型定義が再帰的である場合にだけ、可能である)のタイプの目に見える成分であることを引き起こすところで指示をコード化するGROUPを使用してはいけません。

      Aside: Components subject to a GROUP encoding instruction might be
      translated into a compatible XML Schema [XSD1] as group
      definitions.  A NamedType that is visible to its own type is
      analogous to a circular group, which XML Schema disallows.

傍らに: 指示をコード化するGROUPを条件としたコンポーネントはグループ定義としてコンパチブルXML Schema[XSD1]に翻訳されるかもしれません。 それ自身のタイプにおいて、目に見えるNamedTypeは円形のグループに類似しています。(XML Schemaはそれを禁じます)。

   Section 25.1 imposes additional conditions on the use of the GROUP
   encoding instruction.

セクション25.1は指示をコード化するGROUPの使用に追加条件を課します。

   In any use of the GROUP encoding instruction, there is a type, the
   including type, that contains the component subject to the GROUP
   encoding instruction, and a type, the included type, that is the base
   type of that component.  Either type can have an extensible content
   model, either by directly using ASN.1 extensibility or by including
   through another GROUP encoding instruction some other type that is
   extensible.

指示をコード化するGROUPをどんな使用でも、包含は、タイプがあるのをタイプして、それは指示、およびタイプ、含まれているタイプ、すなわち、そのコンポーネントのベースタイプをコード化するGROUPを条件としてコンポーネントを含んでいます。 タイプは、直接ASN.1伸展性を使用するか、または別のGROUPコード化指示である他の広げることができるタイプを含んでいることによって、広げることができる満足しているモデルを持つことができます。

   The including and included types may be defined in different ASN.1
   modules, in which case the owner of the including type, i.e., the
   person or organization having the authority to add extensions to the
   including type's definition, may be different from the owner of the
   included type.

含んでいて含まれているタイプはその場合、.1のモジュール、包含の所有者がすなわち、人か組織に含んでいるタイプの定義に拡大を加える権威がある場合異なるかもしれないのをタイプする含まれているタイプの所有者と異なったASNで定義されるかもしれません。

   If the owner of the including type is not using the most recent
   version of the included type's definition, then the owner of the
   including type might add an extension to the including type that is
   valid with respect to the older version of the included type, but is
   later found to be invalid when the latest versions of the including
   and included type definitions are brought together (perhaps by a
   third party).  Although the owner of the including type must
   necessarily be aware of the existence of the included type, the
   reverse is not necessarily true.  The owner of the included type
   could add an extension to the included type without realizing that it
   invalidates someone else's including type.

包含に加えるかもしれない次に、含まれているタイプの定義の最新のバージョン、包含の所有者が拡大をタイプするタイプが使用していない包含の所有者がタイプするなら、それは、含まれているタイプの旧式のバージョンに関して有効ですが、後で含んでいて含まれている型定義の最新版が集められるとき(恐らく第三者で)、無効であることがわかっています。 含んでいるタイプの所有者は必ず含まれているタイプの存在を知らなければなりませんが、逆は必ず本当であるというわけではありません。 他の誰かのものを無効にするのを知っているのがタイプを含んでいなくて、含まれているタイプの所有者は含まれているタイプに拡大を追加できました。

Legg                          Experimental                     [Page 35]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[35ページ]RFC4911

   To avoid these problems, a GROUP encoding instruction MUST NOT be
   used if:

これらの問題を避けるのに、指示をコード化するGROUPを使用してはいけない、:

   (1) the included type is defined in a different module from the
       including type, and

そして(1) 含まれているタイプが含んでいるタイプと異なったモジュールで定義される。

   (2) the included type has an extensible content model, and

そして(2) 含まれているタイプには広げることができる満足しているモデルがある。

   (3) changes to the included type are not coordinated with the owner
       of the including type.

(3) 含まれているタイプへの変化は含んでいるタイプの所有者と共に調整されません。

   Changes in the included type are coordinated with the owner of the
   including type if:

含まれているタイプにおける変化が含んでいるタイプの所有者と共に調整される、:

   (1) the owner of the included type is also the owner of the including
       type, or

または(1) また、含まれているタイプの所有者が含んでいるタイプの所有者である。

   (2) the owner of the including type is collaborating with the owner
       of the included type, or

または(2) タイプが含まれているタイプの所有者と共に共同している包含の所有者。

   (3) all changes will be vetted by a common third party before being
       approved and published.

(3) 承認されて、発行される前にすべての変化が一般的な第三者によって診察されるでしょう。

25.1.  Unambiguous Encodings

25.1. 明白なEncodings

   Unregulated use of the GROUP encoding instruction can easily lead to
   specifications in which distinct abstract values have
   indistinguishable RXER encodings, i.e., ambiguous encodings.  This
   section imposes restrictions on the use of the GROUP encoding
   instruction to ensure that distinct abstract values have distinct
   RXER encodings.  In addition, these restrictions ensure that an
   abstract value can be easily decoded in a single pass without
   back-tracking.

指示をコード化するGROUPの調節されない使用は容易に異なった抽象的な値が区別できないRXER encodingsを持っている仕様につながることができます、すなわち、あいまいなencodings。 このセクションは異なった抽象的な値には異なったRXER encodingsがあるのを保証するために指示をコード化するGROUPの使用に制限を課します。 さらに、これらの制限は、単一のパスで容易に引き返さないで抽象的な値を解読できるのを確実にします。

   An RXER decoder for an ASN.1 type can be abstracted as a recognizer
   for a notional language, consisting of element and attribute expanded
   names, where the type definition describes the grammar for that
   language (in fact it is a context-free grammar).  The restrictions on
   a type definition to ensure easy, unambiguous decoding are more
   conveniently, completely, and simply expressed as conditions on this
   associated grammar.  Implementations are not expected to verify type
   definitions exactly in the manner to be described; however, the
   procedure used MUST produce the same result.

要素から成って、概念的な言語のための認識器としてASN.1タイプのためのRXERデコーダを抜き取ることができます、そして、属性は名前を広くしました。そこで、型定義はその言語のために文法について説明します(事実上、それは文脈自由文法です)。 簡単で、明白な解読を確実にする型定義の制限はこの関連文法に関する状態として、より便利に、完全に、単に表されます。実現が説明されるためにちょうど方法への型定義について確かめないと予想されます。 しかしながら、実行した手順は同じ結果を生まなければなりません。

   Section 25.1.1 describes the procedure for recasting as a grammar a
   type definition containing components subject to the GROUP encoding
   instruction.  Sections 25.1.2 and 25.1.3 specify conditions that the

セクション25.1 .1 文法として指示をコード化するGROUPを条件としてコンポーネントを含む型定義を書き直すための手順について説明します。 セクション25.1.2と.3が指定する25.1はそれを条件とさせます。

Legg                          Experimental                     [Page 36]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[36ページ]RFC4911

   grammar must satisfy for the type definition to be valid.  Section
   25.1.4 describes how unrecognized attributes are accepted by the
   grammar for an extensible type.

文法は、型定義が有効であるように満足させられなければなりません。 セクション25.1 .4 広げることができるタイプのために文法でどう認識されていない属性を受け入れるかを説明します。

   Appendices A and B have extensive examples.

付録AとBには、よく知られている例があります。

25.1.1.  Grammar Construction

25.1.1. 文法工事

   A grammar consists of a collection of productions.  A production has
   a left-hand side and a right-hand side (in this document, separated
   by the "::=" symbol).  The left-hand side (in a context-free grammar)
   is a single non-terminal symbol.  The right-hand side is a sequence
   of non-terminal and terminal symbols.  The terminal symbols are the
   lexical items of the language that the grammar describes.  One of the
   non-terminals is nominated to be the start symbol.  A valid sequence
   of terminals for the language can be generated from the grammar by
   beginning with the start symbol and repeatedly replacing any
   non-terminal with the right-hand side of one of the productions where
   that non-terminal is on the production's left-hand side.  The final
   sequence of terminals is achieved when there are no remaining
   non-terminals to replace.

文法は創作の収集から成ります。 「生産には左側と右側がある、(切り離されたこのドキュメント、」 : : =、」、シンボル) 左側(文脈自由文法の)はただ一つの非終端記号です。 右側は非端末の、そして、端末のシンボルの系列です。 終端記号は文法が説明する言語の語彙項目です。 非端末の1つは開始記号であることが指名されます。 文法から開始記号で始まることによって発生できて、そんなに非端末であるところで繰り返してどんな非端末も創作の1つの右側に取り替える言語のための端末の有効な系列が生産の左側にあります。 取り替える残っている非端末が全くないとき、端末の最終的な系列は達成されます。

      Aside: X.680 describes the ASN.1 basic notation using a
      context-free grammar.

傍らに: X.680は、文脈自由文法を使用することでASN.1の基本的な記法を説明します。

   Each NamedType has an associated primary and secondary non-terminal.

各NamedTypeには、関連第一の、そして、二次の非端末があります。

      Aside: The secondary non-terminal for a NamedType is used when the
      base type of the type in the NamedType is a SEQUENCE OF type or
      SET OF type.

傍らに: NamedTypeのタイプのベースタイプがSEQUENCE OFタイプであるかSET OFがタイプするとき、NamedTypeにおける二次の非端末は使用されています。

   Each ExtensionAddition and ExtensionAdditionAlternative has an
   associated non-terminal.  There is a non-terminal associated with the
   extension insertion point of each extensible type.  There is also a
   primary start non-terminal (this is the start symbol) and a secondary
   start non-terminal.  The exact nature of the non-terminals is not
   important, however all the non-terminals MUST be mutually distinct.

各ExtensionAdditionとExtensionAdditionAlternativeには、関連非端末があります。 それぞれの広げることができるタイプの拡大挿入ポイントに関連している非端末があります。 また、第一のスタート非端末(これは開始記号である)と二次スタート非端末があります。 非端末の正確な本質が重要でない、しかしながら、すべての非端末が互いに異なっていなければなりません。

   It is adequate for most of the examples in this document (though not
   in the most general case) for the primary non-terminal for a
   NamedType to be the identifier of the NamedType, for the primary
   start non-terminal to be S, for the non-terminals for the instances
   of ExtensionAddition and ExtensionAdditionAlternative to be E1, E2,
   E3, and so on, and for the non-terminals for the extension insertion
   points to be I1, I2, I3, and so on.  The secondary non-terminals are
   labelled by appending a "'" character to the primary non-terminal
   label, e.g., the primary and secondary start non-terminals are S and
   S', respectively.

例の大部分には、NamedTypeがNamedTypeの識別子であることは第一の非端末に本書では(もっとも、少しの最も一般的な場合でも、そうしない)適切です、拡大挿入ポイント単位で非端末がSであり、ExtensionAdditionとExtensionAdditionAlternativeの例のための非端末が1ユーロ、2ユーロ、3ユーロなどであり、I1、I2、I3などであるためには非端末の第一の始めに。 二次非端末がaを追加することによってラベルされる、「'「第一の非端末ラベルへのキャラクタ、例えば、第一の、そして、二次のスタート非端末は、それぞれSとS'です。」

Legg                          Experimental                     [Page 37]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[37ページ]RFC4911

   Each NamedType and extension insertion point has an associated
   terminal.  There exists a terminal called the general extension
   terminal that is not associated with any specific notation.  The
   general extension terminal and the terminals for the extension
   insertion points are used to represent elements in unknown
   extensions.  The exact nature of the terminals is not important;
   however, the aforementioned terminals MUST be mutually distinct.  The
   terminals are further categorized as either element terminals or
   attribute terminals.  A terminal for a NamedType is an attribute
   terminal if its associated NamedType is an attribute component;
   otherwise, it is an element terminal.  The general extension terminal
   and the terminals for the extension insertion points are categorized
   as element terminals.

各NamedTypeと拡大挿入ポイントには、関連端末があります。 どんな特定の記法にも関連づけられない一般的な拡大端末と呼ばれる端末は存在しています。 一般的な拡大端末と拡大挿入ポイント単位で端末は、未知の拡大で要素を表すのに使用されます。 端末の正確な本質は重要ではありません。 しかしながら、前述の端末は互いに異なっていなければなりません。 端末は要素端末か属性端末のどちらかとしてさらに分類されます。 関連NamedTypeが属性コンポーネントであるなら、NamedTypeのための端末は属性端末です。 さもなければ、それは要素端末です。 一般的な拡大端末と拡大挿入ポイント単位で端末は要素端末として分類されます。

   Terminals for attributes in unknown extensions are not explicitly
   provided in the grammar.  Certain productions in the grammar are
   categorized as insertion point productions, and their role in
   accepting unknown attributes is described in Section 25.1.4.

未知の拡大における属性のための端末は明らかに文法に提供されません。文法のある創作は挿入ポイント創作として分類されます、そして、未知の属性を受け入れることにおけるそれらの役割はセクション25.1.4で説明されます。

   In the examples in this document, the terminal for a component other
   than an attribute component will be represented as the local name of
   the expanded name of the component enclosed in double quotes, and the
   terminal for an attribute component will be represented as the local
   name of the expanded name of the component prefixed by the '@'
   character and enclosed in double quotes.  The general extension
   terminal will be represented as "*" and the terminals for the
   extension insertion points will be represented as "*1", "*2", "*3",
   and so on.

このドキュメントの例では、属性コンポーネント以外のコンポーネントのための端末は二重引用符に同封されたコンポーネントの拡張名前の地方名として表されるでしょう、そして、属性コンポーネントのための端末は'@'キャラクタによって前に置かれていて、二重引用符に同封されたコンポーネントの拡張名前の地方名として表されるでしょう。 「拡大挿入ポイント単位で「*」と端末が」 *として」 1インチと、*2インチ表されるように一般的な拡大端末は表され」、*3インチなど。

   The productions generated from a NamedType depend on the base type of
   the type of the NamedType.  The productions for the start
   non-terminals depend on the combining type definition being tested.
   In either case, the procedure for generating productions takes a
   primary non-terminal, a secondary non-terminal (sometimes), and a
   type definition.

NamedTypeから発生する創作はNamedTypeのタイプのベースタイプに頼っています。 スタート非端末が結合であることによるので、創作はテストされる定義をタイプします。 どちらの場合ではも、創作を発生させるための手順は第一の非端末、(時々)二次非端末、および型定義を取ります。

   The grammar is constructed beginning with the start non-terminals and
   the combining type definition being tested.

文法は、始めで非端末とテストされる結合型定義を始めながら、構成されます。

   A grammar is constructed after the COMPONENTS OF transformation
   specified in X.680, Clause 24.4 [X.680].

COMPONENTS OF変化がX.680、Clause24.4[X.680]で指定した後に文法は構成されます。

   Given a primary non-terminal, N, and a type where the base type is a
   SEQUENCE or SET type, a production is added to the grammar with N as
   the left-hand side.  The right-hand side is constructed from an
   initial empty state according to the following cases considered in
   order:

第一の非端末、N、およびベースタイプがSEQUENCEであるかSETがタイプするタイプを考えて、生産はNと共に左側として文法に追加されます。 整然とすると考えられた以下のケースによると、右側は初期の人影のない状態から構成されます:

Legg                          Experimental                     [Page 38]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[38ページ]RFC4911

   (1) If an initial RootComponentTypeList is present in the base type,
       then the sequence of primary non-terminals for the components
       nested in that RootComponentTypeList are appended to the right-
       hand side in the order of their definition.

(1) 初期のRootComponentTypeListがベースタイプで存在しているなら、コンポーネントのための第一の非端末の系列は、彼らの定義の注文における正しい手の側にRootComponentTypeListを追加するので、巣ごもりました。

   (2) If an ExtensionAdditions instance is present in the base type and
       not empty, then the non-terminal for the first ExtensionAddition
       nested in the ExtensionAdditions instance is appended to the
       right-hand side.

(2) ExtensionAdditions例がベースタイプで現在であって空でないなら、ExtensionAdditions例で入れ子にされた最初のExtensionAdditionのための非端末を右側に追加します。

   (3) If an ExtensionAdditions instance is empty or not present in the
       base type, and the base type is extensible (explicitly or by
       default), and the base type is not subject to a NO-INSERTIONS or
       HOLLOW-INSERTIONS encoding instruction, then the non-terminal for
       the extension insertion point of the base type is appended to the
       right-hand side.

(3) ExtensionAdditions例がベースタイプで空であるか、または存在していなくて、またベースタイプが広げることができて(明らかかデフォルトで)、ベースタイプはいいえ-INSERTIONSか指示をコード化するHOLLOW-INSERTIONSを受けることがないなら、ベースタイプの拡大挿入ポイント単位で非端末を右側に追加します。

   (4) If a final RootComponentTypeList is present in the base type,
       then the primary non-terminals for the components nested in that
       RootComponentTypeList are appended to the right-hand side in the
       order of their definition.

(4) 最終的なRootComponentTypeListがベースタイプで存在しているなら、コンポーネントのための第一の非端末は、彼らの定義の注文における右側にRootComponentTypeListを追加するので、巣ごもりました。

   The production is an insertion point production if an
   ExtensionAdditions instance is empty or not present in the base type,
   and the base type is extensible (explicitly or by default), and the
   base type is not subject to a NO-INSERTIONS encoding instruction.

ExtensionAdditions例がベースタイプで空であるか、または存在していないなら、生産は挿入ポイント生産です、そして、ベースタイプは広げることができます、そして、(明らかかデフォルトで)ベースタイプは、指示をコード化しながら、INSERTIONSがないのを受けることがありません。

   If a component in a ComponentTypeList (in either a
   RootComponentTypeList or an ExtensionAdditionGroup) is marked
   OPTIONAL or DEFAULT, then a production with the primary non-terminal
   of the component as the left-hand side and an empty right-hand side
   is added to the grammar.

ComponentTypeList(RootComponentTypeListかExtensionAdditionGroupのどちらかの)のコンポーネントがOPTIONALかDEFAULTであるとマークされるなら、左側と空の右手は面があるとき、コンポーネントの第一の非端末による生産が文法に追加されます。

   If a component (regardless of the ASN.1 combining type containing it)
   is subject to a GROUP encoding instruction, then one or more
   productions constructed according to the component's type are added
   to the grammar.  Each of these productions has the primary
   non-terminal of the component as the left-hand side.

コンポーネント(それを含むタイプを結合するASN.1にかかわらず)は指示をコード化するGROUPを受けることがあるなら、コンポーネントのタイプに従って構成された1つ以上の創作が文法に追加されます。それぞれのこれらの創作には、左側としてコンポーネントの第一の非端末があります。

   If a component (regardless of the ASN.1 combining type containing it)
   is not subject to a GROUP encoding instruction, then a production is
   added to the grammar with the primary non-terminal of the component
   as the left-hand side and the terminal of the component as the
   right-hand side.

コンポーネント(それを含むタイプを結合するASN.1にかかわらず)は指示をコード化するGROUPを受けることがないなら、右手としてのコンポーネントの左側と端末に面があるとき、生産はコンポーネントの第一の非端末で文法に追加されます。

Legg                          Experimental                     [Page 39]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[39ページ]RFC4911

   Example

      Consider the following ASN.1 type definition:

以下のASN.1が型定義であると考えてください:

         SEQUENCE {
             -- Start of initial RootComponentTypeList.
             one    [ATTRIBUTE] UTF8String,
             two    BOOLEAN OPTIONAL,
             three  INTEGER
             -- End of initial RootComponentTypeList.
         }

系列--初期のRootComponentTypeListある[ATTRIBUTE]UTF8String、2BOOLEAN OPTIONAL、3INTEGERを始動してください--初期のRootComponentTypeListの端

      Here is the grammar derived from this type:

ここに、このタイプから得られた文法があります:

         S ::= one two three
         one ::= "@one"
         two ::= "two"
         two ::=
         three ::= "three"

S:、:= 1 2 3 1つ:、:= 「@1」2:、:= 「2」時2分:、:= 3:、:= 「3」

   For each ExtensionAddition (of a SEQUENCE or SET base type), a
   production is added to the grammar where the left-hand side is the
   non-terminal for the ExtensionAddition and the right-hand side is
   initially empty.  If the ExtensionAddition is a ComponentType, then
   the primary non-terminal for the NamedType in the ComponentType is
   appended to the right-hand side; otherwise (an
   ExtensionAdditionGroup), the sequence of primary non-terminals for
   the components nested in the ComponentTypeList in the
   ExtensionAdditionGroup are appended to the right-hand side in the
   order of their definition.  If the ExtensionAddition is followed by
   another ExtensionAddition, then the non-terminal for the next
   ExtensionAddition is appended to the right-hand side; otherwise, if
   the base type is not subject to a NO-INSERTIONS or HOLLOW-INSERTIONS
   encoding instruction, then the non-terminal for the extension
   insertion point of the base type is appended to the right-hand side.
   If the ExtensionAddition is not followed by another ExtensionAddition
   and the base type is not subject to a NO-INSERTIONS encoding
   instruction, then the production is an insertion point production.
   If the empty sequence of terminals cannot be generated from the
   production (it may be necessary to wait until the grammar is
   otherwise complete before making this determination), then another
   production is added to the grammar where the left-hand side is the
   non-terminal for the ExtensionAddition and the right-hand side is
   empty.

各ExtensionAddition(SEQUENCEかSETベースタイプの)に関しては、生産は左側がExtensionAdditionのための非端末である文法に追加されます、そして、右側は初めは、人影がありません。 ExtensionAdditionがComponentTypeであるなら、ComponentTypeのNamedTypeのための第一の非端末を右側に追加します。 そうでなければ、(ExtensionAdditionGroup)、ExtensionAdditionGroupのComponentTypeListで入れ子にされたコンポーネントのための第一の非端末の系列を彼らの定義の注文における右側に追加します。 別のExtensionAdditionがExtensionAdditionに続くなら、次のExtensionAdditionのための非端末を右側に追加します。 さもなければ、ベースタイプはいいえ-INSERTIONSか指示をコード化するHOLLOW-INSERTIONSを受けることがないなら、ベースタイプの拡大挿入ポイント単位で非端末を右側に追加します。 ExtensionAdditionが別のExtensionAdditionによって続かれていなくて、またベースタイプは指示をコード化しながらINSERTIONSがないのを受けることがないなら、生産が挿入ポイント生産です。 端末の空の系列が生産から発生できないなら(この決断をする前に、それがそうでなければ、文法が完全になるまで待つのに必要であるかもしれません)、別の生産は左側がExtensionAdditionのための非端末である文法に追加されます、そして、右側は人影がありません。

      Aside: An extension is always effectively optional since a sender
      may be using an earlier version of the ASN.1 specification where
      none, or only some, of the extensions have been defined.

傍らに: 送付者がなにも、または拡大のいくつかだけがそうした定義されたASN.1仕様の以前のバージョンを使用しているかもしれないので、事実上、拡大はいつも任意です。

Legg                          Experimental                     [Page 40]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[40ページ]RFC4911

      Aside: The grammar generated for ExtensionAdditions is structured
      to take account of the condition that an extension can only be
      used if all the earlier extensions are also used [X.680].

傍らに: ExtensionAdditionsのために発生する文法は、また、すべての以前の拡張子が使用される場合にだけ拡張子を使用できるという条件[X.680]を考慮に入れるために構造化されます。

   If a SEQUENCE or SET base type is extensible (explicitly or by
   default) and is not subject to a NO-INSERTIONS or HOLLOW-INSERTIONS
   encoding instruction, then:

SEQUENCEかSETであるなら、ベースタイプは、広げることができて(明らかかデフォルトで)、いいえ-INSERTIONSか指示をコード化するHOLLOW-INSERTIONSを受けることがありません、そして:

   (1) a production is added to the grammar where the left-hand side is
       the non-terminal for the extension insertion point of the base
       type and the right-hand side is the general extension terminal
       followed by the non-terminal for the extension insertion point,
       and

そして(1) 生産が左側がベースタイプの拡大挿入ポイント単位で非端末であり、非端末が拡大挿入ポイントに右側をいうことになった一般的な拡大端末である文法に追加される。

   (2) a production is added to the grammar where the left-hand side is
       the non-terminal for the extension insertion point and the
       right-hand side is empty.

(2) 生産は左側が拡大挿入ポイント単位で非端末であり、右側が人影がない文法に追加されます。

   Example

      Consider the following ASN.1 type definition:

以下のASN.1が型定義であると考えてください:

         SEQUENCE {
             -- Start of initial RootComponentTypeList.
             one    BOOLEAN,
             two    INTEGER OPTIONAL,
             -- End of initial RootComponentTypeList.
             ...,
             -- Start of ExtensionAdditions.
             four  INTEGER,  -- First ExtensionAddition (E1).
             five  BOOLEAN OPTIONAL,  -- Second ExtensionAddition (E2).
             [[ -- An ExtensionAdditionGroup.
                 six    UTF8String,
                 seven  INTEGER OPTIONAL
             ]], -- Third ExtensionAddition (E3).
             -- End of ExtensionAdditions.
             -- The extension insertion point is here (I1).
             ...,
             -- Start of final RootComponentTypeList.
             three  INTEGER
         }

系列拡大挿入ポイントがここにあります。--、2INTEGER OPTIONAL、ブールで初期のRootComponentTypeList1つを始めてください--初期のRootComponentTypeListの端--ExtensionAdditions4INTEGER--ExtensionAddition(1E)最初に、5BOOLEAN OPTIONAL--第2ExtensionAddition(2E)の始まり[--ExtensionAdditionGroup6UTF8String、7INTEGER OPTIONAL] --第3ExtensionAddition(3E)--ExtensionAdditionsの端、--、(I1) --最終的なRootComponentTypeListを始動してください、3INTEGER

      Here is the grammar derived from this type:

ここに、このタイプから得られた文法があります:

         S ::= one two E1 three

S:、:= 1つ2E1 3

         E1 ::= four E2
         E1 ::=

1E:、:= 2ユーロの4E1:、:=

Legg                          Experimental                     [Page 41]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[41ページ]RFC4911

         E2 ::= five E3
         E3 ::= six seven I1
         E3 ::=

2E:、:= 3ユーロの5E3:、:= 6 7I1E3:、:=

         I1 ::= "*" I1
         I1 ::=

I1:、:= 「*」I1 I1:、:=

         one ::= "one"
         two ::= "two"
         two ::=
         three ::= "three"
         four ::= "four"
         five ::= "five"
         five ::=
         six ::= "six"
         seven ::= "seven"
         seven ::=

1:、:= 「1」時2分:、:= 「2」時2分:、:= 3:、:= 「3」時4分:、:= 「4」時5分:、:= 「5」時5分:、:= 6:、:= 「6」時7分:、:= 「7」時7分:、:=

      If the SEQUENCE type were subject to a NO-INSERTIONS or
      HOLLOW-INSERTIONS encoding instruction, then the productions for
      I1 would not appear, and the first production for E3 would be:

SEQUENCEタイプはいいえ-INSERTIONSか指示をコード化するHOLLOW-INSERTIONSを受けることがあるなら、I1のための創作が現れないでしょうに、そして、3Eのための最初の生産があるでしょう:

         E3 ::= six seven

3E:、:= 6時7分

   Given a primary non-terminal, N, and a type where the base type is a
   CHOICE type:

第一の非端末、N、およびベースタイプがCHOICEであるタイプを考えて、タイプしてください:

   (1) A production is added to the grammar for each NamedType nested in
       the RootAlternativeTypeList of the base type, where the left-hand
       side is N and the right-hand side is the primary non-terminal for
       the NamedType.

(1) 生産は左側がNであり、右側がNamedTypeのための第一の非端末であるベースタイプのRootAlternativeTypeListで入れ子にされた各NamedTypeのために文法に追加されます。

   (2) A production is added to the grammar for each
       ExtensionAdditionAlternative of the base type, where the left-
       hand side is N and the right-hand side is the non-terminal for
       the ExtensionAdditionAlternative.

(2) 生産はベースタイプの各ExtensionAdditionAlternativeのために文法に追加されます。(そこでは、左の手の側がNであり、右側はExtensionAdditionAlternativeのための非端末です)。

   (3) If the base type is extensible (explicitly or by default) and the
       base type is not subject to an insertion encoding instruction,
       then:

(3) ベースタイプが広げることができるか、そして、(明らかかデフォルトで)ベースタイプは指示をコード化する挿入を受けることがありません、そして:

       (a) A production is added to the grammar where the left-hand side
           is N and the right-hand side is the non-terminal for the
           extension insertion point of the base type.  This production
           is an insertion point production.

(a) 生産は左側がNであり、右側がベースタイプの拡大挿入ポイント単位で非端末である文法に追加されます。 この生産は挿入ポイント生産です。

Legg                          Experimental                     [Page 42]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[42ページ]RFC4911

       (b) A production is added to the grammar where the left-hand side
           is the non-terminal for the extension insertion point of the
           base type and the right-hand side is the general extension
           terminal followed by the non-terminal for the extension
           insertion point.

(b) 生産は左側がベースタイプの拡大挿入ポイント単位で非端末であり、非端末が拡大挿入ポイントに右側をいうことになった一般的な拡大端末である文法に追加されます。

       (c) A production is added to the grammar where the left-hand side
           is the non-terminal for the extension insertion point of the
           base type and the right-hand side is empty.

(c) 生産は左側がベースタイプの拡大挿入ポイント単位で非端末であり、右側が人影がない文法に追加されます。

   (4) If the base type is subject to a HOLLOW-INSERTIONS encoding
       instruction, then a production is added to the grammar where the
       left-hand side is N and the right-hand side is empty.  This
       production is an insertion point production.

(4) ベースタイプは指示をコード化するHOLLOW-INSERTIONSを受けることがあるなら、生産が左側がNである文法に追加されます、そして、右側は人影がありません。 この生産は挿入ポイント生産です。

   (5) If the base type is subject to a SINGULAR-INSERTIONS encoding
       instruction, then a production is added to the grammar where the
       left-hand side is N and the right-hand side is the general
       extension terminal.  This production is an insertion point
       production.

(5) ベースタイプは指示をコード化するSINGULAR-INSERTIONSを受けることがあるなら、生産が左側がNである文法に追加されます、そして、右側は一般的な拡大端末です。 この生産は挿入ポイント生産です。

   (6) If the base type is subject to a UNIFORM-INSERTIONS encoding
       instruction, then:

(6) ベースタイプは次に指示をコード化するUNIFORM-INSERTIONSを受けることがあるなら:

       (a) A production is added to the grammar where the left-hand side
           is N and the right-hand side is the general extension
           terminal.

(a) 生産は左側がNであり、右側が一般的な拡大端末である文法に追加されます。

              Aside: This production is used to verify the correctness
              of an ASN.1 type definition, but would not be used in the
              implementation of an RXER decoder.  The next production
              takes precedence over it for accepting an unknown element.

傍らに: この生産は、ASN.1型定義の正当性について確かめるのに使用されますが、RXERデコーダの実現では使用されないでしょう。 次の生産は、未知の要素を受け入れるためにそれの上で優先します。

       (b) A production is added to the grammar where the left-hand side
           is N and the right-hand side is the terminal for the
           extension insertion point of the base type followed by the
           non-terminal for the extension insertion point.  This
           production is an insertion point production.

(b) 生産は左側がNであり、右側が非端末が拡大挿入ポイントに支えたベースタイプの拡大挿入ポイント単位で端末である文法に追加されます。 この生産は挿入ポイント生産です。

       (c) A production is added to the grammar where the left-hand side
           is the non-terminal for the extension insertion point of the
           base type and the right-hand side is the terminal for the
           extension insertion point followed by the non-terminal for
           the extension insertion point.

(c) 生産は左側がベースタイプの拡大挿入ポイント単位で非端末であり、右側が非端末が拡大挿入ポイントに支えた拡大挿入ポイント単位で端末である文法に追加されます。

       (d) A production is added to the grammar where the left-hand side
           is the non-terminal for the extension insertion point of the
           base type and the right-hand side is empty.

(d) 生産は左側がベースタイプの拡大挿入ポイント単位で非端末であり、右側が人影がない文法に追加されます。

Legg                          Experimental                     [Page 43]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[43ページ]RFC4911

   (7) If the base type is subject to a MULTIFORM-INSERTIONS encoding
       instruction, then:

(7) ベースタイプは次に指示をコード化するMULTIFORM-INSERTIONSを受けることがあるなら:

       (a) A production is added to the grammar where the left-hand side
           is N and the right-hand side is the general extension
           terminal followed by the non-terminal for the extension
           insertion point of the base type.  This production is an
           insertion point production.

(a) 生産は左側がNであり、非端末がベースタイプの拡大挿入ポイントに右側をいうことになった一般的な拡大端末である文法に追加されます。 この生産は挿入ポイント生産です。

       (b) A production is added to the grammar where the left-hand side
           is the non-terminal for the extension insertion point of the
           base type and the right-hand side is the general extension
           terminal followed by the non-terminal for the extension
           insertion point.

(b) 生産は左側がベースタイプの拡大挿入ポイント単位で非端末であり、非端末が拡大挿入ポイントに右側をいうことになった一般的な拡大端末である文法に追加されます。

       (c) A production is added to the grammar where the left-hand side
           is the non-terminal for the extension insertion point of the
           base type and the right-hand side is empty.

(c) 生産は左側がベースタイプの拡大挿入ポイント単位で非端末であり、右側が人影がない文法に追加されます。

   If an ExtensionAdditionAlternative is a NamedType, then a production
   is added to the grammar where the left-hand side is the non-terminal
   for the ExtensionAdditionAlternative and the right-hand side is the
   primary non-terminal for the NamedType.

ExtensionAdditionAlternativeがNamedTypeであるなら、生産は左側がExtensionAdditionAlternativeのための非端末である文法に追加されます、そして、右側はNamedTypeのための第一の非端末です。

   If an ExtensionAdditionAlternative is an
   ExtensionAdditionAlternativesGroup, then a production is added to the
   grammar for each NamedType nested in the
   ExtensionAdditionAlternativesGroup, where the left-hand side is the
   non-terminal for the ExtensionAdditionAlternative and the right-hand
   side is the primary non-terminal for the NamedType.

ExtensionAdditionAlternativeがExtensionAdditionAlternativesGroupであるなら、生産はExtensionAdditionAlternativesGroupで入れ子にされた各NamedTypeのために文法に追加されます。そこでは、左側がExtensionAdditionAlternativeのための非端末であり、右側はNamedTypeのための第一の非端末です。

Legg                          Experimental                     [Page 44]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[44ページ]RFC4911

   Example

      Consider the following ASN.1 type definition:

以下のASN.1が型定義であると考えてください:

         CHOICE {
             -- Start of RootAlternativeTypeList.
             one    BOOLEAN,
             two    INTEGER,
             -- End of RootAlternativeTypeList.
             ...,
             -- Start of ExtensionAdditionAlternatives.
             three  INTEGER, -- First ExtensionAdditionAlternative (E1).
             [[ -- An ExtensionAdditionAlternativesGroup.
                 four  UTF8String,
                 five  INTEGER
             ]] -- Second ExtensionAdditionAlternative (E2).
             -- The extension insertion point is here (I1).
         }

選択--、2INTEGER、ブールでRootAlternativeTypeList1つを始めてください--RootAlternativeTypeListの端… 最初の--ExtensionAdditionAlternatives3INTEGERの始まり--ExtensionAdditionAlternative(1E)[--ExtensionAdditionAlternativesGroup4UTF8String、5INTEGER] --第2ExtensionAdditionAlternative(2E)--拡大挿入ポイントがここ(I1)にあります。

      Here is the grammar derived from this type:

ここに、このタイプから得られた文法があります:

         S ::= one
         S ::= two
         S ::= E1
         S ::= E2
         S ::= I1

S:、:= 1つS:、:= 2:、:= E1 S:、:= E2 S:、:= I1

         I1 ::= "*" I1
         I1 ::=

I1:、:= 「*」I1 I1:、:=

         E1 ::= three
         E2 ::= four
         E2 ::= five

1E:、:= 3E2:、:= 4E2:、:= 5

         one ::= "one"
         two ::= "two"
         three ::= "three"
         four ::= "four"
         five ::= "five"

1:、:= 「1」時2分:、:= 「2」時3分:、:= 「3」時4分:、:= 「4」時5分:、:= 「5」

      If the CHOICE type were subject to a NO-INSERTIONS encoding
      instruction, then the fifth, sixth, and seventh productions would
      be removed.

CHOICEタイプは指示をコード化しながらどんなINSERTIONSも受けることがないなら、5番目、6番目、および7番目の創作は取り除かれるでしょうに。

      If the CHOICE type were subject to a HOLLOW-INSERTIONS encoding
      instruction, then the fifth, sixth, and seventh productions would
      be replaced by:

CHOICEタイプは指示をコード化するHOLLOW-INSERTIONSを受けることがあるなら、5番目、6番目、および7番目の創作を以下に取り替えるでしょうに。

Legg                          Experimental                     [Page 45]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[45ページ]RFC4911

         S ::=

S:、:=

      If the CHOICE type were subject to a SINGULAR-INSERTIONS encoding
      instruction, then the fifth, sixth, and seventh productions would
      be replaced by:

CHOICEタイプは指示をコード化するSINGULAR-INSERTIONSを受けることがあるなら、5番目、6番目、および7番目の創作を以下に取り替えるでしょうに。

         S ::= "*"

S:、:= "*"

      If the CHOICE type were subject to a UNIFORM-INSERTIONS encoding
      instruction, then the fifth and sixth productions would be
      replaced by:

CHOICEタイプは指示をコード化するUNIFORM-INSERTIONSを受けることがあるなら、5番目と6番目の創作を以下に取り替えるでしょうに。

         S ::= "*"
         S ::= "*1" I1

S:、:= 「*」S:、:= 「*の1インチのI1」

         I1 ::= "*1" I1

I1:、:= 「*の1インチのI1」

      If the CHOICE type were subject to a MULTIFORM-INSERTIONS encoding
      instruction, then the fifth production would be replaced by:

CHOICEタイプは指示をコード化するMULTIFORM-INSERTIONSを受けることがあるなら、5番目の生産を以下に取り替えるでしょうに。

         S ::= "*" I1

S:、:= 「*」I1

   Constraints on a SEQUENCE, SET, or CHOICE type are ignored.  They do
   not affect the grammar being generated.

SEQUENCE、SET、またはCHOICEタイプにおける規制は無視されます。 それらは発生する文法に影響しません。

      Aside: This avoids an awkward situation where values of a subtype
      have to be decoded differently from values of the parent type.  It
      also simplifies the verification procedure.

傍らに: これは「副-タイプ」の値が親タイプの値と異なって解読されなければならない困った羽目を避けます。 また、それは検証手続を簡素化します。

   Given a primary non-terminal, N, and a type that has a SEQUENCE OF or
   SET OF base type and that permits a value of size zero (i.e., an
   empty sequence or set):

第一の非端末、N、およびSEQUENCE OFかSET OFベースをタイプさせて、サイズの値を可能にするタイプを考えて、(すなわち、空の系列かセット)のゼロを合わせてください:

   (1) a production is added to the grammar where the left-hand side of
       the production is N and the right-hand side is the primary
       non-terminal for the NamedType of the component of the
       SEQUENCE OF or SET OF base type, followed by N, and

そして(1) 生産が生産の左側がNである文法に追加されて、右側がNがいうことになった第一のSEQUENCE OFかSET OFの部品のNamedTypeにおける非端末のベースタイプである。

   (2) a production is added to the grammar where the left-hand side of
       the production is N and the right-hand side is empty.

(2) 生産は生産の左側がNであり、右側が人影がない文法に追加されます。

   Given a primary non-terminal, N, a secondary non-terminal, N', and a
   type that has a SEQUENCE OF or SET OF base type and that does not
   permit a value of size zero:

'第一の非端末を考えて、N、二次非端末、N'、およびSEQUENCE OFかSET OFベースをタイプさせて、サイズの値を可能にしないタイプは以下のゼロに合っています。

Legg                          Experimental                     [Page 46]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[46ページ]RFC4911

   (1) a production is added to the grammar where the left-hand side of
       the production is N and the right-hand side is the primary
       non-terminal for the NamedType of the component of the
       SEQUENCE OF or SET OF base type, followed by N', and

そして'(1) 生産が生産の左側がNである文法に追加されて、右側がN'がいうことになった第一のSEQUENCE OFかSET OFの部品のNamedTypeにおける非端末のベースタイプである。

   (2) a production is added to the grammar where the left-hand side of
       the production is N' and the right-hand side is the primary
       non-terminal for the NamedType of the component of the
       SEQUENCE OF or SET OF base type, followed by N', and

そして(2) '生産は生産の左側がNである文法に追加され'て、右側がN'がいうことになった第一のSEQUENCE OFかSET OFの部品のNamedTypeにおける非端末のベースタイプである。

   (3) a production is added to the grammar where the left-hand side of
       the production is N' and the right-hand side is empty.

(3) '生産は生産の左側がNである文法に追加され'て、右側は人影がありません。

   Example

      Consider the following ASN.1 type definition:

以下のASN.1が型定義であると考えてください:

         SEQUENCE SIZE(1..MAX) OF number INTEGER

SEQUENCE SIZE(1..MAX)OF番号INTEGER

      Here is the grammar derived from this type:

ここに、このタイプから得られた文法があります:

         S ::= number S'
         S' ::= number S'
         S' ::=

S:、:= 数SのS:、:= 数SのS:、:=

         number ::= "number"

以下に付番してください:= 「数」

   All inner subtyping (InnerTypeContraints) is ignored for the purposes
   of deciding whether a value of size zero is permitted by a
   SEQUENCE OF or SET OF type.

すべての内側の副タイプ(InnerTypeContraints)がサイズゼロの値がSEQUENCE OFによって可能にされるか、またはSET OFがタイプするかを決める目的のために無視されます。

   This completes the description of the transformation of ASN.1
   combining type definitions into a grammar.

これは型定義を文法に結合するASN.1の変化の記述を終了します。

25.1.2.  Unique Component Attribution

25.1.2. ユニークなコンポーネント属性

   This section describes conditions that the grammar must satisfy so
   that each element and attribute in a received RXER encoding can be
   uniquely associated with an ASN.1 component definition.

このセクションは文法に唯一容認されたRXERコード化における各要素と属性をASN.1コンポーネント定義に関連づけることができるように満足させられなければならないという条件について説明します。

   Definition (used by the grammar):  A non-terminal, N, is used by the
   grammar if:

定義(文法で、使用されます): 非端末(N)が文法によって使用される、:

   (1) N is the start symbol or

または(1) Nが開始記号である。

   (2) N appears on the right-hand side of a production where the
       non-terminal on the left-hand side is used by the grammar.

(2) Nは非端末が左の方に文法によって使用される生産の右側に載っています。

Legg                          Experimental                     [Page 47]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[47ページ]RFC4911

   Definition (multiple derivation paths):  A non-terminal, N, has
   multiple derivation paths if:

定義(複数の派生経路): 非端末(N)には複数の派生経路がある、:

   (1) N appears on the right-hand side of a production where the
       non-terminal on the left-hand side has multiple derivation paths,
       or

または(1) Nが非端末が左の方に複数の派生経路を持っている生産の右側に載っている。

   (2) N appears on the right-hand side of more than one production
       where the non-terminal on the left-hand side is used by the
       grammar, or

または(2) Nが1以上の右側生産のときに非端末が左の方に文法によって使用されるところに現れる。

   (3) N is the start symbol and it appears on the right-hand side of a
       production where the non-terminal on the left-hand side is used
       by the grammar.

(3) Nは開始記号です、そして、それは非端末が左の方に文法によって使用される生産の右側に載っています。

   For every ASN.1 type with a base type containing components that are
   subject to a GROUP encoding instruction, the grammar derived by the
   method described in this document MUST NOT have:

指示をコード化するGROUPを受けることがあるコンポーネントを含んでいるベースタイプがあるすべてのASN.1タイプのために、本書では説明された方法で引き出された文法は以下を持ってはいけません。

   (1) two or more primary non-terminals that are used by the grammar
       and are associated with element components having the same
       expanded name, or

または(1) 2台以上の文法によって使用された、同じくらい持っている要素成分に関連している第一の非端末が名前を広げた。

   (2) two or more primary non-terminals that are used by the grammar
       and are associated with attribute components having the same
       expanded name, or

または(2) 2台以上の文法によって使用された、同じくらい持っている属性コンポーネントに関連している第一の非端末が名前を広げた。

   (3) a primary non-terminal that has multiple derivation paths and is
       associated with an attribute component.

(3) 複数の派生経路を持っている、属性コンポーネントに関連している第一の非端末。

      Aside: Case (1) is in response to component referencing notations
      that are evaluated with respect to the XML encoding of an abstract
      value.  Case (1) guarantees, without having to do extensive
      testing (which would necessarily have to take account of encoding
      instructions for all other encoding rules), that all sibling
      elements with the same expanded name will be associated with
      equivalent type definitions.  Such equivalence allows a component
      referenced by element name to be re-encoded using a different set
      of ASN.1 encoding rules without ambiguity as to which type
      definition and encoding instructions apply.

傍らに: ケース(1)は抽象的な価値のXMLコード化に関して評価される記法に参照をつけるコンポーネントに対応しています。 大規模なテスト(必ず規則をコード化しながら、すべてのための他のコード化指示を考慮に入れなければならない)をする必要はなくて、ケース(1)は、同じくらいが広げられている要素が命名するすべての兄弟が同等な型定義に関連するのを保証します。 そのような等価性は、要素名によって参照をつけられるコンポーネントが再コード化されるのを型定義と指示をコード化するのが適用されるあいまいさなしで異なったASN.1符号化規則を使用することで許容します。

      Cases (2) and (3) ensure that an attribute name is always uniquely
      associated with one component that can occur at most once and is
      always nested in the same part of an abstract value.

ケース(2)と(3)は、属性名がいつも唯一高々一度起こることができる1つのコンポーネントに関連づけられて、抽象的な価値の同じ一部分でいつも入れ子にされるのを確実にします。

Legg                          Experimental                     [Page 48]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[48ページ]RFC4911

   Example

      The following example types illustrate various uses and misuses of
      the GROUP encoding instruction with respect to unique component
      attribution:

以下の例のタイプはユニークなコンポーネント属性に関して指示をコード化するGROUPの様々な用途と誤用を例証します:

         TA ::= SEQUENCE {
             a  [GROUP] TB,
             b  [GROUP] CHOICE {
                 a  [GROUP] TB,
                 b  [NAME AS "c"] [ATTRIBUTE] INTEGER,
                 c  INTEGER,
                 d  TB,
                 e  [GROUP] TD,
                 f  [ATTRIBUTE] UTF8String
             },
             c  [ATTRIBUTE] INTEGER,
             d  [GROUP] SEQUENCE OF
                 a [GROUP] SEQUENCE {
                     a  [ATTRIBUTE] OBJECT IDENTIFIER,
                     b  INTEGER
                 },
             e  [NAME AS "c"] INTEGER,
             COMPONENTS OF TD
         }

バイバイ:、:= 系列[GROUP]TB、b[GROUP]CHOICE、[GROUP]TB、b[NAME AS「c」][ATTRIBUTE]INTEGER、c INTEGER、d TB、e[GROUP]TD、f[ATTRIBUTE]UTF8String、c[ATTRIBUTE]INTEGER、d[GROUP]SEQUENCE OF a[GROUP]SEQUENCE、[ATTRIBUTE]OBJECT IDENTIFIER、b INTEGER、e[NAME AS「c」]INTEGER、COMPONENTS OF TD

         TB ::= SEQUENCE {
             a  INTEGER,
             b  [ATTRIBUTE] BOOLEAN,
             COMPONENTS OF TC
         }

Tb:、:= 系列INTEGERの、そして、b[ATTRIBUTE]ブールのCOMPONENTS OF TC

         TC ::= SEQUENCE {
             f  OBJECT IDENTIFIER
         }

Tc:、:= 系列fオブジェクト識別子

         TD ::= SEQUENCE {
             g  OBJECT IDENTIFIER
         }

TD:、:= 系列gオブジェクト識別子

      The grammar for TA is constructed after performing the
      COMPONENTS OF transformation.  The result of this transformation
      is shown next.  This example will depart from the usual convention
      of using just the identifier of a NamedType to represent the
      primary non-terminal for that NamedType.  A label relative to the
      outermost type will be used instead to better illustrate unique
      component attribution.  The labels used for the non-terminals are
      shown down the right-hand side.

COMPONENTS OF変換を実行した後に、TAのための文法は構成されます。 この変換の結果は次に、示されます。 この例はそのNamedTypeのためにプライマリ非端末を表すのにまさしくNamedTypeに関する識別子を使用する普通のコンベンションから出発するでしょう。 一番はずれのタイプに比例したラベルは、ユニークなコンポーネント属性をよりよく例証するのに代わりに使用されるでしょう。 非端末に使用されるラベルは右側の下側に案内されます。

Legg                          Experimental                     [Page 49]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[49ページ]RFC4911

         TA ::= SEQUENCE {
             a  [GROUP] TB,                             -- TA.a
             b  [GROUP] CHOICE {                        -- TA.b
                 a  [GROUP] TB,                         -- TA.b.a
                 b  [NAME AS "c"] [ATTRIBUTE] INTEGER,  -- TA.b.b
                 c  INTEGER,                            -- TA.b.c
                 d  TB,                                 -- TA.b.d
                 e  [GROUP] TD,                         -- TA.b.e
                 f  [ATTRIBUTE] UTF8String              -- TA.b.f
             },
             c  [ATTRIBUTE] INTEGER,                    -- TA.c
             d  [GROUP] SEQUENCE OF                     -- TA.d
                 a [GROUP] SEQUENCE {                   -- TA.d.a
                     a  [ATTRIBUTE] OBJECT IDENTIFIER,  -- TA.d.a.a
                     b  INTEGER                         -- TA.d.a.b
                 },
             e  [NAME AS "c"] INTEGER,                  -- TA.e
             g  OBJECT IDENTIFIER                       -- TA.g
         }

バイバイ:、:= 系列[GROUP]TB--TA.a b[GROUP]CHOICE--TA.b a[GROUP]TB--TA.b.a b[NAME AS「c」][ATTRIBUTE]INTEGER(TA.b.b c INTEGER)TA.b.c d TB(TA.b.d e[GROUP]TD--TA.b.e f[ATTRIBUTE]UTF8String)TA.b.f、c[ATTRIBUTE]INTEGER--TA.c d[GROUP]SEQUENCE OF--TA.d a[GROUP]SEQUENCE、--TA.d.a a[ATTRIBUTE]OBJECT IDENTIFIER--TA.d.a.a b INTEGER--TA.d.a.b、e[NAME AS「c」]INTEGER--TA.e g OBJECT IDENTIFIER--TA.g

         TB ::= SEQUENCE {
             a  INTEGER,                                -- TB.a
             b  [ATTRIBUTE] BOOLEAN,                    -- TB.b
             f  OBJECT IDENTIFIER                       -- TB.f
         }

Tb:、:= 系列TB.a b[ATTRIBUTE]ブール(TB.b f OBJECT IDENTIFIER)のINTEGER、TB.f

         -- Type TC is no longer of interest. --

-- タイプTCはもう興味がありません。 --

         TD ::= SEQUENCE {
             g  OBJECT IDENTIFIER                       -- TD.g
         }

TD:、:= 系列gオブジェクト識別子--、TD.g

      The associated grammar is:

関連文法は以下の通りです。

         S ::= TA.a TA.b TA.c TA.d TA.e TA.g

S:、:= TA.a TA.b TA.c TA.d TA.e TA.g

         TA.a ::= TB.a TB.b TB.f

TA.a:、:= TB.a TB.b TB.f

         TB.a ::= "a"
         TB.b ::= "@b"
         TB.f ::= "f"

TB.a:、:= "a" TB.b:、:= "@b"TB.f:、:= 「f」

         TA.b ::= TA.b.a
         TA.b ::= TA.b.b
         TA.b ::= TA.b.c
         TA.b ::= TA.b.d
         TA.b ::= TA.b.e
         TA.b ::= TA.b.f

TA.b:、:= TA.b.a TA.b:、:= TA.b.b TA.b:、:= TA.b.c TA.b:、:= TA.b.d TA.b:、:= TA.b.e TA.b:、:= TA.b.f

Legg                          Experimental                     [Page 50]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[50ページ]RFC4911

         TA.b.a ::= TB.a TB.b TB.f
         TA.b.b ::= "@c"
         TA.b.c ::= "c"
         TA.b.d ::= "d"
         TA.b.e ::= TD.g
         TA.b.f ::= "@f"

TA.b.a:、:= TB.a TB.b TB.f TA.b.b:、:= "@c"TA.b.c:、:= 「c」TA.b.d:、:= 「d」TA.b.e:、:= TD.g TA.b.f:、:= "@f"

         TD.g ::= "g"

TD.g:、:= 「g」

         TA.c ::= "@c"

TA.c:、:= "@c"

         TA.d ::= TA.d.a TA.d
         TA.d ::=

TA.d:、:= TA.d.a TA.d TA.d:、:=

         TA.d.a ::= TA.d.a.a TA.d.a.b

TA.d.a:、:= TA.d.a.はTA.d.a.bです。

         TA.d.a.a := "@a"
         TA.d.a.b ::= "b"

TA.d.a.:="@a"TA.d.a.b:、:= 「b」

         TA.e ::= "c"

TA.e:、:= 「c」

         TA.g ::= "g"

TA.g:、:= 「g」

      All the non-terminals are used by the grammar.

すべての非端末が文法によって使用されます。

      The type definition for TA is invalid because there are two
      instances where two or more primary non-terminals are associated
      with element components having the same expanded name:

2つのインスタンスが2台以上のプライマリ非端末が同じ拡張名前を持っている要素成分に関連しているところにあるので、TAのための型定義は無効です:

      (1) TA.b.c and TA.e (both generate the terminal "c"), and

そして(1) TA.b.cとTA.e(ともに、端末「c」を生成する)。

      (2) TD.g and TA.g (both generate the terminal "g").

(2) TD.gとTA.g(ともに、端末「g」を生成します)。

      In case (2), TD.g and TA.g are derived from the same instance of
      NamedType notation, but become distinct components following the
      COMPONENTS OF transformation.  AUTOMATIC tagging is applied after
      the COMPONENTS OF transformation, which means that the types of
      the components corresponding to TD.g and TA.g will end up with
      different tags, and therefore the types will not be equivalent.

場合(2)では、NamedType記法の同じインスタンスからTD.gとTA.gを得ますが、COMPONENTS OF変換に続いて、異なったコンポーネントになってください。 COMPONENTS OF変換としたがって、タイプが同等にならなかったつもりであった後にAUTOMATICタグ付けは適用されています。変換は、TD.gとTA.gに対応するコンポーネントのタイプが異なったタグで終わることを意味します。

      The type definition for TA is also invalid because there is one
      instance where two or more primary non-terminals are associated
      with attribute components having the same expanded name:  TA.b.b
      and TA.c (both generate the terminal "@c").

また、1つのインスタンスが2台以上のプライマリ非端末が同じ拡張名前を持っている属性コンポーネントに関連しているところにあるので、TAのための型定義も無効です: TA.b.bとTA.c(ともに、端末の"@c"を生成します)。

Legg                          Experimental                     [Page 51]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[51ページ]RFC4911

      The non-terminals with multiple derivation paths are:  TA.d,
      TA.d.a, TA.d.a.a, TA.d.a.b, TB.a, TB.b, and TB.f.  The type
      definition for TA is also invalid because TA.d.a.a and TB.b are
      primary non-terminals that are associated with an attribute
      component.

複数の派生経路がある非端末は以下の通りです。 TA.d.a.のTA.d、TA.d.a、a、TA.d.a.b、TB.a、TB.b、およびTB.f。 また、TA.d.a.のaとTB.bが属性コンポーネントに関連しているプライマリ非端末であるので、TAのための型定義も無効です。

25.1.3.  Deterministic Grammars

25.1.3. 決定論的な文法

   Let the First Set of a production P, denoted First(P), be the set of
   all element terminals T where T is the first element terminal in a
   sequence of terminals that can be generated from the right-hand side
   of P.  There can be any number of leading attribute terminals before
   T.

生産PのFirst Setをさせてください、とFirst(P)は指示して、Tが最初の要素であるすべての要素端末TのセットがP.の右側から生成することができる端末の系列で端末であったなら、ThereはTの前のいろいろな主な属性端末であるかもしれません。

   Let the Follow Set of a non-terminal N, denoted Follow(N), be the set
   of all element terminals T where T is the first element terminal
   following N in a sequence of non-terminals and terminals that can be
   generated from the grammar.  There can be any number of attribute
   terminals between N and T.  If a sequence of non-terminals and
   terminals can be generated from the grammar where N is not followed
   by any element terminals, then Follow(N) also contains a special end
   terminal, denoted by "$".

非端末NのFollow Setをさせてください、とFollow(N)は指示しました、すべての要素端末のセットがTが次々にNに続く非端末と文法から生成することができる端末の最初の要素端末であるTであったなら。どんな要素端末もNを支えていなくて、次に、またFollow(N)が「$」指示された特別な端の端末を含む文法から非端末と端末の系列を生成することができるNとT.Ifの間には、いろいろな属性端末があることができます。

      Aside: If N does not appear on the right-hand side of any
      production, then Follow(N) will be empty.

傍らに: Nがどんな生産の右側にも載っていないと、Follow(N)は空になるでしょう。

   For a production P, let the predicate Empty(P) be true if and only if
   the empty sequence of terminals can be generated from P.  Otherwise,
   Empty(P) is false.

そして、生産Pのために、述部Empty(P)が本当にさせてください、P.Otherwiseから端末の空の系列を生成することができる場合にだけ、Empty(P)は偽です。

   Definition (base grammar):  The base grammar is a rewriting of the
   grammar in which the non-terminals for every ExtensionAddition and
   ExtensionAdditionAlternative are removed from the right-hand side of
   all productions.

定義(ベース文法): ベース文法はあらゆるExtensionAdditionとExtensionAdditionAlternativeのための非端末がすべての創作の右側から取り除かれる文法の書き直しです。

   For a production P, let the predicate Preselected(P) be true if and
   only if every sequence of terminals that can be generated from the
   right-hand side of P using only the base grammar contains at least
   one attribute terminal.  Otherwise, Preselected(P) is false.

そして、生産Pのために、述部Preselected(P)が本当にさせてください、Pの右側からベース文法だけを使用することで生成することができる端末のあらゆる系列が少なくとも1つを含む場合にだけ、端末を結果と考えてください。 さもなければ、Preselected(P)は偽です。

   The Select Set of a production P, denoted Select(P), is empty if
   Preselected(P) is true; otherwise, it contains First(P).  Let N be
   the non-terminal on the left-hand side of P.  If Empty(P) is true,
   then Select(P) also contains Follow(N).

Select(P)は、Preselected(P)が本当であるなら生産PのSelect Setが空であることを指示しました。 さもなければ、それはFirst(P)を含んでいます。 NがP.If Empty(P)の左側の上の非端末が本当である、次に、また、Select(P)がFollow(N)を含んでいるということであることをさせてください。

Legg                          Experimental                     [Page 52]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[52ページ]RFC4911

      Aside: It may appear somewhat dubious to include the attribute
      components in the grammar because, in reality, attributes appear
      unordered within the start tag of an element, and not interspersed
      with the child elements as the grammar would suggest.  This is why
      attribute terminals are ignored in composing the First Sets and
      Follow Sets.  However, the attribute terminals are important in
      composing the Select Sets because they can preselect a production
      and can prevent a production from being able to generate an empty
      sequence of terminals.  In real terms, this corresponds to an RXER
      decoder using the attributes to determine the presence or absence
      of optional components and to select between the alternatives of a
      CHOICE, even before considering the child elements.

傍らに: 属性が要素に関する開始タグの中の順不同の、子供要素で点在していないようにほんとうは見えるので、文法が示すように文法に属性コンポーネントを含んでいるのはいくらか疑わしく見えるかもしれません。 これは属性端末がFirst SetsとFollow Setsを構成する際に無視される理由です。 しかしながら、属性端末は彼らが、生産を前選択できて、生産が端末の空の系列を生成することができるのを防ぐことができるのでSelect Setsを構成するのにおいて重要です。 実物称呼で、これは任意のコンポーネントの存在か欠如を決定して、間にCHOICEの代替手段を選択するのに属性を使用するRXERデコーダに対応しています、子供要素を考える前にさえ。

      An attribute appearing in an extension isn't used to preselect a
      production since, in general, a decoder using an earlier version
      of the specification would not be able to associate the attribute
      with any particular extension insertion point.

一般に、仕様の以前のバージョンを使用するデコーダは任意な特定の拡大挿入点に属性を関連づけることができないでしょう、したがって、拡大に現れる属性が、生産を前選択するのに使用されません。

   Let the Reach Set of a non-terminal N, denoted Reach(N), be the set
   of all element terminals T where T appears in a sequence of terminals
   that can be generated from N.

非端末NのReach Setをさせてください、とReach(N)は指示しました、すべての要素端末のセットがTがNから生成することができる端末の系列に現れるTであったなら。

      Aside: It can be readily shown that all the optional attribute
      components and all but one of the mandatory attribute components
      of a SEQUENCE or SET type can be ignored in constructing the
      grammar because their omission does not alter the First, Follow,
      Select, or Reach Sets, or the evaluation of the Preselected and
      Empty predicates.

傍らに: それは彼らの省略がPreselectedとEmptyのFirst、Follow、Select、Reach Sets、または評価を変更しないので文法を構成する際にSEQUENCEかSETタイプのすべての任意の属性コンポーネントと義務的な属性コンポーネントの1つ以外のすべてを無視できるのが容易に示された述部であるかもしれません。

   A grammar is deterministic (for the purposes of an RXER decoder) if
   and only if:

文法が決定論的である、(RXERデコーダの目的のための)唯一、:

   (1) there do not exist two productions P and Q, with the same
       non-terminal on the left-hand side, where the intersection of
       Select(P) and Select(Q) is not empty, and

そして(1) 2つの創作PとQは存在していません、同じ非端末がSelect(P)とSelect(Q)の交差点が人影がなくない左側にある状態で。

   (2) there does not exist a non-terminal E for an ExtensionAddition or
       ExtensionAdditionAlternative where the intersection of Reach(E)
       and Follow(E) is not empty.

(2) Reach(E)とFollow(E)の交差点が人影がなくないExtensionAdditionかExtensionAdditionAlternativeのための非端末Eは存在していません。

      Aside: In case (1), if the intersection is not empty, then a
      decoder would have two or more possible ways to attempt to decode
      the input into an abstract value.  In case (2), if the
      intersection is not empty, then a decoder using an earlier version
      of the ASN.1 specification would confuse an element in an unknown
      (to that decoder) extension with a known component following the
      extension.

傍らに: 場合(1)では、交差点が人影がなくないなら、デコーダは抽象的な値に入力を解読するのを試みる2つ以上の可能な方法を持っているでしょう。 場合(2)では、交差点が人影がなくないなら、ASN.1仕様の以前のバージョンを使用するデコーダは未知(そのデコーダへの)の拡大で拡大に続く知られているコンポーネントに要素を混乱させるでしょう。

Legg                          Experimental                     [Page 53]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[53ページ]RFC4911

      Aside: In the absence of any attribute components, case (1) is the
      test for an LL(1) grammar.

傍らに: どんな属性コンポーネントがないとき、ケース(1)はLL(1)文法のためのテストです。

   For every ASN.1 type with a base type containing components that are
   subject to a GROUP encoding instruction, the grammar derived by the
   method described in this document MUST be deterministic.

指示をコード化するGROUPを受けることがあるコンポーネントを含んでいるベースタイプがあるすべてのASN.1タイプにおいて、本書では説明されたメソッドで引き出された文法は決定論的であるに違いありません。

25.1.4.  Attributes in Unknown Extensions

25.1.4. 未知の拡大における属性

   An insertion point production is able to accept unknown attributes if
   the non-terminal on the left-hand side of the production does not
   have multiple derivation paths.

生産の左側の上の非端末に複数の派生経路がないなら、挿入ポイント生産は未知の属性を受け入れることができます。

      Aside: If the non-terminal has multiple derivation paths, then any
      future extension cannot possibly contain an attribute component
      because that would violate the requirements of Section 25.1.2.

傍らに: それはセクション25.1.2の要件に違反するでしょう、そして、どんな未来にもしたがって、非端末に複数の派生経路があるなら、拡大が属性コンポーネントを含むことができません。

   For a deterministic grammar, there is only one possible way to
   construct a sequence of element terminals matching the element
   content of an element in a correctly formed RXER encoding.  Any
   unknown attributes of the element are accepted if at least one
   insertion point production that is able to accept unknown attributes
   is used in that construction.

決定論的な文法のために、正しく形成されたRXERの要素がコード化される要素含有量に合っている要素端末の系列を構成する1つの可能な方法しかありません。 その構造に未知の属性を受け入れることができる生産を少なくとも1挿入ポイント使用するなら、要素のどんな未知の属性も受け入れます。

   Example

      Consider this type definition:

この型定義を考えてください:

         CHOICE {
             one  UTF8String,
             two  [GROUP] SEQUENCE {
                  three  INTEGER,
                  ...
             }
         }

選択1UTF8String、2[GROUP]のSEQUENCE、3INTEGER…

      The associated grammar is:

関連文法は以下の通りです。

         S ::= one
         S ::= two

S:、:= 1つS:、:= 2

         two ::= three I1

2:、:= 3I1

         I1 ::= "*" I1
         I1 ::=

I1:、:= 「*」I1 I1:、:=

         one ::= "one"
         three ::= "three"

1:、:= 「1」時3分:、:= 「3」

Legg                          Experimental                     [Page 54]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[54ページ]RFC4911

      The third production is an insertion point production, and it is
      able to accept unknown attributes.

3番目の生産は挿入ポイント生産です、そして、それは未知の属性を受け入れることができます。

      When decoding a value of this type, if the element content
      contains a <one> child element, then any unrecognized attribute
      would be illegal as the insertion point production would not be
      used to recognize the input (the "one" alternative does not admit
      an extension insertion point).  If the element content contains a
      <three> element, then an unrecognized attribute would be accepted
      because the insertion point production would be used to recognize
      the input (the "two" alternative that generates the <three>
      element has an extensible type).

挿入ポイント生産は入力を認識するのに使用されないでしょう(「1つ」代替手段は拡大挿入ポイントを認めません)、したがって、このタイプの値を解読するとき、要素含有量が1>の<子供要素を含んでいるなら、どんな認識されていない属性も不法でしょう。 挿入ポイント生産は入力を認識するのに使用されるでしょう(<が3>要素であると生成する「2」代替手段には、広げることができるタイプがあります)、したがって、要素含有量が<3>要素を含んでいるなら、認識されていない属性を受け入れるでしょう。

      If the SEQUENCE type were prefixed by a NO-INSERTIONS encoding
      instruction, then the third, fourth, and fifth productions would
      be replaced by:

どんなINSERTIONSも指示をコード化しながらSEQUENCEタイプを前に置かないなら、3番目、4番目、および5番目の創作を以下に取り替えるでしょうに。

         two ::= three

2:、:= 3

      With this change, any unrecognized attribute would be illegal for
      the "two" alternative also, since the replacement production is
      not an insertion point production.

この変化で、「2」代替手段にも、どんな認識されていない属性も不法でしょう、交換生産が挿入ポイント生産でないので。

   If more than one insertion point production that is able to accept
   unknown attributes is used in constructing a matching sequence of
   element terminals, then a decoder is free to associate an
   unrecognized attribute with any one of the extension insertion points
   corresponding to those insertion point productions.  The
   justification for doing so comes from the following two observations:

未知の属性を受け入れることができる生産が要素端末の合っている系列を構成する際に1挿入ポイント以上使用されるなら、デコーダは無料でそれらの挿入ポイント創作に対応する拡大挿入ポイントのいずれにも認識されていない属性を関連づけることができます。 そうするための正当化は以下の2つの観測から来ます:

   (1) If the encoding of an abstract value contains an extension where
       the type of the extension is unknown to the receiver, then it is
       generally impossible to re-encode the value using a different set
       of encoding rules, including the canonical variant of the
       received encoding.  This is true no matter which encoding rules
       are being used.  It is desirable for a decoder to be able to
       accept and store the raw encoding of an extension without raising
       an error, and to re-insert the raw encoding of the extension when
       re-encoding the abstract value using the same non-canonical
       encoding rules.  However, there is little more that an
       application can do with an unknown extension.

(1) 受信機において、拡大のタイプが未知であるところに抽象的な価値のコード化が拡大を含んでいるなら、一般に、異なった符号化規則を使用する値を再コード化するのは不可能です、容認されたコード化の正準な異形を含んでいて。 どの符号化規則が使用されていても、これは本当です。 同じ正典外のコード化を使用することで抽象的な値を再コード化するとき、デコーダが誤りを上げることなしで再挿入として拡大の生のコード化を受け入れて、保存できるように、拡大の生のコード化が統治されるのは、望ましいです。 しかしながら、少ししかがさらにアプリケーションが未知の拡大でできるありません。

       An application using RXER can successfully accept, store, and
       re-encode an unrecognized attribute regardless of which extension
       insertion point it might be ascribed to.

An application using RXER can successfully accept, store, and re-encode an unrecognized attribute regardless of which extension insertion point it might be ascribed to.

Legg                          Experimental                     [Page 55]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 55] RFC 4911 Encoding Instructions for RXER July 2007

   (2) Even if there is a single extension insertion point, an unknown
       extension could still be the encoding of a value of any one of an
       infinite number of valid type definitions.  For example, an
       attribute or element component could be nested to any arbitrary
       depth within CHOICEs whose components are subject to GROUP
       encoding instructions.

(2) Even if there is a single extension insertion point, an unknown extension could still be the encoding of a value of any one of an infinite number of valid type definitions. For example, an attribute or element component could be nested to any arbitrary depth within CHOICEs whose components are subject to GROUP encoding instructions.

          Aside: A similar series of nested CHOICEs could describe an
          unknown extension in a Basic Encoding Rules (BER) encoding
          [X.690].

Aside: A similar series of nested CHOICEs could describe an unknown extension in a Basic Encoding Rules (BER) encoding [X.690].

26.  Security Considerations

26. Security Considerations

   ASN.1 compiler implementors should take special care to be thorough
   in checking that the GROUP encoding instruction has been correctly
   used; otherwise, ASN.1 specifications with ambiguous RXER encodings
   could be deployed.

ASN.1 compiler implementors should take special care to be thorough in checking that the GROUP encoding instruction has been correctly used; otherwise, ASN.1 specifications with ambiguous RXER encodings could be deployed.

   Ambiguous encodings mean that the abstract value recovered by a
   decoder may differ from the original abstract value that was encoded.
   If that is the case, then a digital signature generated with respect
   to the original abstract value (using a canonical encoding other than
   CRXER) will not be successfully verified by a receiver using the
   decoded abstract value.  Also, an abstract value may have
   security-sensitive fields, and in particular, fields used to grant or
   deny access.  If the decoded abstract value differs from the encoded
   abstract value, then a receiver using the decoded abstract value will
   be applying different security policy than that embodied in the
   original abstract value.

Ambiguous encodings mean that the abstract value recovered by a decoder may differ from the original abstract value that was encoded. If that is the case, then a digital signature generated with respect to the original abstract value (using a canonical encoding other than CRXER) will not be successfully verified by a receiver using the decoded abstract value. Also, an abstract value may have security-sensitive fields, and in particular, fields used to grant or deny access. If the decoded abstract value differs from the encoded abstract value, then a receiver using the decoded abstract value will be applying different security policy than that embodied in the original abstract value.

27.  References

27. References

27.1.  Normative References

27.1. Normative References

   [BCP14]    Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

[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.

[URI] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", STD 66, RFC 3986, January 2005.

   [RXER]     Legg, S. and D. Prager, "Robust XML Encoding Rules (RXER)
              for Abstract Syntax Notation One (ASN.1)", RFC 4910, July
              2007.

[RXER] Legg, S. and D. Prager, "Robust XML Encoding Rules (RXER) for Abstract Syntax Notation One (ASN.1)", RFC 4910, July 2007.

   [ASN.X]    Legg, S., "Abstract Syntax Notation X (ASN.X)", RFC 4912,
              July 2007.

[ASN.X] Legg, S., "Abstract Syntax Notation X (ASN.X)", RFC 4912, July 2007.

Legg                          Experimental                     [Page 56]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 56] RFC 4911 Encoding Instructions for RXER July 2007

   [X.680]    ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1,
              Information technology - Abstract Syntax Notation One
              (ASN.1):  Specification of basic notation.

[X.680] ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1, Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation.

   [X.680-1]  ITU-T Recommendation X.680 (2002) Amendment 1 (10/03) |
              ISO/IEC 8824-1:2002/Amd 1:2004, Support for EXTENDED-XER.

[X.680-1] ITU-T Recommendation X.680 (2002) Amendment 1 (10/03) | ISO/IEC 8824-1:2002/Amd 1:2004, Support for EXTENDED-XER.

   [X.683]    ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4,
              Information technology - Abstract Syntax Notation One
              (ASN.1):  Parameterization of ASN.1 specifications.

[X.683] ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4, Information technology - Abstract Syntax Notation One (ASN.1): Parameterization of ASN.1 specifications.

   [XML10]    Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E. and
              F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fourth
              Edition)", W3C Recommendation,
              http://www.w3.org/TR/2006/REC-xml-20060816, August 2006.

[XML10] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E. and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fourth Edition)", W3C Recommendation, http://www.w3.org/TR/2006/REC-xml-20060816, August 2006.

   [XMLNS10]  Bray, T., Hollander, D., Layman, A., and R. Tobin,
              "Namespaces in XML 1.0 (Second Edition)", W3C
              Recommendation,
              http://www.w3.org/TR/2006/REC-xml-names-20060816, August
              2006.

[XMLNS10] Bray, T., Hollander, D., Layman, A., and R. Tobin, "Namespaces in XML 1.0 (Second Edition)", W3C Recommendation, http://www.w3.org/TR/2006/REC-xml-names-20060816, August 2006.

   [XSD1]     Thompson, H., Beech, D., Maloney, M. and N. Mendelsohn,
              "XML Schema Part 1: Structures Second Edition", W3C
              Recommendation,
              http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/,
              October 2004.

[XSD1] Thompson, H., Beech, D., Maloney, M. and N. Mendelsohn, "XML Schema Part 1: Structures Second Edition", W3C Recommendation, http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/, October 2004.

   [XSD2]     Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes
              Second Edition", W3C Recommendation,
              http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/,
              October 2004.

[XSD2] Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes Second Edition", W3C Recommendation, http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/, October 2004.

   [RNG]      Clark, J. and M. Makoto, "RELAX NG Tutorial", OASIS
              Committee Specification, http://www.oasis-open.org/
              committees/relax-ng/tutorial-20011203.html, December 2001.

[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.

27.2.  Informative References

27.2. Informative References

   [INFOSET]  Cowan, J. and R. Tobin, "XML Information Set (Second
              Edition)", W3C Recommendation, http://www.w3.org/
              TR/2004/REC-xml-infoset-20040204, February 2004.

[INFOSET] Cowan, J. and R. Tobin, "XML Information Set (Second Edition)", W3C Recommendation, http://www.w3.org/ TR/2004/REC-xml-infoset-20040204, February 2004.

   [X.690]    ITU-T Recommendation X.690 (07/02) | ISO/IEC 8825-1,
              Information technology - ASN.1 encoding rules:
              Specification of Basic Encoding Rules (BER), Canonical
              Encoding Rules (CER) and Distinguished Encoding Rules
              (DER).

[X.690] ITU-T Recommendation X.690 (07/02) | ISO/IEC 8825-1, Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER).

Legg                          Experimental                     [Page 57]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 57] RFC 4911 Encoding Instructions for RXER July 2007

Appendix A.  GROUP Encoding Instruction Examples

Appendix A. GROUP Encoding Instruction Examples

   This appendix is non-normative.

This appendix is non-normative.

   This appendix contains examples of both correct and incorrect use of
   the GROUP encoding instruction, determined with respect to the
   grammars derived from the example type definitions.  The productions
   of the grammars are labeled for convenience.  Sets and predicates for
   non-terminals with only one production will be omitted from the
   examples since they never indicate non-determinism.

This appendix contains examples of both correct and incorrect use of the GROUP encoding instruction, determined with respect to the grammars derived from the example type definitions. The productions of the grammars are labeled for convenience. Sets and predicates for non-terminals with only one production will be omitted from the examples since they never indicate non-determinism.

   The requirements of Section 25.1.2 ("Unique Component Attribution")
   are satisfied by all the examples in this appendix and the appendices
   that follow it.

The requirements of Section 25.1.2 ("Unique Component Attribution") are satisfied by all the examples in this appendix and the appendices that follow it.

A.1.  Example 1

A.1. Example 1

   Consider this type definition:

Consider this type definition:

      SEQUENCE {
          one    [GROUP] SEQUENCE {
              two    UTF8String OPTIONAL
          } OPTIONAL,
          three  INTEGER
      }

SEQUENCE { one [GROUP] SEQUENCE { two UTF8String OPTIONAL } OPTIONAL, three INTEGER }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three
      P2:  one ::= two
      P3:  one ::=
      P4:  two ::= "two"
      P5:  two ::=
      P6:  three ::= "three"

P1: S ::= one three P2: one ::= two P3: one ::= P4: two ::= "two" P5: two ::= P6: three ::= "three"

   Select Sets have to be evaluated to test the validity of the type
   definition.  The grammar leads to the following sets and predicates:

Select Sets have to be evaluated to test the validity of the type definition. The grammar leads to the following sets and predicates:

      First(P2) = { "two" }
      First(P3) = { }
      Preselected(P2) = Preselected(P3) = false
      Empty(P2) = Empty(P3) = true
      Follow(one) = { "three" }
      Select(P2) = First(P2) + Follow(one) = { "two", "three" }
      Select(P3) = First(P3) + Follow(one) = { "three" }

First(P2) = { "two" } First(P3) = { } Preselected(P2) = Preselected(P3) = false Empty(P2) = Empty(P3) = true Follow(one) = { "three" } Select(P2) = First(P2) + Follow(one) = { "two", "three" } Select(P3) = First(P3) + Follow(one) = { "three" }

Legg                          Experimental                     [Page 58]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 58] RFC 4911 Encoding Instructions for RXER July 2007

      First(P4) = { "two" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(two) = { "three" }
      Select(P4) = First(P4) = { "two" }
      Select(P5) = First(P5) + Follow(two) = { "three" }

First(P4) = { "two" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(two) = { "three" } Select(P4) = First(P4) = { "two" } Select(P5) = First(P5) + Follow(two) = { "three" }

   The intersection of Select(P2) and Select(P3) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If the RXER encoding of a value of the type does not have a
   child element <two>, then it is not possible to determine whether the
   "one" component is present or absent in the value.

The intersection of Select(P2) and Select(P3) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If the RXER encoding of a value of the type does not have a child element <two>, then it is not possible to determine whether the "one" component is present or absent in the value.

   Now consider this type definition with attributes in the "one"
   component:

Now consider this type definition with attributes in the "one" component:

      SEQUENCE {
          one    [GROUP] SEQUENCE {
              two    UTF8String OPTIONAL,
              four   [ATTRIBUTE] BOOLEAN,
              five   [ATTRIBUTE] BOOLEAN OPTIONAL
          } OPTIONAL,
          three  INTEGER
      }

SEQUENCE { one [GROUP] SEQUENCE { two UTF8String OPTIONAL, four [ATTRIBUTE] BOOLEAN, five [ATTRIBUTE] BOOLEAN OPTIONAL } OPTIONAL, three INTEGER }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three
      P2:  one ::= two four five
      P3:  one ::=
      P4:  two ::= "two"
      P5:  two ::=
      P6:  four ::= "@four"
      P7:  five ::= "@five"
      P8:  five ::=
      P9:  three ::= "three"

P1: S ::= one three P2: one ::= two four five P3: one ::= P4: two ::= "two" P5: two ::= P6: four ::= "@four" P7: five ::= "@five" P8: five ::= P9: three ::= "three"

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "two" }
      First(P3) = { }
      Preselected(P3) = Empty(P2) = false
      Preselected(P2) = Empty(P3) = true
      Follow(one) = { "three" }
      Select(P2) = { }
      Select(P3) = First(P3) + Follow(one) = { "three" }

First(P2) = { "two" } First(P3) = { } Preselected(P3) = Empty(P2) = false Preselected(P2) = Empty(P3) = true Follow(one) = { "three" } Select(P2) = { } Select(P3) = First(P3) + Follow(one) = { "three" }

Legg                          Experimental                     [Page 59]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 59] RFC 4911 Encoding Instructions for RXER July 2007

      First(P4) = { "two" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(two) = { "three" }
      Select(P4) = First(P4) = { "two" }
      Select(P5) = First(P5) + Follow(two) = { "three" }

First(P4) = { "two" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(two) = { "three" } Select(P4) = First(P4) = { "two" } Select(P5) = First(P5) + Follow(two) = { "three" }

      First(P7) = { }
      First(P8) = { }
      Preselected(P8) = Empty(P7) = false
      Preselected(P7) = Empty(P8) = true
      Follow(five) = { "three" }
      Select(P7) = { }
      Select(P8) = First(P8) + Follow(five) = { "three" }

First(P7) = { } First(P8) = { } Preselected(P8) = Empty(P7) = false Preselected(P7) = Empty(P8) = true Follow(five) = { "three" } Select(P7) = { } Select(P8) = First(P8) + Follow(five) = { "three" }

   The intersection of Select(P2) and Select(P3) is empty, as is the
   intersection of Select(P4) and Select(P5) and the intersection of
   Select(P7) and Select(P8); hence, the grammar is deterministic, and
   the type definition is valid.  In a correct RXER encoding, the "one"
   component will be present if and only if the "four" attribute is
   present.

The intersection of Select(P2) and Select(P3) is empty, as is the intersection of Select(P4) and Select(P5) and the intersection of Select(P7) and Select(P8); hence, the grammar is deterministic, and the type definition is valid. In a correct RXER encoding, the "one" component will be present if and only if the "four" attribute is present.

A.2.  Example 2

A.2. Example 2

   Consider this type definition:

Consider this type definition:

      CHOICE {
          one    [GROUP] SEQUENCE {
              two    [ATTRIBUTE] BOOLEAN OPTIONAL
          },
          three  INTEGER,
          four   [GROUP] SEQUENCE {
              five   BOOLEAN OPTIONAL
          }
      }

CHOICE { one [GROUP] SEQUENCE { two [ATTRIBUTE] BOOLEAN OPTIONAL }, three INTEGER, four [GROUP] SEQUENCE { five BOOLEAN OPTIONAL } }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  S ::= three
      P3:  S ::= four
      P4:  one ::= two
      P5:  two ::= "@two"
      P6:  two ::=
      P7:  three ::= "three"
      P8:  four ::= five
      P9:  five ::= "five"

P1: S ::= one P2: S ::= three P3: S ::= four P4: one ::= two P5: two ::= "@two" P6: two ::= P7: three ::= "three" P8: four ::= five P9: five ::= "five"

Legg                          Experimental                     [Page 60]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 60] RFC 4911 Encoding Instructions for RXER July 2007

      P10: five ::=

P10: five ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { }
      First(P2) = { "three" }
      First(P3) = { "five" }
      Preselected(P1) = Preselected(P2) = Preselected(P3) = false
      Empty(P2) = false
      Empty(P1) = Empty(P3) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) + Follow(S) = { "$" }
      Select(P2) = First(P2) = { "three" }
      Select(P3) = First(P3) + Follow(S) = { "five", "$" }

First(P1) = { } First(P2) = { "three" } First(P3) = { "five" } Preselected(P1) = Preselected(P2) = Preselected(P3) = false Empty(P2) = false Empty(P1) = Empty(P3) = true Follow(S) = { "$" } Select(P1) = First(P1) + Follow(S) = { "$" } Select(P2) = First(P2) = { "three" } Select(P3) = First(P3) + Follow(S) = { "five", "$" }

      First(P5) = { }
      First(P6) = { }
      Preselected(P6) = Empty(P5) = false
      Preselected(P5) = Empty(P6) = true
      Follow(two) = { "$" }
      Select(P5) = { }
      Select(P6) = First(P6) + Follow(two) = { "$" }

First(P5) = { } First(P6) = { } Preselected(P6) = Empty(P5) = false Preselected(P5) = Empty(P6) = true Follow(two) = { "$" } Select(P5) = { } Select(P6) = First(P6) + Follow(two) = { "$" }

      First(P9) = { "five" }
      First(P10) = { }
      Preselected(P9) = Preselected(P10) = Empty(P9) = false
      Empty(P10) = true
      Follow(five) = { "$" }
      Select(P9) = First(P9) = { "five" }
      Select(P10) = First(P10) + Follow(five) = { "$" }

First(P9) = { "five" } First(P10) = { } Preselected(P9) = Preselected(P10) = Empty(P9) = false Empty(P10) = true Follow(five) = { "$" } Select(P9) = First(P9) = { "five" } Select(P10) = First(P10) + Follow(five) = { "$" }

   The intersection of Select(P1) and Select(P3) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If the RXER encoding of a value of the type is empty, then it
   is not possible to determine whether the "one" alternative or the
   "four" alternative has been chosen.

The intersection of Select(P1) and Select(P3) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If the RXER encoding of a value of the type is empty, then it is not possible to determine whether the "one" alternative or the "four" alternative has been chosen.

   Now consider this slightly different type definition:

Now consider this slightly different type definition:

      CHOICE {
          one    [GROUP] SEQUENCE {
              two    [ATTRIBUTE] BOOLEAN
          },
          three  INTEGER,
          four   [GROUP] SEQUENCE {
              five   BOOLEAN OPTIONAL
          }
      }

CHOICE { one [GROUP] SEQUENCE { two [ATTRIBUTE] BOOLEAN }, three INTEGER, four [GROUP] SEQUENCE { five BOOLEAN OPTIONAL } }

Legg                          Experimental                     [Page 61]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 61] RFC 4911 Encoding Instructions for RXER July 2007

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  S ::= three
      P3:  S ::= four
      P4:  one ::= two
      P5:  two ::= "@two"
      P6:  three ::= "three"
      P7:  four ::= five
      P8:  five ::= "five"
      P9:  five ::=

P1: S ::= one P2: S ::= three P3: S ::= four P4: one ::= two P5: two ::= "@two" P6: three ::= "three" P7: four ::= five P8: five ::= "five" P9: five ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { }
      First(P2) = { "three" }
      First(P3) = { "five" }
      Preselected(P2) = Preselected(P3) = false
      Empty(P1) = Empty(P2) = false
      Preselected(P1) = Empty(P3) = true
      Follow(S) = { "$" }
      Select(P1) = { }
      Select(P2) = First(P2) = { "three" }
      Select(P3) = First(P3) + Follow(S) = { "five", "$" }

First(P1) = { } First(P2) = { "three" } First(P3) = { "five" } Preselected(P2) = Preselected(P3) = false Empty(P1) = Empty(P2) = false Preselected(P1) = Empty(P3) = true Follow(S) = { "$" } Select(P1) = { } Select(P2) = First(P2) = { "three" } Select(P3) = First(P3) + Follow(S) = { "five", "$" }

      First(P8) = { "five" }
      First(P9) = { }
      Preselected(P8) = Preselected(P9) = Empty(P8) = false
      Empty(P9) = true
      Follow(five) = { "$" }
      Select(P8) = First(P8) = { "five" }
      Select(P9) = First(P9) + Follow(five) = { "$" }

First(P8) = { "five" } First(P9) = { } Preselected(P8) = Preselected(P9) = Empty(P8) = false Empty(P9) = true Follow(five) = { "$" } Select(P8) = First(P8) = { "five" } Select(P9) = First(P9) + Follow(five) = { "$" }

   The intersection of Select(P1) and Select(P2) is empty, the
   intersection of Select(P1) and Select(P3) is empty, the intersection
   of Select(P2) and Select(P3) is empty, and the intersection of
   Select(P8) and Select(P9) is empty; hence, the grammar is
   deterministic, and the type definition is valid.  The "one" and
   "four" alternatives can be distinguished because the "one"
   alternative has a mandatory attribute.

The intersection of Select(P1) and Select(P2) is empty, the intersection of Select(P1) and Select(P3) is empty, the intersection of Select(P2) and Select(P3) is empty, and the intersection of Select(P8) and Select(P9) is empty; hence, the grammar is deterministic, and the type definition is valid. The "one" and "four" alternatives can be distinguished because the "one" alternative has a mandatory attribute.

Legg                          Experimental                     [Page 62]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 62] RFC 4911 Encoding Instructions for RXER July 2007

A.3.  Example 3

A.3. Example 3

   Consider this type definition:

Consider this type definition:

      SEQUENCE {
          one  [GROUP] CHOICE {
              two    [ATTRIBUTE] BOOLEAN,
              three  [GROUP] SEQUENCE OF number INTEGER
          } OPTIONAL
      }

SEQUENCE { one [GROUP] CHOICE { two [ATTRIBUTE] BOOLEAN, three [GROUP] SEQUENCE OF number INTEGER } OPTIONAL }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  one ::= two
      P3:  one ::= three
      P4:  one ::=
      P5:  two ::= "@two"
      P6:  three ::= number three
      P7:  three ::=
      P8:  number ::= "number"

P1: S ::= one P2: one ::= two P3: one ::= three P4: one ::= P5: two ::= "@two" P6: three ::= number three P7: three ::= P8: number ::= "number"

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { }
      First(P3) = { "number" }
      First(P4) = { }
      Preselected(P3) = Preselected(P4) = Empty(P2) = false
      Preselected(P2) = Empty(P3) = Empty(P4) = true
      Follow(one) = { "$" }
      Select(P2) = { }
      Select(P3) = First(P3) + Follow(one) = { "number", "$" }
      Select(P4) = First(P4) + Follow(one) = { "$" }

First(P2) = { } First(P3) = { "number" } First(P4) = { } Preselected(P3) = Preselected(P4) = Empty(P2) = false Preselected(P2) = Empty(P3) = Empty(P4) = true Follow(one) = { "$" } Select(P2) = { } Select(P3) = First(P3) + Follow(one) = { "number", "$" } Select(P4) = First(P4) + Follow(one) = { "$" }

      First(P6) = { "number" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false
      Empty(P7) = true
      Follow(three) = { "$" }
      Select(P6) = First(P6) = { "number" }
      Select(P7) = First(P7) + Follow(three) = { "$" }

First(P6) = { "number" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false Empty(P7) = true Follow(three) = { "$" } Select(P6) = First(P6) = { "number" } Select(P7) = First(P7) + Follow(three) = { "$" }

   The intersection of Select(P3) and Select(P4) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If the RXER encoding of a value of the type is empty, then it
   is not possible to determine whether the "one" component is absent or
   the empty "three" alternative has been chosen.

The intersection of Select(P3) and Select(P4) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If the RXER encoding of a value of the type is empty, then it is not possible to determine whether the "one" component is absent or the empty "three" alternative has been chosen.

Legg                          Experimental                     [Page 63]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 63] RFC 4911 Encoding Instructions for RXER July 2007

A.4.  Example 4

A.4. Example 4

   Consider this type definition:

Consider this type definition:

      SEQUENCE {
          one  [GROUP] CHOICE {
              two    [ATTRIBUTE] BOOLEAN,
              three  [ATTRIBUTE] BOOLEAN
          } OPTIONAL
      }

SEQUENCE { one [GROUP] CHOICE { two [ATTRIBUTE] BOOLEAN, three [ATTRIBUTE] BOOLEAN } OPTIONAL }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  one ::= two
      P3:  one ::= three
      P4:  one ::=
      P5:  two ::= "@two"
      P6:  three ::= "@three"

P1: S ::= one P2: one ::= two P3: one ::= three P4: one ::= P5: two ::= "@two" P6: three ::= "@three"

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { }
      First(P3) = { }
      First(P4) = { }
      Preselected(P4) = Empty(P2) = Empty(P3) = false
      Preselected(P2) = Preselected(P3) = Empty(P4) = true
      Follow(one) = { "$" }
      Select(P2) = { }
      Select(P3) = { }
      Select(P4) = First(P4) + Follow(one) = { "$" }

First(P2) = { } First(P3) = { } First(P4) = { } Preselected(P4) = Empty(P2) = Empty(P3) = false Preselected(P2) = Preselected(P3) = Empty(P4) = true Follow(one) = { "$" } Select(P2) = { } Select(P3) = { } Select(P4) = First(P4) + Follow(one) = { "$" }

   The intersection of Select(P2) and Select(P3) is empty, the
   intersection of Select(P2) and Select(P4) is empty, and the
   intersection of Select(P3) and Select(P4) is empty; hence, the
   grammar is deterministic, and the type definition is valid.

The intersection of Select(P2) and Select(P3) is empty, the intersection of Select(P2) and Select(P4) is empty, and the intersection of Select(P3) and Select(P4) is empty; hence, the grammar is deterministic, and the type definition is valid.

A.5.  Example 5

A.5. Example 5

   Consider this type definition:

Consider this type definition:

      SEQUENCE {
          one  [GROUP] SEQUENCE OF number INTEGER OPTIONAL
      }

SEQUENCE { one [GROUP] SEQUENCE OF number INTEGER OPTIONAL }

Legg                          Experimental                     [Page 64]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 64] RFC 4911 Encoding Instructions for RXER July 2007

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  one ::= number one
      P3:  one ::=
      P4:  one ::=
      P5:  number ::= "number"

P1: S ::= one P2: one ::= number one P3: one ::= P4: one ::= P5: number ::= "number"

   P3 is generated during the processing of the SEQUENCE OF type.  P4 is
   generated because the "one" component is optional.

P3 is generated during the processing of the SEQUENCE OF type. P4 is generated because the "one" component is optional.

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "number" }
      First(P3) = { }
      First(P4) = { }
      Preselected(P2) = Preselected(P3) = Preselected(P4) = false
      Empty(P2) = false
      Empty(P3) = Empty(P4) = true
      Follow(one) = { "$" }
      Select(P2) = First(P2) = { "number" }
      Select(P3) = First(P3) + Follow(one) = { "$" }
      Select(P4) = First(P4) + Follow(one) = { "$" }

First(P2) = { "number" } First(P3) = { } First(P4) = { } Preselected(P2) = Preselected(P3) = Preselected(P4) = false Empty(P2) = false Empty(P3) = Empty(P4) = true Follow(one) = { "$" } Select(P2) = First(P2) = { "number" } Select(P3) = First(P3) + Follow(one) = { "$" } Select(P4) = First(P4) + Follow(one) = { "$" }

   The intersection of Select(P3) and Select(P4) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If the RXER encoding of a value of the type does not have any
   <number> child elements, then it is not possible to determine whether
   the "one" component is present or absent in the value.

The intersection of Select(P3) and Select(P4) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If the RXER encoding of a value of the type does not have any <number> child elements, then it is not possible to determine whether the "one" component is present or absent in the value.

   Consider this similar type definition with a SIZE constraint:

Consider this similar type definition with a SIZE constraint:

      SEQUENCE {
          one  [GROUP] SEQUENCE SIZE(1..MAX) OF number INTEGER OPTIONAL
      }

SEQUENCE { one [GROUP] SEQUENCE SIZE(1..MAX) OF number INTEGER OPTIONAL }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  one ::= number one'
      P3:  one' ::= number one'
      P4:  one' ::=
      P5:  one ::=
      P6:  number ::= "number"

P1: S ::= one P2: one ::= number one' P3: one' ::= number one' P4: one' ::= P5: one ::= P6: number ::= "number"

Legg                          Experimental                     [Page 65]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 65] RFC 4911 Encoding Instructions for RXER July 2007

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "number" }
      First(P5) = { }
      Preselected(P2) = Preselected(P5) = Empty(P2) = false
      Empty(P5) = true
      Follow(one) = { "$" }
      Select(P2) = First(P2) = { "number" }
      Select(P5) = First(P5) + Follow(one) = { "$" }

First(P2) = { "number" } First(P5) = { } Preselected(P2) = Preselected(P5) = Empty(P2) = false Empty(P5) = true Follow(one) = { "$" } Select(P2) = First(P2) = { "number" } Select(P5) = First(P5) + Follow(one) = { "$" }

      First(P3) = { "number" }
      First(P4) = { }
      Preselected(P3) = Preselected(P4) = Empty(P3) = false
      Empty(P4) = true
      Follow(one') = { "$" }
      Select(P3) = First(P3) = { "number" }
      Select(P4) = First(P4) + Follow(one') = { "$" }

First(P3) = { "number" } First(P4) = { } Preselected(P3) = Preselected(P4) = Empty(P3) = false Empty(P4) = true Follow(one') = { "$" } Select(P3) = First(P3) = { "number" } Select(P4) = First(P4) + Follow(one') = { "$" }

   The intersection of Select(P2) and Select(P5) is empty, as is the
   intersection of Select(P3) and Select(P4); hence, the grammar is
   deterministic, and the type definition is valid.  If there are no
   <number> child elements, then the "one" component is necessarily
   absent and there is no ambiguity.

The intersection of Select(P2) and Select(P5) is empty, as is the intersection of Select(P3) and Select(P4); hence, the grammar is deterministic, and the type definition is valid. If there are no <number> child elements, then the "one" component is necessarily absent and there is no ambiguity.

A.6.  Example 6

A.6. Example 6

   Consider this type definition:

Consider this type definition:

      SEQUENCE {
          beginning  [GROUP] List,
          middle     UTF8String OPTIONAL,
          end        [GROUP] List
      }

SEQUENCE { beginning [GROUP] List, middle UTF8String OPTIONAL, end [GROUP] List }

      List ::= SEQUENCE OF string UTF8String

List ::= SEQUENCE OF string UTF8String

   The associated grammar is:

The associated grammar is:

      P1:  S ::= beginning middle end
      P2:  beginning ::= string beginning
      P3:  beginning ::=
      P4:  middle ::= "middle"
      P5:  middle ::=
      P6:  end ::= string end
      P7:  end ::=
      P8:  string ::= "string"

P1: S ::= beginning middle end P2: beginning ::= string beginning P3: beginning ::= P4: middle ::= "middle" P5: middle ::= P6: end ::= string end P7: end ::= P8: string ::= "string"

Legg                          Experimental                     [Page 66]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 66] RFC 4911 Encoding Instructions for RXER July 2007

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "string" }
      First(P3) = { }
      Preselected(P2) = Preselected(P3) = Empty(P2) = false
      Empty(P3) = true
      Follow(beginning) = { "middle", "string", "$" }
      Select(P2) = First(P2) = { "string" }
      Select(P3) = First(P3) + Follow(beginning)
                 = { "middle", "string", "$" }

First(P2) = { "string" } First(P3) = { } Preselected(P2) = Preselected(P3) = Empty(P2) = false Empty(P3) = true Follow(beginning) = { "middle", "string", "$" } Select(P2) = First(P2) = { "string" } Select(P3) = First(P3) + Follow(beginning) = { "middle", "string", "$" }

      First(P4) = { "middle" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(middle) = { "string", "$" }
      Select(P4) = First(P4) = { "middle" }
      Select(P5) = First(P5) + Follow(middle) = { "string", "$" }

First(P4) = { "middle" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(middle) = { "string", "$" } Select(P4) = First(P4) = { "middle" } Select(P5) = First(P5) + Follow(middle) = { "string", "$" }

      First(P6) = { "string" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false
      Empty(P7) = true
      Follow(end) = { "$" }
      Select(P6) = First(P6) = { "string" }
      Select(P7) = First(P7) + Follow(end) = { "$" }

First(P6) = { "string" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false Empty(P7) = true Follow(end) = { "$" } Select(P6) = First(P6) = { "string" } Select(P7) = First(P7) + Follow(end) = { "$" }

   The intersection of Select(P2) and Select(P3) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.

The intersection of Select(P2) and Select(P3) is not empty; hence, the grammar is not deterministic, and the type definition is not valid.

   Now consider the following type definition:

Now consider the following type definition:

      SEQUENCE {
          beginning     [GROUP] List,
          middleAndEnd  [GROUP] SEQUENCE {
              middle        UTF8String,
              end           [GROUP] List
          } OPTIONAL
      }

SEQUENCE { beginning [GROUP] List, middleAndEnd [GROUP] SEQUENCE { middle UTF8String, end [GROUP] List } OPTIONAL }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= beginning middleAndEnd
      P2:  beginning ::= string beginning
      P3:  beginning ::=
      P4:  middleAndEnd ::= middle end
      P5:  middleAndEnd ::=

P1: S ::= beginning middleAndEnd P2: beginning ::= string beginning P3: beginning ::= P4: middleAndEnd ::= middle end P5: middleAndEnd ::=

Legg                          Experimental                     [Page 67]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 67] RFC 4911 Encoding Instructions for RXER July 2007

      P6:  middle ::= "middle"
      P7:  end ::= string end
      P8:  end ::=
      P9:  string ::= "string"

P6: middle ::= "middle" P7: end ::= string end P8: end ::= P9: string ::= "string"

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "string" }
      First(P3) = { }
      Preselected(P2) = Preselected(P3) = Empty(P2) = false
      Empty(P3) = true
      Follow(beginning) = { "middle", "$" }
      Select(P2) = First(P2) = { "string" }
      Select(P3) = First(P3) + Follow(beginning) = { "middle", "$" }

First(P2) = { "string" } First(P3) = { } Preselected(P2) = Preselected(P3) = Empty(P2) = false Empty(P3) = true Follow(beginning) = { "middle", "$" } Select(P2) = First(P2) = { "string" } Select(P3) = First(P3) + Follow(beginning) = { "middle", "$" }

      First(P4) = { "middle" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(middleAndEnd) = { "$" }
      Select(P4) = First(P4) = { "middle" }
      Select(P5) = First(P5) + Follow(middleAndEnd) = { "$" }

First(P4) = { "middle" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(middleAndEnd) = { "$" } Select(P4) = First(P4) = { "middle" } Select(P5) = First(P5) + Follow(middleAndEnd) = { "$" }

      First(P7) = { "string" }
      First(P8) = { }
      Preselected(P7) = Preselected(P8) = Empty(P7) = false
      Empty(P8) = true
      Follow(end) = { "$" }
      Select(P7) = First(P7) = { "string" }
      Select(P8) = First(P8) + Follow(end) = { "$" }

First(P7) = { "string" } First(P8) = { } Preselected(P7) = Preselected(P8) = Empty(P7) = false Empty(P8) = true Follow(end) = { "$" } Select(P7) = First(P7) = { "string" } Select(P8) = First(P8) + Follow(end) = { "$" }

   The intersection of Select(P2) and Select(P3) is empty, as is the
   intersection of Select(P4) and Select(P5) and the intersection of
   Select(P7) and Select(P8); hence, the grammar is deterministic, and
   the type definition is valid.

The intersection of Select(P2) and Select(P3) is empty, as is the intersection of Select(P4) and Select(P5) and the intersection of Select(P7) and Select(P8); hence, the grammar is deterministic, and the type definition is valid.

A.7.  Example 7

A.7. Example 7

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE SIZE(1..MAX) OF
          one  [GROUP] SEQUENCE {
              two    INTEGER OPTIONAL
          }

SEQUENCE SIZE(1..MAX) OF one [GROUP] SEQUENCE { two INTEGER OPTIONAL }

Legg                          Experimental                     [Page 68]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 68] RFC 4911 Encoding Instructions for RXER July 2007

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one S'
      P2:  S' ::= one S'
      P3:  S' ::=
      P4:  one ::= two
      P5:  two ::= "two"
      P6:  two ::=

P1: S ::= one S' P2: S' ::= one S' P3: S' ::= P4: one ::= two P5: two ::= "two" P6: two ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "two" }
      First(P3) = { }
      Preselected(P2) = Preselected(P3) = false
      Empty(P2) = Empty(P3) = true
      Follow(S') = { "$" }
      Select(P2) = First(P2) + Follow(S') = { "two", "$" }
      Select(P3) = First(P3) + Follow(S') = { "$" }

First(P2) = { "two" } First(P3) = { } Preselected(P2) = Preselected(P3) = false Empty(P2) = Empty(P3) = true Follow(S') = { "$" } Select(P2) = First(P2) + Follow(S') = { "two", "$" } Select(P3) = First(P3) + Follow(S') = { "$" }

      First(P5) = { "two" }
      First(P6) = { }
      Preselected(P5) = Preselected(P6) = Empty(P5) = false
      Empty(P6) = true
      Follow(two) = { "two", "$" }
      Select(P5) = First(P5) = { "two" }
      Select(P6) = First(P6) + Follow(two) = { "two", "$" }

First(P5) = { "two" } First(P6) = { } Preselected(P5) = Preselected(P6) = Empty(P5) = false Empty(P6) = true Follow(two) = { "two", "$" } Select(P5) = First(P5) = { "two" } Select(P6) = First(P6) + Follow(two) = { "two", "$" }

   The intersection of Select(P2) and Select(P3) is not empty and the
   intersection of Select(P5) and Select(P6) is not empty; hence, the
   grammar is not deterministic, and the type definition is not valid.
   The encoding of a value of the type contains an indeterminate number
   of empty instances of the component type.

The intersection of Select(P2) and Select(P3) is not empty and the intersection of Select(P5) and Select(P6) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. The encoding of a value of the type contains an indeterminate number of empty instances of the component type.

A.8.  Example 8

A.8. Example 8

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE OF
          list [GROUP] SEQUENCE SIZE(1..MAX) OF number INTEGER

SEQUENCE OF list [GROUP] SEQUENCE SIZE(1..MAX) OF number INTEGER

   The associated grammar is:

The associated grammar is:

      P1:  S ::= list S
      P2:  S ::=
      P3:  list ::= number list'
      P4:  list' ::= number list'
      P5:  list' ::=
      P6:  number ::= "number"

P1: S ::= list S P2: S ::= P3: list ::= number list' P4: list' ::= number list' P5: list' ::= P6: number ::= "number"

Legg                          Experimental                     [Page 69]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 69] RFC 4911 Encoding Instructions for RXER July 2007

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { "number" }
      First(P2) = { }
      Preselected(P1) = Preselected(P2) = Empty(P1) = false
      Empty(P2) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) = { "number" }
      Select(P2) = First(P2) + Follow(S) = { "$" }

First(P1) = { "number" } First(P2) = { } Preselected(P1) = Preselected(P2) = Empty(P1) = false Empty(P2) = true Follow(S) = { "$" } Select(P1) = First(P1) = { "number" } Select(P2) = First(P2) + Follow(S) = { "$" }

      First(P4) = { "number" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(list') = { "number", "$" }
      Select(P4) = First(P4) = { "number" }
      Select(P5) = First(P5) + Follow(list') = { "number", "$" }

First(P4) = { "number" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(list') = { "number", "$" } Select(P4) = First(P4) = { "number" } Select(P5) = First(P5) + Follow(list') = { "number", "$" }

   The intersection of Select(P4) and Select(P5) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  The type describes a list of lists, but it is not possible
   for a decoder to determine where the outer lists begin and end.

The intersection of Select(P4) and Select(P5) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. The type describes a list of lists, but it is not possible for a decoder to determine where the outer lists begin and end.

A.9.  Example 9

A.9. Example 9

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE OF item [GROUP] SEQUENCE {
          before  [GROUP] OneAndTwo,
          core    UTF8String,
          after   [GROUP] OneAndTwo OPTIONAL
      }

SEQUENCE OF item [GROUP] SEQUENCE { before [GROUP] OneAndTwo, core UTF8String, after [GROUP] OneAndTwo OPTIONAL }

      OneAndTwo ::= SEQUENCE {
          non-core  UTF8String
      }

OneAndTwo ::= SEQUENCE { non-core UTF8String }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= item S
      P2:  S ::=
      P3:  item ::= before core after
      P4:  before ::= non-core
      P5:  non-core ::= "non-core"
      P6:  core ::= "core"
      P7:  after ::= non-core
      P8:  after ::=

P1: S ::= item S P2: S ::= P3: item ::= before core after P4: before ::= non-core P5: non-core ::= "non-core" P6: core ::= "core" P7: after ::= non-core P8: after ::=

Legg                          Experimental                     [Page 70]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 70] RFC 4911 Encoding Instructions for RXER July 2007

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { "non-core" }
      First(P2) = { }
      Preselected(P1) = Preselected(P2) = Empty(P1) = false
      Empty(P2) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) = { "non-core" }
      Select(P2) = First(P2) + Follow(S) = { "$" }

First(P1) = { "non-core" } First(P2) = { } Preselected(P1) = Preselected(P2) = Empty(P1) = false Empty(P2) = true Follow(S) = { "$" } Select(P1) = First(P1) = { "non-core" } Select(P2) = First(P2) + Follow(S) = { "$" }

      First(P7) = { "non-core" }
      First(P8) = { }
      Preselected(P7) = Preselected(P8) = Empty(P7) = false
      Empty(P8) = true
      Follow(after) = { "non-core", "$" }
      Select(P7) = First(P7) = { "non-core" }
      Select(P8) = First(P8) + Follow(after) = { "non-core", "$" }

First(P7) = { "non-core" } First(P8) = { } Preselected(P7) = Preselected(P8) = Empty(P7) = false Empty(P8) = true Follow(after) = { "non-core", "$" } Select(P7) = First(P7) = { "non-core" } Select(P8) = First(P8) + Follow(after) = { "non-core", "$" }

   The intersection of Select(P7) and Select(P8) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  There is ambiguity between the end of one item and the start
   of the next.  Without looking ahead in an encoding, it is not
   possible to determine whether a <non-core> element belongs with the
   preceding or following <core> element.

The intersection of Select(P7) and Select(P8) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. There is ambiguity between the end of one item and the start of the next. Without looking ahead in an encoding, it is not possible to determine whether a <non-core> element belongs with the preceding or following <core> element.

A.10.  Example 10

A.10. Example 10

   Consider the following type definition:

Consider the following type definition:

      CHOICE {
          one   [GROUP] List,
          two   [GROUP] SEQUENCE {
              three  [ATTRIBUTE] UTF8String,
              four   [GROUP] List
          }
      }

CHOICE { one [GROUP] List, two [GROUP] SEQUENCE { three [ATTRIBUTE] UTF8String, four [GROUP] List } }

      List ::= SEQUENCE OF string UTF8String

List ::= SEQUENCE OF string UTF8String

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  S ::= two
      P3:  one ::= string one
      P4:  one ::=
      P5:  two ::= three four
      P6:  three ::= "@three"
      P7:  four ::= string four

P1: S ::= one P2: S ::= two P3: one ::= string one P4: one ::= P5: two ::= three four P6: three ::= "@three" P7: four ::= string four

Legg                          Experimental                     [Page 71]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 71] RFC 4911 Encoding Instructions for RXER July 2007

      P8:  four ::=
      P9:  string ::= "string"

P8: four ::= P9: string ::= "string"

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { "string" }
      First(P2) = { "string" }
      Preselected(P1) = Empty(P2) = false
      Preselected(P2) = Empty(P1) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) + Follow(S) = { "string", "$" }
      Select(P2) = { }

First(P1) = { "string" } First(P2) = { "string" } Preselected(P1) = Empty(P2) = false Preselected(P2) = Empty(P1) = true Follow(S) = { "$" } Select(P1) = First(P1) + Follow(S) = { "string", "$" } Select(P2) = { }

      First(P3) = { "string" }
      First(P4) = { }
      Preselected(P3) = Preselected(P4) = Empty(P3) = false
      Empty(P4) = true
      Follow(one) = { "$" }
      Select(P3) = First(P3) = { "string" }
      Select(P4) = First(P4) + Follow(one) = { "$" }

First(P3) = { "string" } First(P4) = { } Preselected(P3) = Preselected(P4) = Empty(P3) = false Empty(P4) = true Follow(one) = { "$" } Select(P3) = First(P3) = { "string" } Select(P4) = First(P4) + Follow(one) = { "$" }

      First(P7) = { "string" }
      First(P8) = { }
      Preselected(P7) = Preselected(P8) = Empty(P7) = false
      Empty(P8) = true
      Follow(four) = { "$" }
      Select(P7) = First(P7) = { "string" }
      Select(P8) = First(P8) + Follow(four) = { "$" }

First(P7) = { "string" } First(P8) = { } Preselected(P7) = Preselected(P8) = Empty(P7) = false Empty(P8) = true Follow(four) = { "$" } Select(P7) = First(P7) = { "string" } Select(P8) = First(P8) + Follow(four) = { "$" }

   The intersection of Select(P1) and Select(P2) is empty, as is the
   intersection of Select(P3) and Select(P4) and the intersection of
   Select(P7) and Select(P8); hence, the grammar is deterministic, and
   the type definition is valid.  Although both alternatives of the
   CHOICE can begin with a <string> element, an RXER decoder would use
   the presence of a "three" attribute to decide whether to select or
   disregard the "two" alternative.

The intersection of Select(P1) and Select(P2) is empty, as is the intersection of Select(P3) and Select(P4) and the intersection of Select(P7) and Select(P8); hence, the grammar is deterministic, and the type definition is valid. Although both alternatives of the CHOICE can begin with a <string> element, an RXER decoder would use the presence of a "three" attribute to decide whether to select or disregard the "two" alternative.

   However, an attribute in an extension cannot be used to select
   between alternatives.  Consider the following type definition:

However, an attribute in an extension cannot be used to select between alternatives. Consider the following type definition:

Legg                          Experimental                     [Page 72]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 72] RFC 4911 Encoding Instructions for RXER July 2007

      [SINGULAR-INSERTIONS] CHOICE {
          one   [GROUP] List,
          ...,
          two   [GROUP] SEQUENCE {
              three  [ATTRIBUTE] UTF8String,
              four   [GROUP] List
          } -- ExtensionAdditionAlternative (E1).
          -- The extension insertion point is here (I1).
      }

[SINGULAR-INSERTIONS] CHOICE { one [GROUP] List, ..., two [GROUP] SEQUENCE { three [ATTRIBUTE] UTF8String, four [GROUP] List } -- ExtensionAdditionAlternative (E1). -- The extension insertion point is here (I1). }

      List ::= SEQUENCE OF string UTF8String

List ::= SEQUENCE OF string UTF8String

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P10: S ::= E1
      P11: S ::= "*"
      P12: E1 ::= two
      P3:  one ::= string one
      P4:  one ::=
      P5:  two ::= three four
      P6:  three ::= "@three"
      P7:  four ::= string four
      P8:  four ::=
      P9:  string ::= "string"

P1: S ::= one P10: S ::= E1 P11: S ::= "*" P12: E1 ::= two P3: one ::= string one P4: one ::= P5: two ::= three four P6: three ::= "@three" P7: four ::= string four P8: four ::= P9: string ::= "string"

   This grammar leads to the following sets and predicates for P1, P10
   and P11:

This grammar leads to the following sets and predicates for P1, P10 and P11:

      First(P1) = { "string" }
      First(P10) = { "string" }
      First(P11) = { "*" }
      Preselected(P1) = Preselected(P10) = Preselected(P11) = false
      Empty(P10) = Empty(P11) = false
      Empty(P1) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) + Follow(S) = { "string", "$" }
      Select(P10) = First(P10) = { "string" }
      Select(P11) = First(P11) = { "*" }

First(P1) = { "string" } First(P10) = { "string" } First(P11) = { "*" } Preselected(P1) = Preselected(P10) = Preselected(P11) = false Empty(P10) = Empty(P11) = false Empty(P1) = true Follow(S) = { "$" } Select(P1) = First(P1) + Follow(S) = { "string", "$" } Select(P10) = First(P10) = { "string" } Select(P11) = First(P11) = { "*" }

   Preselected(P10) evaluates to false because Preselected(P10) is
   evaluated on the base grammar, wherein P10 is rewritten as:

Preselected(P10) evaluates to false because Preselected(P10) is evaluated on the base grammar, wherein P10 is rewritten as:

      P10: S ::=

P10: S ::=

Legg                          Experimental                     [Page 73]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 73] RFC 4911 Encoding Instructions for RXER July 2007

   The intersection of Select(P1) and Select(P10) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  An RXER decoder using the original, unextended version of the
   definition would not know that the "three" attribute selects between
   the "one" alternative and the extension.

The intersection of Select(P1) and Select(P10) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. An RXER decoder using the original, unextended version of the definition would not know that the "three" attribute selects between the "one" alternative and the extension.

Appendix B.  Insertion Encoding Instruction Examples

Appendix B. Insertion Encoding Instruction Examples

   This appendix is non-normative.

This appendix is non-normative.

   This appendix contains examples showing the use of insertion encoding
   instructions to remove extension ambiguity arising from use of the
   GROUP encoding instruction.

This appendix contains examples showing the use of insertion encoding instructions to remove extension ambiguity arising from use of the GROUP encoding instruction.

B.1.  Example 1

B.1. Example 1

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE {
          one    [GROUP] SEQUENCE {
              two    UTF8String,
              ... -- Extension insertion point (I1).
          },
          three  INTEGER OPTIONAL,
          ... -- Extension insertion point (I2).
      }

SEQUENCE { one [GROUP] SEQUENCE { two UTF8String, ... -- Extension insertion point (I1). }, three INTEGER OPTIONAL, ... -- Extension insertion point (I2). }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three I2
      P2:  one ::= two I1
      P3:  two ::= "two"
      P4:  I1 ::= "*" I1
      P5:  I1 ::=
      P6:  three ::= "three"
      P7:  three ::=
      P8:  I2 ::= "*" I2
      P9:  I2 ::=

P1: S ::= one three I2 P2: one ::= two I1 P3: two ::= "two" P4: I1 ::= "*" I1 P5: I1 ::= P6: three ::= "three" P7: three ::= P8: I2 ::= "*" I2 P9: I2 ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P4) = { "*" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(I1) = { "three", "*", "$" }
      Select(P4) = First(P4) = { "*" }
      Select(P5) = First(P5) + Follow(I1) = { "three", "*", "$" }

First(P4) = { "*" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(I1) = { "three", "*", "$" } Select(P4) = First(P4) = { "*" } Select(P5) = First(P5) + Follow(I1) = { "three", "*", "$" }

Legg                          Experimental                     [Page 74]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 74] RFC 4911 Encoding Instructions for RXER July 2007

      First(P6) = { "three" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false
      Empty(P7) = true
      Follow(three) = { "*", "$" }
      Select(P6) = First(P6) = { "three" }
      Select(P7) = First(P7) + Follow(three) = { "*", "$" }

First(P6) = { "three" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false Empty(P7) = true Follow(three) = { "*", "$" } Select(P6) = First(P6) = { "three" } Select(P7) = First(P7) + Follow(three) = { "*", "$" }

      First(P8) = { "*" }
      First(P9) = { }
      Preselected(P8) = Preselected(P9) = Empty(P8) = false
      Empty(P9) = true
      Follow(I2) = { "$" }
      Select(P8) = First(P8) = { "*" }
      Select(P9) = First(P9) + Follow(I2) = { "$" }

First(P8) = { "*" } First(P9) = { } Preselected(P8) = Preselected(P9) = Empty(P8) = false Empty(P9) = true Follow(I2) = { "$" } Select(P8) = First(P8) = { "*" } Select(P9) = First(P9) + Follow(I2) = { "$" }

   The intersection of Select(P4) and Select(P5) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If an RXER decoder encounters an unrecognized element
   immediately after a <two> element, then it will not know whether to
   associate it with extension insertion point I1 or I2.

The intersection of Select(P4) and Select(P5) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If an RXER decoder encounters an unrecognized element immediately after a <two> element, then it will not know whether to associate it with extension insertion point I1 or I2.

   The non-determinism can be resolved with either a NO-INSERTIONS or
   HOLLOW-INSERTIONS encoding instruction.  Consider this revised type
   definition:

The non-determinism can be resolved with either a NO-INSERTIONS or HOLLOW-INSERTIONS encoding instruction. Consider this revised type definition:

      SEQUENCE {
          one    [GROUP] [HOLLOW-INSERTIONS] SEQUENCE {
              two    UTF8String,
              ... -- Extension insertion point (I1).
          },
          three  INTEGER OPTIONAL,
          ... -- Extension insertion point (I2).
      }

SEQUENCE { one [GROUP] [HOLLOW-INSERTIONS] SEQUENCE { two UTF8String, ... -- Extension insertion point (I1). }, three INTEGER OPTIONAL, ... -- Extension insertion point (I2). }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three I2
      P10: one ::= two
      P3:  two ::= "two"
      P6:  three ::= "three"
      P7:  three ::=
      P8:  I2 ::= "*" I2
      P9:  I2 ::=

P1: S ::= one three I2 P10: one ::= two P3: two ::= "two" P6: three ::= "three" P7: three ::= P8: I2 ::= "*" I2 P9: I2 ::=

   With the addition of the HOLLOW-INSERTIONS encoding instruction, the
   P4 and P5 productions are no longer generated, and the conflict
   between Select(P4) and Select(P5) no longer exists.  The Select Sets

With the addition of the HOLLOW-INSERTIONS encoding instruction, the P4 and P5 productions are no longer generated, and the conflict between Select(P4) and Select(P5) no longer exists. The Select Sets

Legg                          Experimental                     [Page 75]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 75] RFC 4911 Encoding Instructions for RXER July 2007

   for P6, P7, P8, and P9 are unchanged.  A decoder will now assume that
   an unrecognized element is to be associated with extension insertion
   point I2.  It is still free to associate an unrecognized attribute
   with either extension insertion point.  If a NO-INSERTIONS encoding
   instruction had been used, then an unrecognized attribute could only
   be associated with extension insertion point I2.

for P6, P7, P8, and P9 are unchanged. A decoder will now assume that an unrecognized element is to be associated with extension insertion point I2. It is still free to associate an unrecognized attribute with either extension insertion point. If a NO-INSERTIONS encoding instruction had been used, then an unrecognized attribute could only be associated with extension insertion point I2.

   The non-determinism could also be resolved by adding a NO-INSERTIONS
   or HOLLOW-INSERTIONS encoding instruction to the outer SEQUENCE:

The non-determinism could also be resolved by adding a NO-INSERTIONS or HOLLOW-INSERTIONS encoding instruction to the outer SEQUENCE:

      [HOLLOW-INSERTIONS] SEQUENCE {
          one    [GROUP] SEQUENCE {
              two    UTF8String,
              ... -- Extension insertion point (I1).
          },
          three  INTEGER OPTIONAL,
          ... -- Extension insertion point (I2).
      }

[HOLLOW-INSERTIONS] SEQUENCE { one [GROUP] SEQUENCE { two UTF8String, ... -- Extension insertion point (I1). }, three INTEGER OPTIONAL, ... -- Extension insertion point (I2). }

   The associated grammar is:

The associated grammar is:

      P11: S ::= one three
      P2:  one ::= two I1
      P3:  two ::= "two"
      P4:  I1 ::= "*" I1
      P5:  I1 ::=
      P6:  three ::= "three"
      P7:  three ::=

P11: S ::= one three P2: one ::= two I1 P3: two ::= "two" P4: I1 ::= "*" I1 P5: I1 ::= P6: three ::= "three" P7: three ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P4) = { "*" }
      First(P5) = { }
      Preselected(P4) = Preselected(P5) = Empty(P4) = false
      Empty(P5) = true
      Follow(I1) = { "three", "$" }
      Select(P4) = First(P4) = { "*" }
      Select(P5) = First(P5) + Follow(I1) = { "three", "$" }

First(P4) = { "*" } First(P5) = { } Preselected(P4) = Preselected(P5) = Empty(P4) = false Empty(P5) = true Follow(I1) = { "three", "$" } Select(P4) = First(P4) = { "*" } Select(P5) = First(P5) + Follow(I1) = { "three", "$" }

      First(P6) = { "three" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false
      Empty(P7) = true
      Follow(three) = { "$" }
      Select(P6) = First(P6) = { "three" }
      Select(P7) = First(P7) + Follow(three) = { "$" }

First(P6) = { "three" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false Empty(P7) = true Follow(three) = { "$" } Select(P6) = First(P6) = { "three" } Select(P7) = First(P7) + Follow(three) = { "$" }

Legg                          Experimental                     [Page 76]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 76] RFC 4911 Encoding Instructions for RXER July 2007

   The intersection of Select(P4) and Select(P5) is empty, as is the
   intersection of Select(P6) and Select(P7); hence, the grammar is
   deterministic, and the type definition is valid.  A decoder will now
   assume that an unrecognized element is to be associated with
   extension insertion point I1.  It is still free to associate an
   unrecognized attribute with either extension insertion point.  If a
   NO-INSERTIONS encoding instruction had been used, then an
   unrecognized attribute could only be associated with extension
   insertion point I1.

The intersection of Select(P4) and Select(P5) is empty, as is the intersection of Select(P6) and Select(P7); hence, the grammar is deterministic, and the type definition is valid. A decoder will now assume that an unrecognized element is to be associated with extension insertion point I1. It is still free to associate an unrecognized attribute with either extension insertion point. If a NO-INSERTIONS encoding instruction had been used, then an unrecognized attribute could only be associated with extension insertion point I1.

B.2.  Example 2

B.2. Example 2

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE {
          one  [GROUP] CHOICE {
              two  UTF8String,
              ... -- Extension insertion point (I1).
          } OPTIONAL
      }

SEQUENCE { one [GROUP] CHOICE { two UTF8String, ... -- Extension insertion point (I1). } OPTIONAL }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  one ::= two
      P3:  one ::= I1
      P4:  one ::=
      P5:  two ::= "two"
      P6:  I1 ::= "*" I1
      P7:  I1 ::=

P1: S ::= one P2: one ::= two P3: one ::= I1 P4: one ::= P5: two ::= "two" P6: I1 ::= "*" I1 P7: I1 ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "two" }
      First(P3) = { "*" }
      First(P4) = { }
      Preselected(P2) = Preselected(P3) = Preselected(P4) = false
      Empty(P2) = false
      Empty(P3) = Empty(P4) = true
      Follow(one) = { "$" }
      Select(P2) = First(P2) = { "two" }
      Select(P3) = First(P3) + Follow(one) = { "*", "$" }
      Select(P4) = First(P4) + Follow(one) = { "$" }

First(P2) = { "two" } First(P3) = { "*" } First(P4) = { } Preselected(P2) = Preselected(P3) = Preselected(P4) = false Empty(P2) = false Empty(P3) = Empty(P4) = true Follow(one) = { "$" } Select(P2) = First(P2) = { "two" } Select(P3) = First(P3) + Follow(one) = { "*", "$" } Select(P4) = First(P4) + Follow(one) = { "$" }

      First(P6) = { "*" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false
      Empty(P7) = true

First(P6) = { "*" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false Empty(P7) = true

Legg                          Experimental                     [Page 77]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 77] RFC 4911 Encoding Instructions for RXER July 2007

      Follow(I1) = { "$" }
      Select(P6) = First(P6) = { "*" }
      Select(P7) = First(P7) + Follow(I1) = { "$" }

Follow(I1) = { "$" } Select(P6) = First(P6) = { "*" } Select(P7) = First(P7) + Follow(I1) = { "$" }

   The intersection of Select(P3) and Select(P4) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If the <two> element is not present, then a decoder cannot
   determine whether the "one" alternative is absent, or present with an
   unknown extension that generates no elements.

The intersection of Select(P3) and Select(P4) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If the <two> element is not present, then a decoder cannot determine whether the "one" alternative is absent, or present with an unknown extension that generates no elements.

   The non-determinism can be resolved with either a
   SINGULAR-INSERTIONS, UNIFORM-INSERTIONS, or MULTIFORM-INSERTIONS
   encoding instruction.  The MULTIFORM-INSERTIONS encoding instruction
   is the least restrictive.  Consider this revised type definition:

The non-determinism can be resolved with either a SINGULAR-INSERTIONS, UNIFORM-INSERTIONS, or MULTIFORM-INSERTIONS encoding instruction. The MULTIFORM-INSERTIONS encoding instruction is the least restrictive. Consider this revised type definition:

      SEQUENCE {
          one  [GROUP] [MULTIFORM-INSERTIONS] CHOICE {
              two  UTF8String,
              ... -- Extension insertion point (I1).
          } OPTIONAL
      }

SEQUENCE { one [GROUP] [MULTIFORM-INSERTIONS] CHOICE { two UTF8String, ... -- Extension insertion point (I1). } OPTIONAL }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one
      P2:  one ::= two
      P8:  one ::= "*" I1
      P4:  one ::=
      P5:  two ::= "two"
      P6:  I1 ::= "*" I1
      P7:  I1 ::=

P1: S ::= one P2: one ::= two P8: one ::= "*" I1 P4: one ::= P5: two ::= "two" P6: I1 ::= "*" I1 P7: I1 ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "two" }
      First(P8) = { "*" }
      First(P4) = { }
      Preselected(P2) = Preselected(P8) = Preselected(P4) = false
      Empty(P2) = Empty(P8) = false
      Empty(P4) = true
      Follow(one) = { "$" }
      Select(P2) = First(P2) = { "two" }
      Select(P8) = First(P8) = { "*" }
      Select(P4) = First(P4) + Follow(one) = { "$" }

First(P2) = { "two" } First(P8) = { "*" } First(P4) = { } Preselected(P2) = Preselected(P8) = Preselected(P4) = false Empty(P2) = Empty(P8) = false Empty(P4) = true Follow(one) = { "$" } Select(P2) = First(P2) = { "two" } Select(P8) = First(P8) = { "*" } Select(P4) = First(P4) + Follow(one) = { "$" }

      First(P6) = { "*" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false

First(P6) = { "*" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false

Legg                          Experimental                     [Page 78]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 78] RFC 4911 Encoding Instructions for RXER July 2007

      Empty(P7) = true
      Follow(I1) = { "$" }
      Select(P6) = First(P6) = { "*" }
      Select(P7) = First(P7) + Follow(I1) = { "$" }

Empty(P7) = true Follow(I1) = { "$" } Select(P6) = First(P6) = { "*" } Select(P7) = First(P7) + Follow(I1) = { "$" }

   The intersection of Select(P2) and Select(P8) is empty, as is the
   intersection of Select(P2) and Select(P4), the intersection of
   Select(P8) and Select(P4), and the intersection of Select(P6) and
   Select(P7); hence, the grammar is deterministic, and the type
   definition is valid.  A decoder will now assume the "one" alternative
   is present if it sees at least one unrecognized element, and absent
   otherwise.

The intersection of Select(P2) and Select(P8) is empty, as is the intersection of Select(P2) and Select(P4), the intersection of Select(P8) and Select(P4), and the intersection of Select(P6) and Select(P7); hence, the grammar is deterministic, and the type definition is valid. A decoder will now assume the "one" alternative is present if it sees at least one unrecognized element, and absent otherwise.

B.3.  Example 3

B.3. Example 3

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE {
          one    [GROUP] CHOICE {
              two    UTF8String,
              ... -- Extension insertion point (I1).
          },
          three  [GROUP] CHOICE {
              four   UTF8String,
              ... -- Extension insertion point (I2).
          }
      }

SEQUENCE { one [GROUP] CHOICE { two UTF8String, ... -- Extension insertion point (I1). }, three [GROUP] CHOICE { four UTF8String, ... -- Extension insertion point (I2). } }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three
      P2:  one ::= two
      P3:  one ::= I1
      P4:  two ::= "two"
      P5:  I1 ::= "*" I1
      P6:  I1 ::=
      P7:  three ::= four
      P8:  three ::= I2
      P9:  four ::= "four"
      P10: I2 ::= "*" I2
      P11: I2 ::=

P1: S ::= one three P2: one ::= two P3: one ::= I1 P4: two ::= "two" P5: I1 ::= "*" I1 P6: I1 ::= P7: three ::= four P8: three ::= I2 P9: four ::= "four" P10: I2 ::= "*" I2 P11: I2 ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P2) = { "two" }
      First(P3) = { "*" }
      Preselected(P2) = Preselected(P3) = Empty(P2) = false
      Empty(P3) = true

First(P2) = { "two" } First(P3) = { "*" } Preselected(P2) = Preselected(P3) = Empty(P2) = false Empty(P3) = true

Legg                          Experimental                     [Page 79]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 79] RFC 4911 Encoding Instructions for RXER July 2007

      Follow(one) = { "four", "*", "$" }
      Select(P2) = First(P2) = { "two" }
      Select(P3) = First(P3) + Follow(one) = { "*", "four", "$" }

Follow(one) = { "four", "*", "$" } Select(P2) = First(P2) = { "two" } Select(P3) = First(P3) + Follow(one) = { "*", "four", "$" }

      First(P5) = { "*" }
      First(P6) = { }
      Preselected(P5) = Preselected(P6) = Empty(P5) = false
      Empty(P6) = true
      Follow(I1) = { "four", "*", "$" }
      Select(P5) = First(P5) = { "*" }
      Select(P6) = First(P6) + Follow(I1) = { "four", "*", "$" }

First(P5) = { "*" } First(P6) = { } Preselected(P5) = Preselected(P6) = Empty(P5) = false Empty(P6) = true Follow(I1) = { "four", "*", "$" } Select(P5) = First(P5) = { "*" } Select(P6) = First(P6) + Follow(I1) = { "four", "*", "$" }

      First(P7) = { "four" }
      First(P8) = { "*" }
      Preselected(P7) = Preselected(P8) = Empty(P7) = false
      Empty(P8) = true
      Follow(three) = { "$" }
      Select(P7) = First(P7) = { "four" }
      Select(P8) = First(P8) + Follow(three) = { "*", "$" }

First(P7) = { "four" } First(P8) = { "*" } Preselected(P7) = Preselected(P8) = Empty(P7) = false Empty(P8) = true Follow(three) = { "$" } Select(P7) = First(P7) = { "four" } Select(P8) = First(P8) + Follow(three) = { "*", "$" }

      First(P10) = { "*" }
      First(P11) = { }
      Preselected(P10) = Preselected(P11) = Empty(P10) = false
      Empty(P11) = true
      Follow(I2) = { "$" }
      Select(P10) = First(P10) = { "*" }
      Select(P11) = First(P11) + Follow(I2) = { "$" }

First(P10) = { "*" } First(P11) = { } Preselected(P10) = Preselected(P11) = Empty(P10) = false Empty(P11) = true Follow(I2) = { "$" } Select(P10) = First(P10) = { "*" } Select(P11) = First(P11) + Follow(I2) = { "$" }

   The intersection of Select(P5) and Select(P6) is not empty; hence,
   the grammar is not deterministic, and the type definition is not
   valid.  If the first child element is an unrecognized element, then a
   decoder cannot determine whether to associate it with extension
   insertion point I1, or to associate it with extension insertion point
   I2 by assuming that the "one" component has an unknown extension that
   generates no elements.

The intersection of Select(P5) and Select(P6) is not empty; hence, the grammar is not deterministic, and the type definition is not valid. If the first child element is an unrecognized element, then a decoder cannot determine whether to associate it with extension insertion point I1, or to associate it with extension insertion point I2 by assuming that the "one" component has an unknown extension that generates no elements.

   The non-determinism can be resolved with either a SINGULAR-INSERTIONS
   or UNIFORM-INSERTIONS encoding instruction.  Consider this revised
   type definition using the SINGULAR-INSERTIONS encoding instruction:

The non-determinism can be resolved with either a SINGULAR-INSERTIONS or UNIFORM-INSERTIONS encoding instruction. Consider this revised type definition using the SINGULAR-INSERTIONS encoding instruction:

Legg                          Experimental                     [Page 80]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 80] RFC 4911 Encoding Instructions for RXER July 2007

      SEQUENCE {
          one    [GROUP] [SINGULAR-INSERTIONS] CHOICE {
              two    UTF8String,
              ... -- Extension insertion point (I1).
          },
          three  [GROUP] CHOICE {
              four   UTF8String,
              ... -- Extension insertion point (I2).
          }
      }

SEQUENCE { one [GROUP] [SINGULAR-INSERTIONS] CHOICE { two UTF8String, ... -- Extension insertion point (I1). }, three [GROUP] CHOICE { four UTF8String, ... -- Extension insertion point (I2). } }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three
      P2:  one ::= two
      P12: one ::= "*"
      P4:  two ::= "two"
      P7:  three ::= four
      P8:  three ::= I2
      P9:  four ::= "four"
      P10: I2 ::= "*" I2
      P11: I2 ::=

P1: S ::= one three P2: one ::= two P12: one ::= "*" P4: two ::= "two" P7: three ::= four P8: three ::= I2 P9: four ::= "four" P10: I2 ::= "*" I2 P11: I2 ::=

   With the addition of the SINGULAR-INSERTIONS encoding instruction,
   the P5 and P6 productions are no longer generated.  The grammar leads
   to the following sets and predicates for the P2 and P12 productions:

With the addition of the SINGULAR-INSERTIONS encoding instruction, the P5 and P6 productions are no longer generated. The grammar leads to the following sets and predicates for the P2 and P12 productions:

      First(P2) = { "two" }
      First(P12) = { "*" }
      Preselected(P2) = Preselected(P12) = false
      Empty(P2) = Empty(P12) = false
      Follow(one) = { "four", "*", "$" }
      Select(P2) = First(P2) = { "two" }
      Select(P12) = First(P12) = { "*" }

First(P2) = { "two" } First(P12) = { "*" } Preselected(P2) = Preselected(P12) = false Empty(P2) = Empty(P12) = false Follow(one) = { "four", "*", "$" } Select(P2) = First(P2) = { "two" } Select(P12) = First(P12) = { "*" }

   The sets for P5 and P6 are no longer generated, and the remaining
   sets are unchanged.

The sets for P5 and P6 are no longer generated, and the remaining sets are unchanged.

   The intersection of Select(P2) and Select(P12) is empty, as is the
   intersection of Select(P7) and Select(P8) and the intersection of
   Select(P10) and Select(P11); hence, the grammar is deterministic, and
   the type definition is valid.  If the first child element is an
   unrecognized element, then a decoder will now assume that it is
   associated with extension insertion point I1.  Whatever follows,
   possibly including another unrecognized element, will belong to the
   "three" component.

The intersection of Select(P2) and Select(P12) is empty, as is the intersection of Select(P7) and Select(P8) and the intersection of Select(P10) and Select(P11); hence, the grammar is deterministic, and the type definition is valid. If the first child element is an unrecognized element, then a decoder will now assume that it is associated with extension insertion point I1. Whatever follows, possibly including another unrecognized element, will belong to the "three" component.

Legg                          Experimental                     [Page 81]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 81] RFC 4911 Encoding Instructions for RXER July 2007

   Now consider the type definition using the UNIFORM-INSERTIONS
   encoding instruction instead:

Now consider the type definition using the UNIFORM-INSERTIONS encoding instruction instead:

      SEQUENCE {
          one    [GROUP] [UNIFORM-INSERTIONS] CHOICE {
              two    UTF8String,
              ... -- Extension insertion point (I1).
          },
          three  [GROUP] CHOICE {
              four   UTF8String,
              ... -- Extension insertion point (I2).
          }
      }

SEQUENCE { one [GROUP] [UNIFORM-INSERTIONS] CHOICE { two UTF8String, ... -- Extension insertion point (I1). }, three [GROUP] CHOICE { four UTF8String, ... -- Extension insertion point (I2). } }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one three
      P2:  one ::= two
      P13: one ::= "*"
      P14: one ::= "*1" I1
      P4:  two ::= "two"
      P15: I1 ::= "*1" I1
      P6:  I1 ::=
      P7:  three ::= four
      P8:  three ::= I2
      P9:  four ::= "four"
      P10: I2 ::= "*" I2
      P11: I2 ::=

P1: S ::= one three P2: one ::= two P13: one ::= "*" P14: one ::= "*1" I1 P4: two ::= "two" P15: I1 ::= "*1" I1 P6: I1 ::= P7: three ::= four P8: three ::= I2 P9: four ::= "four" P10: I2 ::= "*" I2 P11: I2 ::=

   This grammar leads to the following sets and predicates for the P2,
   P13, P14, P15, and P6 productions:

This grammar leads to the following sets and predicates for the P2, P13, P14, P15, and P6 productions:

      First(P2) = { "two" }
      First(P13) = { "*" }
      First(P14) = { "*1" }
      Preselected(P2) = Preselected(P13) = Preselected(P14) = false
      Empty(P2) = Empty(P13) = Empty(P14) = false
      Follow(one) = { "four", "*", "$" }
      Select(P2) = First(P2) = { "two" }
      Select(P13) = First(P13) = { "*" }
      Select(P14) = First(P14) = { "*1" }

First(P2) = { "two" } First(P13) = { "*" } First(P14) = { "*1" } Preselected(P2) = Preselected(P13) = Preselected(P14) = false Empty(P2) = Empty(P13) = Empty(P14) = false Follow(one) = { "four", "*", "$" } Select(P2) = First(P2) = { "two" } Select(P13) = First(P13) = { "*" } Select(P14) = First(P14) = { "*1" }

Legg                          Experimental                     [Page 82]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 82] RFC 4911 Encoding Instructions for RXER July 2007

      First(P15) = { "*1" }
      First(P6) = { }
      Preselected(P15) = Preselected(P6) = Empty(P15) = false
      Empty(P6) = true
      Follow(I1) = { "four", "*", "$" }
      Select(P15) = First(P15) = { "*1" }
      Select(P6) = First(P6) + Follow(I1) = { "four", "*", "$" }

First(P15) = { "*1" } First(P6) = { } Preselected(P15) = Preselected(P6) = Empty(P15) = false Empty(P6) = true Follow(I1) = { "four", "*", "$" } Select(P15) = First(P15) = { "*1" } Select(P6) = First(P6) + Follow(I1) = { "four", "*", "$" }

   The remaining sets are unchanged.

The remaining sets are unchanged.

   The intersection of Select(P2) and Select(P13) is empty, as is the
   intersection of Select(P2) and Select(P14), the intersection of
   Select(P13) and Select(P14) and the intersection of Select(P15) and
   Select(P6); hence, the grammar is deterministic, and the type
   definition is valid.  If the first child element is an unrecognized
   element, then a decoder will now assume that it and every subsequent
   unrecognized element with the same name are associated with I1.
   Whatever follows, possibly including another unrecognized element
   with a different name, will belong to the "three" component.

The intersection of Select(P2) and Select(P13) is empty, as is the intersection of Select(P2) and Select(P14), the intersection of Select(P13) and Select(P14) and the intersection of Select(P15) and Select(P6); hence, the grammar is deterministic, and the type definition is valid. If the first child element is an unrecognized element, then a decoder will now assume that it and every subsequent unrecognized element with the same name are associated with I1. Whatever follows, possibly including another unrecognized element with a different name, will belong to the "three" component.

   A consequence of using the UNIFORM-INSERTIONS encoding instruction is
   that any future extension to the "three" component will be required
   to generate elements with names that are different from the names of
   the elements generated by the "one" component.  With the
   SINGULAR-INSERTIONS encoding instruction, extensions to the "three"
   component are permitted to generate elements with names that are the
   same as the names of the elements generated by the "one" component.

A consequence of using the UNIFORM-INSERTIONS encoding instruction is that any future extension to the "three" component will be required to generate elements with names that are different from the names of the elements generated by the "one" component. With the SINGULAR-INSERTIONS encoding instruction, extensions to the "three" component are permitted to generate elements with names that are the same as the names of the elements generated by the "one" component.

B.4.  Example 4

B.4. Example 4

   Consider the following type definition:

Consider the following type definition:

      SEQUENCE OF one [GROUP] CHOICE {
          two    UTF8String,
          ... -- Extension insertion point (I1).
      }

SEQUENCE OF one [GROUP] CHOICE { two UTF8String, ... -- Extension insertion point (I1). }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one S
      P2:  S ::=
      P3:  one ::= two
      P4:  one ::= I1
      P5:  two ::= "two"
      P6:  I1 ::= "*" I1
      P7:  I1 ::=

P1: S ::= one S P2: S ::= P3: one ::= two P4: one ::= I1 P5: two ::= "two" P6: I1 ::= "*" I1 P7: I1 ::=

Legg                          Experimental                     [Page 83]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 83] RFC 4911 Encoding Instructions for RXER July 2007

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { "two", "*" }
      First(P2) = { }
      Preselected(P1) = Preselected(P2) = false
      Empty(P1) = Empty(P2) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) + Follow(S) = { "two", "*", "$" }
      Select(P2) = First(P2) + Follow(S) = { "$" }

First(P1) = { "two", "*" } First(P2) = { } Preselected(P1) = Preselected(P2) = false Empty(P1) = Empty(P2) = true Follow(S) = { "$" } Select(P1) = First(P1) + Follow(S) = { "two", "*", "$" } Select(P2) = First(P2) + Follow(S) = { "$" }

      First(P3) = { "two" }
      First(P4) = { "*" }
      Preselected(P3) = Preselected(P4) = Empty(P3) = false
      Empty(P4) = true
      Follow(one) = { "two", "*", "$" }
      Select(P3) = First(P3) = { "two" }
      Select(P4) = First(P4) + Follow(one) = { "*", "two", "$" }

First(P3) = { "two" } First(P4) = { "*" } Preselected(P3) = Preselected(P4) = Empty(P3) = false Empty(P4) = true Follow(one) = { "two", "*", "$" } Select(P3) = First(P3) = { "two" } Select(P4) = First(P4) + Follow(one) = { "*", "two", "$" }

      First(P6) = { "*" }
      First(P7) = { }
      Preselected(P6) = Preselected(P7) = Empty(P6) = false
      Empty(P7) = true
      Follow(I1) = { "two", "*", "$" }
      Select(P6) = First(P6) = { "*" }
      Select(P7) = First(P7) + Follow(I1) = { "two", "*", "$" }

First(P6) = { "*" } First(P7) = { } Preselected(P6) = Preselected(P7) = Empty(P6) = false Empty(P7) = true Follow(I1) = { "two", "*", "$" } Select(P6) = First(P6) = { "*" } Select(P7) = First(P7) + Follow(I1) = { "two", "*", "$" }

   The intersection of Select(P1) and Select(P2) is not empty, as is the
   intersection of Select(P3) and Select(P4) and the intersection of
   Select(P6) and Select(P7); hence, the grammar is not deterministic,
   and the type definition is not valid.  If a decoder encounters two or
   more unrecognized elements in a row, then it cannot determine whether
   this represents one instance or more than one instance of the "one"
   component.  Even without unrecognized elements, there is still a
   problem that an encoding could contain an indeterminate number of
   "one" components using an extension that generates no elements.

The intersection of Select(P1) and Select(P2) is not empty, as is the intersection of Select(P3) and Select(P4) and the intersection of Select(P6) and Select(P7); hence, the grammar is not deterministic, and the type definition is not valid. If a decoder encounters two or more unrecognized elements in a row, then it cannot determine whether this represents one instance or more than one instance of the "one" component. Even without unrecognized elements, there is still a problem that an encoding could contain an indeterminate number of "one" components using an extension that generates no elements.

   The non-determinism cannot be resolved with a UNIFORM-INSERTIONS
   encoding instruction.  Consider this revised type definition using
   the UNIFORM-INSERTIONS encoding instruction:

The non-determinism cannot be resolved with a UNIFORM-INSERTIONS encoding instruction. Consider this revised type definition using the UNIFORM-INSERTIONS encoding instruction:

      SEQUENCE OF one [GROUP] [UNIFORM-INSERTIONS] CHOICE {
          two    UTF8String,
          ... -- Extension insertion point (I1).
      }

SEQUENCE OF one [GROUP] [UNIFORM-INSERTIONS] CHOICE { two UTF8String, ... -- Extension insertion point (I1). }

Legg                          Experimental                     [Page 84]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 84] RFC 4911 Encoding Instructions for RXER July 2007

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one S
      P2:  S ::=
      P3:  one ::= two
      P8:  one ::= "*"
      P9:  one ::= "*1" I1
      P5:  two ::= "two"
      P10: I1 ::= "*1" I1
      P7:  I1 ::=

P1: S ::= one S P2: S ::= P3: one ::= two P8: one ::= "*" P9: one ::= "*1" I1 P5: two ::= "two" P10: I1 ::= "*1" I1 P7: I1 ::=

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { "two", "*", "*1" }
      First(P2) = { }
      Preselected(P1) = Preselected(P2) = Empty(P1) = false
      Empty(P2) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) = { "two", "*", "*1" }
      Select(P2) = First(P2) + Follow(S) = { "$" }

First(P1) = { "two", "*", "*1" } First(P2) = { } Preselected(P1) = Preselected(P2) = Empty(P1) = false Empty(P2) = true Follow(S) = { "$" } Select(P1) = First(P1) = { "two", "*", "*1" } Select(P2) = First(P2) + Follow(S) = { "$" }

      First(P3) = { "two" }
      First(P8) = { "*" }
      First(P9) = { "*1" }
      Preselected(P3) = Preselected(P8) = Preselected(P9) = false
      Empty(P3) = Empty(P8) = Empty(P9) = false
      Follow(one) = { "two", "*", "*1", "$" }
      Select(P3) = First(P3) = { "two" }
      Select(P8) = First(P8) = { "*" }
      Select(P9) = First(P9) = { "*1" }

First(P3) = { "two" } First(P8) = { "*" } First(P9) = { "*1" } Preselected(P3) = Preselected(P8) = Preselected(P9) = false Empty(P3) = Empty(P8) = Empty(P9) = false Follow(one) = { "two", "*", "*1", "$" } Select(P3) = First(P3) = { "two" } Select(P8) = First(P8) = { "*" } Select(P9) = First(P9) = { "*1" }

      First(P10) = { "*1" }
      First(P7) = { }
      Preselected(P10) = Preselected(P7) = Empty(P10) = false
      Empty(P7) = true
      Follow(I1) = { "two", "*", "*1", "$" }
      Select(P10) = First(P10) = { "*1" }
      Select(P7) = First(P7) + Follow(I1) = { "two", "*", "*1", "$" }

First(P10) = { "*1" } First(P7) = { } Preselected(P10) = Preselected(P7) = Empty(P10) = false Empty(P7) = true Follow(I1) = { "two", "*", "*1", "$" } Select(P10) = First(P10) = { "*1" } Select(P7) = First(P7) + Follow(I1) = { "two", "*", "*1", "$" }

   The intersection of Select(P1) and Select(P2) is now empty, but the
   intersection of Select(P10) and Select(P7) is not; hence, the grammar
   is not deterministic, and the type definition is not valid.  The
   problem of an indeterminate number of "one" components from an
   extension that generates no elements has been solved.  However, if a
   decoder encounters a series of elements with the same name, it cannot
   determine whether this represents one instance or more than one
   instance of the "one" component.

The intersection of Select(P1) and Select(P2) is now empty, but the intersection of Select(P10) and Select(P7) is not; hence, the grammar is not deterministic, and the type definition is not valid. The problem of an indeterminate number of "one" components from an extension that generates no elements has been solved. However, if a decoder encounters a series of elements with the same name, it cannot determine whether this represents one instance or more than one instance of the "one" component.

Legg                          Experimental                     [Page 85]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 85] RFC 4911 Encoding Instructions for RXER July 2007

   The non-determinism can be fully resolved with a SINGULAR-INSERTIONS
   encoding instruction.  Consider this revised type definition:

The non-determinism can be fully resolved with a SINGULAR-INSERTIONS encoding instruction. Consider this revised type definition:

      SEQUENCE OF one [GROUP] [SINGULAR-INSERTIONS] CHOICE {
          two    UTF8String,
          ... -- Extension insertion point (I1).
      }

SEQUENCE OF one [GROUP] [SINGULAR-INSERTIONS] CHOICE { two UTF8String, ... -- Extension insertion point (I1). }

   The associated grammar is:

The associated grammar is:

      P1:  S ::= one S
      P2:  S ::=
      P3:  one ::= two
      P8:  one ::= "*"
      P5:  two ::= "two"

P1: S ::= one S P2: S ::= P3: one ::= two P8: one ::= "*" P5: two ::= "two"

   This grammar leads to the following sets and predicates:

This grammar leads to the following sets and predicates:

      First(P1) = { "two", "*" }
      First(P2) = { }
      Preselected(P1) = Preselected(P2) = Empty(P1) = false
      Empty(P2) = true
      Follow(S) = { "$" }
      Select(P1) = First(P1) = { "two", "*" }
      Select(P2) = First(P2) + Follow(S) = { "$" }

First(P1) = { "two", "*" } First(P2) = { } Preselected(P1) = Preselected(P2) = Empty(P1) = false Empty(P2) = true Follow(S) = { "$" } Select(P1) = First(P1) = { "two", "*" } Select(P2) = First(P2) + Follow(S) = { "$" }

      First(P3) = { "two" }
      First(P8) = { "*" }
      Preselected(P3) = Preselected(P8) = false
      Empty(P3) = Empty(P8) = false
      Follow(one) = { "two", "*", "$" }
      Select(P3) = First(P3) = { "two" }
      Select(P8) = First(P8) = { "*" }

First(P3) = { "two" } First(P8) = { "*" } Preselected(P3) = Preselected(P8) = false Empty(P3) = Empty(P8) = false Follow(one) = { "two", "*", "$" } Select(P3) = First(P3) = { "two" } Select(P8) = First(P8) = { "*" }

   The intersection of Select(P1) and Select(P2) is empty, as is the
   intersection of Select(P3) and Select(P8); hence, the grammar is
   deterministic, and the type definition is valid.  A decoder now knows
   that every extension to the "one" component will generate a single
   element, so the correct number of "one" components will be decoded.

The intersection of Select(P1) and Select(P2) is empty, as is the intersection of Select(P3) and Select(P8); hence, the grammar is deterministic, and the type definition is valid. A decoder now knows that every extension to the "one" component will generate a single element, so the correct number of "one" components will be decoded.

Legg                          Experimental                     [Page 86]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 86] RFC 4911 Encoding Instructions for RXER July 2007

Appendix C.  Extension and Versioning Examples

Appendix C. Extension and Versioning Examples

   This appendix is non-normative.

This appendix is non-normative.

C.1.  Valid Extensions for Insertion Encoding Instructions

C.1. Valid Extensions for Insertion Encoding Instructions

   The first example shows extensions that satisfy the HOLLOW-INSERTIONS
   encoding instruction.

The first example shows extensions that satisfy the HOLLOW-INSERTIONS encoding instruction.

      [HOLLOW-INSERTIONS] CHOICE {
          one    BOOLEAN,
          ...,
          two    [ATTRIBUTE] INTEGER,
          three  [GROUP] SEQUENCE {
              four  [ATTRIBUTE] UTF8String,
              five  [ATTRIBUTE] INTEGER OPTIONAL,
              ...
          },
          six    [GROUP] CHOICE {
              seven  [ATTRIBUTE] BOOLEAN,
              eight  [ATTRIBUTE] INTEGER
          }
      }

[HOLLOW-INSERTIONS] CHOICE { one BOOLEAN, ..., two [ATTRIBUTE] INTEGER, three [GROUP] SEQUENCE { four [ATTRIBUTE] UTF8String, five [ATTRIBUTE] INTEGER OPTIONAL, ... }, six [GROUP] CHOICE { seven [ATTRIBUTE] BOOLEAN, eight [ATTRIBUTE] INTEGER } }

   The "two" and "six" components generate only attributes.

The "two" and "six" components generate only attributes.

   The "three" component in its current form does not generate elements.
   Any extension to the "three" component will need to do likewise to
   avoid breaking forward compatibility.

The "three" component in its current form does not generate elements. Any extension to the "three" component will need to do likewise to avoid breaking forward compatibility.

   The second example shows extensions that satisfy the
   SINGULAR-INSERTIONS encoding instruction.

The second example shows extensions that satisfy the SINGULAR-INSERTIONS encoding instruction.

      [SINGULAR-INSERTIONS] CHOICE {
          one    BOOLEAN,
          ...,
          two    INTEGER,
          three  [GROUP] SEQUENCE {
              four   [ATTRIBUTE] UTF8String,
              five   INTEGER
          },
          six    [GROUP] CHOICE {
              seven  BOOLEAN,
              eight  INTEGER
          }
      }

[SINGULAR-INSERTIONS] CHOICE { one BOOLEAN, ..., two INTEGER, three [GROUP] SEQUENCE { four [ATTRIBUTE] UTF8String, five INTEGER }, six [GROUP] CHOICE { seven BOOLEAN, eight INTEGER } }

Legg                          Experimental                     [Page 87]

RFC 4911             Encoding Instructions for RXER            July 2007

Legg Experimental [Page 87] RFC 4911 Encoding Instructions for RXER July 2007

   The "two" component will always generate a single <two> element.

The "two" component will always generate a single <two> element.

   The "three" component will always generate a single <five> element.
   It will also generate a "four" attribute, but any number of
   attributes is allowed by the SINGULAR-INSERTIONS encoding
   instruction.

The "three" component will always generate a single <five> element. It will also generate a "four" attribute, but any number of attributes is allowed by the SINGULAR-INSERTIONS encoding instruction.

   The "six" component will either generate a single <seven> element or
   a single <eight> element.  Either case will satisfy the requirement
   that there will be a single element in any given encoding of the
   extension.

The "six" component will either generate a single <seven> element or a single <eight> element. Either case will satisfy the requirement that there will be a single element in any given encoding of the extension.

   The third example shows extensions that satisfy the
   UNIFORM-INSERTIONS encoding instruction.

3番目の例は、UNIFORM-INSERTIONSを満たす拡大が指示をコード化するのを示します。

      [UNIFORM-INSERTIONS] CHOICE {
          one    BOOLEAN,
          ...,
          two    INTEGER,
          three  [GROUP] SEQUENCE SIZE(1..MAX) OF four INTEGER,
          five   [GROUP] SEQUENCE {
              six    [ATTRIBUTE] UTF8String OPTIONAL,
              seven  INTEGER
          },
          eight  [GROUP] CHOICE {
              nine   BOOLEAN,
              ten    [GROUP] SEQUENCE SIZE(1..MAX) OF eleven INTEGER
          }
      }

[一定の入] 選択1つ、ブール、…、2INTEGER、3[GROUP]SEQUENCE SIZE(1..MAX)OF4INTEGER、5[GROUP]SEQUENCE、6[ATTRIBUTE]UTF8String OPTIONAL、7INTEGER、8[GROUP]CHOICE9ブール10[GROUP]SEQUENCE SIZE(1..MAX)OF eleven INTEGER

   The "two" component will always generate a single <two> element.

「2」コンポーネントは、いつも単一の<が2>要素であると生成するでしょう。

   The "three" component will always generate one or more <four>
   elements.

「3」コンポーネントはいつも4つの>要素を1<に生成するでしょう。

   The "five" component will always generate a single <seven> element.
   It may also generate a "six" attribute, but any number of attributes
   is allowed by the UNIFORM-INSERTIONS encoding instruction.

「5」コンポーネントは、いつも単一の<が7>要素であると生成するでしょう。 また、それは「6」属性を生成するかもしれませんが、いろいろな属性が指示をコード化するUNIFORM-INSERTIONSによって許容されています。

   The "eight" component will either generate a single <nine> element or
   one or more <eleven> elements.  Either case will satisfy the
   requirement that there must be one or more elements with the same
   name in any given encoding of the extension.

「8」コンポーネントは、ただ一つの<9>要素か1<の11>が要素であると生成するでしょう。 どちらのケースも拡大のコード化を考えて、同じ名前がある1つ以上の要素がいずれにもあるに違いないという要件を満たすでしょう。

Legg                          Experimental                     [Page 88]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[88ページ]RFC4911

C.2.  Versioning Example

C.2。 例をVersioningします。

   Making extensions that are not forward compatible is permitted
   provided that the incompatibility is signalled with a version
   indicator attribute.

不一致がバージョンインディケータ属性で合図されれば、フォワード互換性がない拡大をするのは受入れられます。

   Suppose that version 1.0 of a specification contains the following
   type definition:

仕様のバージョン1.0が以下の型定義を含むと仮定してください:

      MyMessageType ::= SEQUENCE {
         version  [ATTRIBUTE] [VERSION-INDICATOR]
                      UTF8String ("1.0", ...) DEFAULT "1.0",
         one      [GROUP] [SINGULAR-INSERTIONS] CHOICE {
             two  BOOLEAN,
             ...
         },
         ...
      }

MyMessageType:、:= 系列バージョン[ATTRIBUTE][バージョン-INDICATOR]UTF8String、(「1インチ、…)、デフォルト、「1インチ、1つ[グループ]の[まれな入]選択2論理演算子、……、」

   An attribute is to be added to the CHOICE for version 1.1.  This
   change is not forward compatible since it does not satisfy the
   SINGULAR-INSERTIONS encoding instruction.  Therefore, the version
   indicator attribute must be updated at the same time (or added if it
   wasn't already present).  This results in the following new type
   definition for version 1.1:

属性はバージョン1.1のためにCHOICEに加えられることです。 指示をコード化するSINGULAR-INSERTIONSを満たさないので、この変化はフォワード互換性がありません。 したがって、同時に(または、それが既に存在していなかったなら、加えられる)、バージョンインディケータ属性をアップデートしなければなりません。 これはバージョン1.1のための以下の新しい型定義をもたらします:

      MyMessageType ::= SEQUENCE {
         version  [ATTRIBUTE] [VERSION-INDICATOR]
                      UTF8String ("1.0", ..., "1.1") DEFAULT "1.0",
         one      [GROUP] [SINGULAR-INSERTIONS] CHOICE {
             two    BOOLEAN,
             ...,
             three  [ATTRIBUTE] INTEGER -- Added in Version 1.1
         },
         ...
      }

MyMessageType:、:= 系列バージョン[ATTRIBUTE][バージョン-INDICATOR]UTF8String、(「1インチ、…、「1.1インチ) デフォルト、「1インチ、1つ[グループ]の[まれな入]選択2論理演算子、…、3[属性]整数--バージョン1.1を加える…、」

   If a version 1.1 conformant application hasn't used the version 1.1
   extension in a value of MyMessageType, then it is allowed to set the
   value of the version attribute to "1.0".

バージョン1.1conformantアプリケーションがMyMessageTypeの値にバージョン1.1拡張子を使用していないなら、それは「1インチ」にバージョン属性の値を設定できます。

   A pair of elements is added to the CHOICE for version 1.2.  Again the
   change does not satisfy the SINGULAR-INSERTIONS encoding instruction.
   The type definition for version 1.2 is:

1組の要素はバージョン1.2のためにCHOICEに加えられます。 一方、変化は指示をコード化するSINGULAR-INSERTIONSを満たしません。 バージョン1.2のための型定義は以下の通りです。

Legg                          Experimental                     [Page 89]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[89ページ]RFC4911

      MyMessageType ::= SEQUENCE {
         version  [ATTRIBUTE] [VERSION-INDICATOR]
                      UTF8String ("1.0", ..., "1.1" | "1.2")
                          DEFAULT "1.0",
         one      [GROUP] [SINGULAR-INSERTIONS] CHOICE {
             two    BOOLEAN,
             ...,
             three  [ATTRIBUTE] INTEGER, -- Added in Version 1.1
             four   [GROUP] SEQUENCE {
                 five  UTF8String,
                 six   GeneralizedTime
             } -- Added in version 1.2
         },
         ...
      }

MyMessageType:、:= 系列バージョン[ATTRIBUTE][バージョン-INDICATOR]UTF8String、(「1インチ、…、「1.1インチ|、「1.2インチ) デフォルト、「1インチ、1つ[グループ]の[まれな入]選択2論理演算子、…、3[属性]整数--バージョン1.1 4[グループ]系列で、5UTF8String、6GeneralizedTimeを加えます--バージョン1.2を加える…、」

   If a version 1.2 conformant application hasn't used the version 1.2
   extension in a value of MyMessageType, then it is allowed to set the
   value of the version attribute to "1.1".  If it hasn't used either of
   the extensions, then it is allowed to set the value of the version
   attribute to "1.0".

バージョン1.2conformantアプリケーションがMyMessageTypeの値にバージョン1.2拡張子を使用していないなら、それは「1.1インチ」にバージョン属性の値を設定できます。 どちらの拡大も使用していないなら、それは「1インチ」にバージョン属性の値を設定できます。

Author's Address

作者のアドレス

   Dr. Steven Legg
   eB2Bcom
   Suite 3, Woodhouse Corporate Centre
   935 Station Street
   Box Hill North, Victoria 3129
   AUSTRALIA

スティーブンLegg eB2Bcom Suite博士3、北のウッドハウス法人のセンター935駅の通りBoxヒル、ビクトリア・3129オーストラリア

   Phone: +61 3 9896 7830
   Fax:   +61 3 9896 7801
   EMail: steven.legg@eb2bcom.com

以下に電話をしてください。 +61 3 9896 7830、Fax: +61 3 9896 7801はメールされます: steven.legg@eb2bcom.com

Legg                          Experimental                     [Page 90]

RFC 4911             Encoding Instructions for RXER            July 2007

2007年7月にRXERのために指示をコード化するLeggの実験的な[90ページ]RFC4911

Full Copyright Statement

完全な著作権宣言文

   Copyright (C) The IETF Trust (2007).

IETFが信じる著作権(C)(2007)。

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

このドキュメントはBCP78に含まれた権利、ライセンス、および制限を受けることがあります、そして、そこに詳しく説明されるのを除いて、作者は彼らのすべての権利を保有します。

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

このドキュメントとここに含まれた情報はその人が代理をするか、または(もしあれば)後援される組織、インターネットの振興発展を目的とする組織、「そのままで」という基礎と貢献者の上で提供していて、IETFはそして、インターネット・エンジニアリング・タスク・フォースがすべての保証を放棄すると信じます、急行である、または暗示していて、他を含んでいて、情報の使用がここに侵害しないどんな保証も少しもまっすぐになるということであるかいずれが市場性か特定目的への適合性の黙示的な保証です。

Intellectual Property

知的所有権

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

IETFはどんなIntellectual Property Rightsの正当性か範囲、実装に関係すると主張されるかもしれない他の権利、本書では説明された技術の使用またはそのような権利の下におけるどんなライセンスも利用可能であるかもしれない、または利用可能でないかもしれない範囲に関しても立場を全く取りません。 または、それはそれを表しません。どんなそのような権利も特定するどんな独立している取り組みも作りました。 BCP78とBCP79でRFCドキュメントの権利に関する手順に関する情報を見つけることができます。

   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.

IPR公開のコピーが利用可能に作られるべきライセンスの保証、または一般的な免許を取得するのが作られた試みの結果をIETF事務局といずれにもしたか、または http://www.ietf.org/ipr のIETFのオンラインIPR倉庫からこの仕様のimplementersかユーザによるそのような所有権の使用のために許可を得ることができます。

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

IETFはこの規格を実装するのに必要であるかもしれない技術をカバーするかもしれないどんな著作権もその注目していただくどんな利害関係者、特許、特許出願、または他の所有権も招待します。 ietf-ipr@ietf.org のIETFに情報を扱ってください。

Acknowledgement

承認

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

RFC Editor機能のための基金は現在、インターネット協会によって提供されます。

Legg                          Experimental                     [Page 91]

Legg実験的です。[91ページ]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

ファイルのテキストデータを読み込む

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る