X680 14 引用類型和值定義

14 引用類型和值定義

14.1 定義類型和值的表達式:

       DefinedType ::=

              ExternalTypeReference

              | typereference

              | ParameterizedType

              | ParameterizedValueSetType

 

       DefinedValue ::=

              ExternalValueReference

              | valuereference

              | ParameterizedValue

      

       定義了引用類型和值的定義。ParameterizedType和ParameterizedValueSetType的類型和ParameterizedValue定義的值在X683中詳細定義。

 

       14.2 NonParameterizedTypeName表達式:

       NonParameterizedTypeName ::=

              ExternalTypeReference

              | typereference

              | xmlasn1typename

 

       該表達式在當XML標籤名稱用於代表ASN.1類型的時候使用。如果XML標籤名稱起始字符串是“XML”,那麼短橫線應用被用於構成NonParameterizedTypeName結構。

      

14.3 當XML值標識用於ASN.1模塊中時,如果xmlasn1typename是CHOICE, ENUMERATED, SEQUENCE, SEQUENCE_OF, SET或SET_OF,那麼XMLValueAssignment(詳見16.2)或XMLOpenTypeFieldVal(詳見X681 14.6)的XMLTypedValue不應該使用NonParameterizedTypeName選項。

       注-在ASN.1模塊中使用XML值標識加上該約束的主要原因是xmlasn1typename沒有定義ASN.1類型。該規則對在編碼規則(例如X693定義的XER編碼)中使用該標識無效,因爲由xmlasn1typename構成的XML標籤名稱並不用於決定編碼類型。

 

       14.4 除13.19定義外,typereference,valuereference,ParameterizedType或ParameterizedValueSetType,ParameterizedValue選項不應該在ModuleBody中使用,除非ModuleBody中定義的應用的類型或值(詳見16.1和16.2)是分配給typereference或valuereference。

 

       14.5 在ModuleBody中定義對應的modulereference的時候,ExternalTypeReference和ExternalValueReference只有在以下條件之一情況下才能使用:

       a) 對應typereference或valuereference已經各自分配了值和類型;或

       b) 對應typereference或valuereference在Imports部分。

從另外一個模塊的Imports部分引用名稱只有在那麼模塊的Imports部分只包含1個Symbol。

       注-這裏不禁止在兩個不同模塊中定義相同的Symbol,然後被引入到另外一個模塊。然而,如果在模塊A的Imports中相同Symbol出現多次,那麼那個Symbol不可以通過模塊A的外部引用方式引用。

 

       14.6 外部引用用於在一個模塊中請求另外一個模塊定義的引用名稱,定義的表達式如下:

       ExternalTypeReference ::=

              modulereference

              “.”

              typereference

 

       ExternalValueReference ::=

              modulereference

              “.”

              valuereference

       注-其他外部引用表達式(ExternalClassReference,ExternalObjectReference, ExternalObjectSetReference)在X681中定義。

 

       14.7 當引用模塊是使用Imports的SymbolsImported選項定義,外部引用中的modulereference應該作爲SymbolsImported中的GlobalModuleReference中的SymbolsFromModule確切一員出現。當引用模塊使用Imports的empty選項定義,外部引用中的modulereference應該出現在模塊的Reference定義的ModuleDefinition中。

 

       14.8 當Type使用DefinedType作爲標識的一部分(例如,在SubtypeConstraint),那麼DefinedType應用兼容於控制它的Type。C.6.2定義該部份。

 

       14.9 ASN.1規範中,DefinedType的每個事件都是被Type控制,DefinedType引用的某一類型的值應該與控制Type兼容。C.6.2定義該部份。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章