信息技术 ASN.1编码规则 第5部分:W3C XML模式定义到ASN.1的映射 征求意见稿_第1页
信息技术 ASN.1编码规则 第5部分:W3C XML模式定义到ASN.1的映射 征求意见稿_第2页
信息技术 ASN.1编码规则 第5部分:W3C XML模式定义到ASN.1的映射 征求意见稿_第3页
信息技术 ASN.1编码规则 第5部分:W3C XML模式定义到ASN.1的映射 征求意见稿_第4页
信息技术 ASN.1编码规则 第5部分:W3C XML模式定义到ASN.1的映射 征求意见稿_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1GB/T16263.5—xxxx/ISO/IEC8825-5:2021信息技术ASN.1编码规则第5部分:W3CXML模式定义到ASN.1GB/T16263的本文件规定了从任何XSD模式到ASN.1模式进行映射的两种版本。两种版本的ASN.1模式支持相同的语义,而且还可验证XML文档的相同集合。本文件规定了最终XER编码指令,这些指令将作为ASN.1类型定义映射的一部分应用,不规定用于最终XER编码指令规范的语法形式,或其赋值顺序或方法。注:映射生成工具的实现可以选择任何语法格式或赋值顺序,用以产生所要应用的规定的最终XER编码指令。本文件的示例一般使用类型前缀格式,但是作为一种习惯,XER编码控制部分的使用对于完整XSD的映射可能是最有不同的(语法的)方法将XER编码指令分配给EXTENDED-XER编码使用(如,使用ASN.1类型前缀编码指令或使用XER编码控制区)。语法格式的选择是习惯问题,不属于本文件的范围。2规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T16262.1—xxxx信息技术抽象语法记法一(ASN.1)第1部分:基本记法规范(ISO/IEC8824-1:2021,IDT)GB/T16262.2—xxxx信息技术抽象语法记法一(ASN.1)第2部分:信息客体规范(ISO/IEC8824-2:2021,IDT)GB/T16262.3—xxxx信息技术抽象语法记法一(ASN.1)第3部分:约束规范(ISO/IEC8824-GB/T16262.4—xxxx信息技术抽象语法记法一(ASN.1)第4部分:ASN.1规范的参数化(ISO/IEC8824-4:2021,IDT)GB/T16263.1—xxxx信息技术ASN.1编码规则则(CER)和非典型编码规则(DER)的规范(ISO/IECGB/T16263.2—xxxx信息技术ASN.1编码规则(ISO/IEC8825-2:2021,IDT)GB/T16263.4—xxxx信息技术ASN.1编码规则8825-4:2021,IDT)第1部分:基本编码规则(BER)、正则编码规8825-1:2021,IDT)第4部分:XML编码规则(XERISO/IECISO/IEC8825-3:2021信息技术ASN.1编码规则.第3部分:编码码控制记法的规范(ECN)(Informationtechnology-ASN.1encodingrules:SpecificationofEncodingControlNotation(ECN))ISO/IEC24824-1:2007信息技术ASN.1一般应用第1部分:快速信息集(Informationtechnology—GenericapplicationsofASN.1:Fastinfoset)2GB/T16263.5—xxxx/ISO/IEC8825-5:2021ISO/IEC8601:2019e和时间信息交换表示法(eandtime—Representationforinformationinterchange)W3CXML1.0:2008可扩展置标语言(XML)1.0(第五版)[ExtensibleMarkupLanguage(XML)1.0(FifthEdition)]W3CXMLNamespaces:1999XML中的名称空间(NamespacesinXML)W3CXMLInformationSet:2004XML信息集(第二版)[W3CXMLInformationSet(SecondEdition)]W3CXMLSchema:2004XML模式第1部分:结构(第二版)[W3CXMLSchemaPart1:Structures(SecondEdition)]W3CXMLSchema:2004XML模式第2部分:数据类型(第二版)[W3CXMLSchemaPart2:Data-types(SecondEdition)]注1:以上W3C文件可从获得,W3注2:本文件中引用“W3CXML模式”IETFRFC2396(1998)通用资源标识符(URI):通用语法[Uniformresourceidentifiers(URI):Genericsyntax]IETFRFC3066(2001)用于识别语言的标签(TagsfortheIdentificationofLanguages)3术语和定义下列术语和定义适用于本文件。3.1导入定义3.1.1GB/T16262.1—xxxx和GB/T16263.4—xxxx界定的术语和定义适用于本文件。注:特别需要指出的是,术语“最终XER编码指令”“类型前缀”和“XER编码控制部分”是在本条提及的标准中3.1.2W3CXML模式和W3CXML信息集界定的术语和定义适用于本文件。注1:确信这些术语与3.1.1引用的术语没有冲突,如果出现冲突,则注2:特别需要指出的是,术语“模式组件”在W3CXML模式中定义,术语“元素信息项”和3.2附加定义下列附加的术语和定义适用于本文件。3.2.1XSD名称空间:具有URI“/2001/XMLSchema”的名称空间。3.2.2XSI名称空间:具有URI“/2001/XMLSchema-instance”的名称空间。3.2.3XML名称空间:具有URI“/XML/1998/namespace”的名称空间。4缩略语下列缩略语适用于本文件。ASN.1抽象语法记法一(AbstractSyntaxNotationOne)BER基本编码规则(BasicEncodingRules)DER非典型编码规则(DistinguishedEncodingRules)3GB/T16263.5—xxxx/ISO/IEC8825-5:2021OID对象标识符(ObjectIdentifier)PER紧缩编码规则(PackedEncodingRules)URI统一资源标识符(UniformResourceIdentifier)XERXML编码规则(XMLEncodingRules)XML可扩展置标语言(ExtensibleMarkupLanguage)XSDXML模式(XMLSchema)5记法5.1本文件引用了GB/T16262.1—xxxx、GB/T16262.3—xxxx、W3CXML1.0和W3CXML模式定义的记法。5.2当有必要在本文件主体部分中正式或举例指定XER编码指令的分配时,一般使用类型前缀记法(也有例外,见6.3和6.4)。附录A中使用的是XER编码控制部分。5.3在本文件中,汉字部分使用大标宋字体表示ASN.1记法,使用楷体字体表示XSD记法以及XSD术语和概念。英文部分使用加粗Courier字体表示ASN.1记法,使用加粗Arial字体表示XSD记法以及XSD术语和概念。5.4本文件示例中的XSD模式使用前缀xsd:来标识XSD名称空间。6标准化的目的和程度6.1本文件规定的到ASN.1的映射旨在确保:a)使用符合本文件的工具(根据相同的XSD模式)生成的任何ASN.1模块都定义相同的(结构化的)抽象值;b)所生成的ASN.1规范的所有BASIC-XER、CXER、EXTENDED-XER和二进制编码都将产生相同编码(依编码器选择而定);c)符合源XSD模式的所有源XSD文档都是该ASN.1规范中抽象值的有效的EXTENDED-XER编码。6.2ASN.1定义有很多方面(如,空白符、编码控制部分或类型前缀等的使用它们既不影响所定义的抽象值,也不影响这些值的XER或二进制编码。本文件中一般不对ASN.1定义的这些方面加以标准化。6.3在ASN.1中,对类型分配XER编码指令有许多不同的方法,包括:a)对每个待分配的编码指令使用类型前缀;b)使用编码控制部分时,对每个所要求的分配使用分开的编码指令;c)使用编码控制部分时,单个编码指令构造全局分配,对某些特殊类型可通过使用否定编码指令来补充。6.4本文件规定了最终XER编码指令的使用时机,大部分示例使用6.3a)给出的语法。不过,并未对6.3中不同选项的使用加以标准化,符合本文件的映射实现可以选择任一种语法形式(或混合的语法形式)分配最终XER编码指令。6.5不提供所要求的映射的格式规范。6.6本文件仅关注符合W3CXML模式的XSD模式的映射。注:可以由一个或者多个W3CXSD模式文档提供这种符合性,也可以由W3CXML模式描述的其他方法提供这种符合4GB/T16263.5—xxxx/ISO/IEC8825-5:20217XSD模式映射7.1XSD模式映射基于源XSD模式,该模式是一组模式组件(见W3CXML模式第1部分的2.2)。虽然通常很可能以一个或多个XML模式文档(见W3CXML模式第1部分的3.15.2)的方式提供源XSD模式,但映射时并不要求或假设模式组件或一组模式组件的具体表现形式。注1:表现为多XML模式文档的模式组件,通过使用xsd:include、xsd:redefine,以及xsd:import元素信息注2:因为该映射是用模式组件(而不是用它们的XML表现形式)定义的,所以不受XML细节表现(例如,使用xsd:include和xsd:redefine元素信息项链接的多模式文档,一个或另一个模式文档中元素信息项的位置,xsd:complexType元素信息项中的xsd:attribute元素信息项的顺序等)的影注3:两个有许多不同、但用于表现相同模式组件集的模式文档集,它们生成相同的ASN.1类型赋值集,所具有的7.2源XSD模式应满足XSD规范强制的所有约束。如果源XSD模式(部分或全部)表现为一组XML模式文档,那么,依照XSD模式产生的每个模式文档都应是有效的(见W3CXML模式第1部分的附录A)。7.3对于一个源XSD模式应生成一个或多个ASN.1模块。实现时,所生成的ASN.1模块的数量是可选的。每个ASN.1模式应包含与顶层模式组件(见7.6)相对应的零个或多个类型赋值,以及零个或多个特殊ASN.1类型赋值(见第29章、第30章和第31章)。实现时,每个ASN.1模块中类型赋值的物理顺序是可选的。当生成多个ASN.1模块时,实现时,在那些ASN.1模块上分布所生成的类型赋值的方法也是可选的。注1:本条款许可同一个ASN.1模块中包含根据XSD模式组件生成的、具有不同目标名称空间的类型赋值,但是并不推荐。首选的映射是尽可能每个名称空间生成一个ASN.1模块。也推荐,将每个特殊ASN.1类型赋值作为其关联的ASN.1类型赋值插入到同一个ASN.1模块中(见29.5、30.注2:ASN.1类型赋值的生成(见7.6和10.4)不受待生成的ASN.1模块数量的影响(除了可能按10.2.2规定使用“ExternalTypeReference”的情况外),不受在那些模块上分布已生成的类型赋值的方法的影响,不受每个模型中类型赋值的物理顺序的影响。特别是,这些类型赋值的类型引用名都是相同的,而不管实现时所使用的是哪种映射风格。注3:W3CXML名称空间的名称空间概念和ASN.1中的命名之间关系的完整描述见GB/T16263.4—XXXX中第16章。通过使用NAMESPACE编码指令来分配ASN.1模块中定义的类型引用名和标识符,否则没有名称空间。在需要的地7.4由映射生成的所有ASN.1模块都(在XER编码控制部分)包含一条GLOBAL-DEFAULTSMODI-FIED-ENCODINGS编码指令和一条GLOBAL-DEFAULTSCONTROL-NAMESPACE编码指令,用以指定XSI名称空间。7.5源XSD模式按以下所述方式处理:a)对于每一个顶层元素声明,应通过对该元素声明应用第14章来生成一个ASN.1类型赋值;b)对于每一个顶层属性声明,应通过对该属性声明应用第15章来生成一个ASN.1类型赋值;c)对于每一个顶层简单类型定义,应通过对该简单类型定义应用第13章来生成一个ASN.1类型赋值;d)对于每一个顶层复杂类型定义,应通过对该复杂类型定义应用第20章来生成一个ASN.1类型赋值;e)对于每一个模块组定义(其模块组有一个序列组合符或选择应通过对该模块组定义应用第17章来生成一个ASN.1类型赋值分配。注1:源XSD模式剩余的模式组件将作为这些模式5GB/T16263.5—xxxx/ISO/IEC8825-5:2021注2:有待映射的模式组件的顺序在10.4中说明。以上列项7.6表1的第1列是模式组件,第2列引用W3CXMLSchema中定义该模式组件的条款,第3列是本文件中定义这些模式组件到ASN.1中的映射的章。表1XSD模式组件8忽略的模式组件和性质定义映射的章属性描述元素描述复杂类型定义第1部分的3.4属性使用属性组定义第1部分的3.6未按之映射模块组定义第1部分的3.7模块组第1部分的3.8粒子第1部分的3.9通配符第1部分的3.10个性约束定义第1部分的3.11映射忽略注释声明第1部分的3.12映射忽略声明第1部分的3.13映射忽略简单类型定义第1部分的3.14模式第1部分的3.15序列第2部分的映射忽略边界第2部分的映射忽略基数第2部分的映射忽略数值第2部分的映射忽略长度第2部分的最小长度第2部分的最大长度第2部分的样本第2部分的枚举第2部分的第2部分的包括最大值第2部分的除去最大值第2部分的除去最小值第2部分的包括最小值位数小数数字8.1在本章所列出的模式组件和性质应予以忽略。8.2所有注释(见W3CXML模式第1部分的3.13)应予以忽略。注:一个模式文档,如果它具有的名是使用不同于XSD名称空间(见W3CXML模式第1部分的3.13.1)的名称空间6GB/T16263.5—xxxx/ISO/IEC8825-5:20218.3所有标识约束定义(见W3CXML模式第1部分的3.11)应予以忽略。注:标识约束定义提供用于规定引用约束的机制,这种机制可能是某个有效实例要求的。目前,ASN.1没有此类约束概念,而且这种约束也不能映射到一个正式的ASN.1规范中。但是它们可以纳入作为规范性注解,绑定在应8.4所有记法声明(见W3CXML模式第1部分的3.12)应予以忽略。8.5元素声明(见W3CXML模式第2部分的4.2)的基本方面(排序、定界、基数、数值)的模式组件应予以忽略。8.6元素声明的个性约束、替代组拒绝以及不允许替代等性质应予以忽略。8.7复杂类型定义的最终、抽象及禁止的替代等性质应予以忽略。8.8通配符的过程内容性质应予以忽略。8.9简单类型定义的基本方面和最终性质应予以忽略。8.10所有出现在任何元素声明或属性声明(其类型定义是xsd:QName,或者是派生于xsd:QName或xsd:NOTATION的元素声明)上的值约束应予忽略。8.11所有属性组定义应予以忽略。注:属性组定义中的属性用途成为复杂类型定义的属性用途的一部分,复杂类型定义的XML表现包含了对属性组定9ASN.1模块9.1XSD模式的映射生成一个或多个ASN.1模块(见7.3)。9.2此映射生成的ASN.1“ModuleIdentifier”(见GB/T16262.1—XXXX的第13章)没有标准化。在IMPORTS声明的地方,该IMPORTS声明中的ASN.1模块名和模块标识符应该是针对此映射生成的ASN.1模块所生成的模块名和模块标识符。9.3ASN.1模块的AUTOMATICTAGS应为“TagDefault”。9.4在第一版映射生成的每个ASN.1模块中,应有一个ASN.1IMPORTS声明,用于向按照附录A规定命名为XSD{joint-iso-itu-tasn1(1)specification(0)modules(0)xsd-module(2)version1(1)}的模块导入那些在该ASN.1模块中引用的ASN.1类型引用名。9.5在第二版映射生成的每个ASN.1模块中,应有一个ASN.1IMPORTS声明,用于向按照附录B规定命名为XSD{joint-iso-itu-tasn1(1)specification(0)modules(0)xsd-module(2)version1(2)}的模块导入那些在该ASN.1模块中引用的ASN.1类型引用名。注:本文件中的术语“XSD模块”指的是附录A(第一版映射)或附录B(第二版映射)的模块,具体取决于映射的9.6IMPORTS声明也应导入在其他的ASN.1模块中已有的(映射产生的)而在本ASN.1模块中引用的类型赋值的ASN.1类型引用名。9.7不应该有EXPOPTS声明。注:这意味着ASN.1模块中所有的ASN.1类型引用名10名称转换10.1概述7GB/T16263.5—xxxx/ISO/IEC8825-5:202110.1.1本文件规范了以下各项的生成:a)ASN.1类型引用名应与模型组定义、顶层元素声明、顶层属性声明、顶层复杂类型定义、以及顶层简单类型定义的名称保持一致;b)ASN.1标识与顶层元素声明、顶层属性声明、本地元素声明、以及本地属性声明的名称保持一致;c)ASN.1标识具有枚举约束的某些简单类型定义的映射(见12.4.1和12.4.2);d)特定类型赋值(见第29章、第30章和第31章)的ASN.1类型引用名;e)映射引入的某些序列组件的ASN.1标识符(见第20章)。10.1.2通过应用10.3,针对模式组件名称,或针对某侧面的枚举值,或针对规定的字符串,按照本文件有关章条的规定生成所有这些ASN.1名。10.2引用ASN.1类型赋值生成ASN.1类型定义10.2.1本条由本文件的其他条明确调用生成引用ASN.1类型赋值的ASN.1类型定义(“Defied-Type”)。10.2.2如果“DefinedType”被插入一个ASN.1模块(例如M),而不是其他ASN.1模块,参考的ASN.1类型赋值也将被插入。作为实现时的选项,“DefinedType”应是“typereference”或“ExternalTypeReference”,不是“ExternalTypeReference”类型赋值,就是“typereference”类型赋值。注:对于任何合法输入模式,映射所创建的所有ASN.1“typereference”都是唯一的,因此,不必将一个在其他ASN.1模块中定义了的类型作为“ExternalTypeReferen10.3标识符和类型引用名的生成10.3.1本条通过本文件其他条明确调用来生成ASN.1类型引用名或标识符。10.3.2属性声明、元素声明、模型组定义、顶层简单类型定义以及顶层复杂类型定义的名称可以和ASN.1的保留关键字相同,也可以包含ASN.1标识符或ASN.1类型引用名中不允许出现的字符。另外,存在这种情况,ASN.1名需区别于对应XSD模式组件的名。10.3.3应该对要映射到ASN.1名的每个字符串依次应用下列转换步骤,在此情况下,每步转换(第一步除外)应用于前一步转换的结果:——字符“”(空格)、“.”(英文句号)和“_”(下划线)应全部替换为“-”(减号连字);——除了“A”到“Z”(大写拉丁字母A到Z)、“a”到“z”(小写拉丁字母a到z)、“0”到“9”(数字0到9)以及“-”(减号连字符)外的字符应删除;——连接串中的两个或多个减号连接符应替换为单个减号连接符;——出现在名开始和结尾的减号连接符应删除;——用作类型引用名的字符串如果以小写字母开头,则第一个字母应大写(转换成大写);如果以数字(数字0到9)开头,应在前面加一个“X”(大写字母X)字符;——用作标识符的字符串如果以大写字母开头,则第一个字母应小写(转换成小写);如果以数字(数字0到9)开头,应在前面加一个“X”(大写字母X)字符;——用作类型引用名的字符串如果为空,应用“X”(大写字母X)字符替换;——用作标识符的字符串如果为空,应用“X”(大写字母X)字符替换。10.3.4根据将生成的名称的种类,应用下面三条中的一条。如果生成的名是ASN.1类型赋值的类型引用名,并且通过10.3.3生成的名的字符串标识8GB/T16263.5—xxxx/ISO/IEC8825-5:2021a)通过映射(在任何ASN.1模块中)预先生成的其他ASN.1类型赋值的类型引用名;b)XSD模块中(见附录A)的类型赋值的类型引用名;c)GB/T16262.1—XXXX的12.38规定的保留字。那么在10.3.3中生成的字符串应附加一个后缀。后缀由一个减号连字符及其后随的整数的正则词汇表示(见W3CXMLSchema第2部分的2.3.1)组成。这个整数应该是最小正整数,从而使这个新名称和任何其他先前生成(在任何ASN.1模块中)的ASN.1类型赋值的类型引用名不同。注:作为这条规则的结果,所有在ASN.1规范中定义的类型引用名都从源XSD模式(包括XSD模块中定义的标准类型引用)生成,所有引用名在ASN.1规范中都将是唯一的。它允许以最大灵活性从ASN.1类型赋值生成类型引用如果生成的名称是一个序列、集合或选择类型的组件的标识符,并且按10.3.3生成的字符串和先前生成的同一个序列、集合或选择类型的组件的标识符相同,那么应按10.3.3生成的这个字符串加后缀。后缀由一个减号连字符及其后随的整数的正则词汇表式(见W3CXMLSchema第2部分的2.3.1)组成。这个后缀的整数应该是最小正整数,从而使这个新名称和任何其他先前生成的那个序列、集合或者选择类型的组件的标识符不同。如果生成的名称是一个枚举类型的“EnumerationItem”中的“identifier”,且按“identifier”相同,那么应按10.3.3生成的这个字符串加上后缀。后缀由一个减号连字符及其后随的整数的正则词汇表示(见W3CXMLSchema第2部分的2.3.1)组成。这个后缀的整数应该是最小正整数,从而使这个新标识符和该ASN.1枚举类型中已经出现的任何其他“EnumerationItem”中的标识符不同。10.3.5对于将10.3应用于元素声明、属性声明、顶层复杂类型定义,或者顶层简单类型定义的名称生成的ASN.1类型引用名(或标识符),如果所生成的这个ASN.1类型引用名(或标识符)和相关的名称不同,则应按下面三条的规定给带有该类型引用名的ASN.1类型赋值(或带有该标识的组件)分配一个最终NAME编码指令。如果仅是首字母的区别(即类型引用名中是大写字母而名称中的是小写字母),那么NAME编码指令中的“Keyword”就应是UNCAPITALIZED。如果仅是首字母的区别(即标识符中是小写字母而名称中的是大写字母),那么NAME编码指令中的“Keyword”就应是CAPITALIZED。否则,NAME编码指令中的“NewName”就应是该名称。<xsd:complexTypename="COMPONENTS"><xsd:elementname="Elem"type="xsd:<xsd:elementname="elem"type="xsd:integer"/><xsd:elementname="Elem-1"type="xsd:boo<xsd:elementname="elem-1"type="xsd:integer"上面的列子映射为ASN.1类型赋值:COMPONENTS-1∷=[NAMEAS"COMPONENTS"]SEQUENCE{elem[NAMEASCAPITALIZED]BOOLEAN,9GB/T16263.5—xxxx/ISO/IEC8825-5:2021elem-1[NAMEAS"elem"]INTEGER,elem-1-1[NAMEAS"Elem-1"]BOOLEAN,elem-1-2[NAMEAS"elem-1"]INTEGER}10.3.6对于通过将10.3应用于元素声明、属性声明、顶层复杂类型定义,或者顶层简单类型定义的名生成的ASN.1类型引用名(或标识符),如果模式组件的目标名称空间不是不存在的,则最终NAME-SAPCE编码指令应分配给带有类型引用名的ASN.1类型赋值(或是分配给那个标识符已命名了的类型),且应说明这个模式组件的目标名称空间。10.3.7对于通过将10.3映射于带有枚举约束的简单类型定义生成ASN.1标识,生成的标识与对于的枚举约束值的名不同,最终TEXT编码指令应分配给ASN.1枚举类型,质量信息规定在枚举类型的“EnumerationItem”中的“identifier”。下面两条中的一条适用。如果仅是首字母不同(在标识符中是小写,在枚举约束的某个值中是大写),那么TEXT编码指令中的“Keyword”就应是CAPITALIZED。否则,TEXT编码指令中的“NewName”应是枚举约束的某个值。10.4映射次序10.4.1要确定在源XSD模式的顶层模型组件上执行映射的次序。这适用于模型组定义、顶层复杂类型定义、顶层简单类型定义、顶层属性声明,以及顶层元素声明。注:其他顶层模式组件不映射到ASN.1,XSD内置10.4.2下面三条规定了映射排序。对于顶层模式组件,首先按它们的目标名称空间排序,排序时,将缺省名称空间置于XSD模式中规定的所有名称空间名称之前,以词典编撰顺序的升序排序排列。在每一个目标名称空间中,顶层模式组件应分为如下排序的四个集合:a)元素声明;b)属性声明;c)复杂类型定义和简单类型定义;d)模型组定义。每个集合(见)中,模式组件按名称,以词典编撰顺序的升序排序。10.4.3两个ASN.1类型赋值集通过下述映射生成:a)一个ASN.1类型赋值集(见第13章、第14章、第15章、第17章以及第20章)与顶层模式组件直接对应,它们的类型引用名来自没有后缀的模式组件名;b)另一个ASN.1类型赋值集(见第29章、第30章以及第31章)与顶层模式组件的特殊应用相对应,它们的类型引用名由带后缀模式组件名称生成。注:源XSD模式中的每个顶层模式组件,最多能生成一个10.4.3a)中集合的ASN.1类型赋值,但在10.4.3b)集合中所列的ASN.1类型赋值可以生成多个A10.4.4在10.4.3a)中的ASN.1类型赋值集,应按照所对应的XSD模式组件(见10.4.1)的顺序来生成,且应在10.4.3b)生成类型赋值之前生成。10.4.5在10.4.3b)中的ASN.1类型赋值应按下列顺序生成:a)给定两个顶层模式组件SC1和SC2,且SC1先于SC2,按照10.4.1所述顺序,与SC1(如果有的话)相对应的所有的ASN.1类型赋值应在与SC2相对应的任何类型赋值生成之前生成;b)在任何给定模式组件相对应的每种类型赋值集中,类型赋值应按照第29章到第31章规定的后缀排序生成,如下:1)后缀“-nillable”;2)后缀“-nillable-default-”;GB/T16263.5—xxxx/ISO/IEC8825-5:20213)后缀“-nillable-fixed-”;4)后缀“-derivations”;5)后缀“-deriv-default-”;6)后缀“-deriv-fixed-”;7)后缀“-deriv-nillable”;8)后缀“-deriv-nillable-default-”;9)后缀“-deriv-nillable-fixed-”;10)后缀“-group”;c)包含b)中的2)、3)、5)、6)、8)以及9)项的每组类型赋值集对应任何给定模式组件以及任何给定后缀,这些类型赋值应按照第29章规定的后缀的字典字母升序来生成。11XSD内置类型的映射使用11.1本章由本文件中其他章明确调用来生成一个与XSD内置类型使用相对应的ASN.1类型定义。注:除xsd:anyType是一个复杂类型定义外,所有的XSD11.2XSD内置类型的使用应根据表2映射到ASN.1类型定义,表2给出要使用的ASN.1类型定义。符号“XSD.Name”表明ASN.1类型定义应是通过使用10.2由对应的ASN.1类型赋值所生成的ASN.1类型来定义(一个“DefinedType”),且该ASN.1类型赋值存在于XSD{joint-iso-itu-tasn1(1)specification(0)modules(0)xsd-module(2)version1(1)}模块(见附录A)或者XSD{joint-iso-itu-tasn1(1)specification(0)modules(0)xsd-module(2)version2(2)}模块(见附录B)。表2与XSD内置类型使用相对应的ASN.1类型定义anyURIanySimpleTypeXSD.AnySimpleTypeIntegerINTEGERXSD.AnyTypeorXSD.AnyType-nillablelanguageXSD.Language[BASE64]OCTETSTRINGbooleanBOOLEANNCNameXSD.DatenegativeIntegerdateTimeXSD.DateTimeNMTOKENdecimalXSD.DecimalNMTOKENSXSD.NMTOKENSdoublenonNegativeIntegerdurationXSD.DurationnonPositiveIntegerENTITIESXSD.ENTITIESnormalizedStringXSD.NormalizedStringXSD.NOTATIONfloatXSD.FloatpositiveIntegergDayXSD.GDayQNameXSD.QNamegMonthshortXSD.ShortgMonthDaystringGB/T16263.5—xxxx/ISO/IEC8825-5:2021XSD.GYeartimegYearMonthXSD.GYearMonthtokenXSD.TokenhexBinaryOCTETSTRINGunsignedByteXSD.IDunsignedintXSD.UnsignedIntXSD.IDREFunsignedLongXSD.UnsignedLongunsignedShortXSD.UnsignedShort11.3xsd:anyType作为元素声明的类型定义来使用,且其值不为空时应映射为XSD.AnyType。xsd:anyType作为元素声明的类型定义来使用且其值为空时应映射为XSD.AnyType-nillable。12映射约束本章由本文件中其他章明确调用来映射简单类型定义的约束。ASN.1类型定义对应STD时,简单类“Enumeration”(见12.4.1和12.4.2)。在这种情况下,不会从约束中产生ASN.1约束(见12.1.2、12.2.1、12.3.1和12.5.1)。12.1长度、最小长度和最大长度约束12.1.1当XSD的内置类型为:xsd:QName和xsd:NOTATION以及任何源自于这些类型的限制的简单类型定义时,应忽略长度、最小长度和最大长度约束。12.1.2若简单类型定义包括长度、最小长度和最大长度约束,以及被映射到ASN.1“Enumeration”(见12.4.1和12.4.2)的枚举约束,那么不满足长度、最小长度和最大长度约束的枚举约束值的成员(若有)“Enumeration”不应包含“EnumerationItem”。12.1.3否则,简单类型定义的长度、最小长度和最大长度约束应该映射为ASN.1长度约束,如表3所示。表3长度、最小长度和最大长度所对应的ASN.1长度约束ASN.1长度约束length=valueminLength=minmaxLength=max(SIZE(0..max))minLength=minmaxLength=max12.2模式约束12.2.1若一个简单类型定义,既有一个模式约束,又有一个映射到ASN.1“Enumeration”的枚举约“EnumerationItem”。12.2.2否则,模式约束应该映射为一个用户自定义约束。下列为两个映射适用条款。若模式约束的值是一个单正则表达式,用户定义约束应为:(CONSTRAINEDBY{/*XMLrepresentationoftheXSDpattern"xyz"*/})GB/T16263.5—xxxx/ISO/IEC8825-5:2021其中“xyz”是模式约束值的XML表述,但如果子串“*/”出现在模式约束值中,应该用“/”替若模式约束的值是一个正则表达式的组合连接(通常情况),则不指定用户定义约束(但可见12.5.4)。12.3空白约束12.3.1若空白约束具有简单类型定义的替换或折叠的值,简单类型定义又有一个映射到ASN.1“Enumeration”的枚举约束(见12.4.1和12.4.2),则以下三条适用。若枚举约束的值成员(若有)包含任何以下字符:HORIZONTALTABULATION,NEWLINE,或CARRIAGERETURN,或(在折叠情况下)以SPACE字符开始、结尾或出现多个连续SPACE字符,则其“Enumeration”中不包含“EnumerationItem”。若空白约束的值是替换且一个带限定信息的最终TEXT编码指令分配给ASN.1类型定义,则最终WHITESPACEREPLACE编码指令也应该分配给它。若空白约束的值是折叠且一个带限定信息的最终TEXT编码指令分配给ASN.1类型定义,则最终WHITESPACECOLLAPSE编码指令也应该分配给它。12.3.2否则,至多满足以下三条之一:若空白约束的值是保留,则空白约束应忽略。若空白约束的值是替换,并且简单类型定义对应的ASN.1类型定义是一个ASN.1受限字符TABULATION、NEWLIN或CARRIAGERETURN字符。最终WHITESPACECOLLAPSE编码指令应该分配给ASN.1类型定义。下面是需使用许可字母表约束或等同许可字母表约束:(FROM({0,0,0,32}…{0,16,255,255}))若空白约束的值是折叠,并且简单类型定义所对应的ASN.1类型定义是一个ASN.1受限字符串类型,则规定的许可字母表约束和禁止头、尾或多个连续的空格字符(SPACE)的模式约束都应该添加到ASN.1类型定义,以除去HORIZONTALTABULATION、NEWLIN或CARRIAGERETURN字符。最终WHITESPACECOLLAPSE编码指令应该分配给ASN.1类型定义。下面是需使用模式约束或等同的模式约束:12.4枚举约束12.4.1当一个枚举约束属于一个有多个原子类型的简单类型定义,且简单类型定义(直接或间接)源自于xsd:string约束,则它不应该映射为“Enumeration”,此ASN.1的“Enumeration”对应于简单类型定义(见13.4),在以下四条进行了相关规定。对于枚举约束的值的成员,“EnumerationItem”应添加一个标识符“Enumeration”(符合12.1.2、12.2.1、12.3.1、12.5.1)。每个标识符应由10.3对应的枚举约束的值的成员来生成。枚举约束的值的成员应按照字典字母升序映射,并且任何重复的成员应删除。若简单类型定义有一个带保留或替换值的空白约束,则枚举类型应分配至少有一个最终TEXT编码指令,最终TEXT编码指令的限定信息显示一个或更多“EnumerationItem”,而不是“TextToBeUsed”。注:一个重要的示例是有枚举约束的xsd:string受限信GB/T16263.5—xxxx/ISO/IEC8825-5:202112.4.2当一个枚举约束属于一个(直接或间接)源自于xsd:integer受限信息的简单类型定义,且简单类型定义有多个原子类型,则枚举约束不应映射成ASN.1约束。相反,约束应映射成ASN.1的“Enumeration”,ASN.1枚举类型对应于简单类型定义(见13.5),见下列四条的规定。对于每个枚举约束的值的成员,都应在"Enumeration"中添加一个类型为"NamedNumber"的"EnumerationItem"(符合12.1.2、12.2.1、12.3.1、12.5.1)。每个“NamedNumber”中的“identifier”应通过连接字符串“int”与相应的枚举约束的值的成员的正则词汇表达式(见W3CXML模式第2部分2.3.1)连接起来生成。“NamedNumber”中“SignedNumber”应是ASN.1的值的表示法(整数)。枚举约束的值的成员应该按数值升序排序映射,且应删除任何重复成员。12.4.3其他枚举约束应映射为ASN.1约束,该约束是与枚举值的成员相对应的单个值或单个值的并集。注:枚举约束应用于base类型定义的值域。因此,对于XSD内置类型为xsd:QName或xsd:NOTATION的枚举,在XML表示中确定生成单一值的ASN.1约束生成的[USE-QNAME]SEQUENCE的uri组件值的XSD构架的组成部分,<xsd:simpleTypename="state"><xsd:restrictionbase="xsd:string"><xsd:enumerationvalue="off"/><xsd:enumerationvalue="on"/></xsd:restriction></xsd:simpleType>State::=[NAMEASUNC示例2:下面描述了一个顶层简单类型定义,它是带枚举约束的受限xsd:integer:<xsd:simpleTypename="integer-0-5-10"><xsd:restrictionbase="xsd:integer"><xsd:enumerationvalue="0"/><xsd:enumerationvalue="5"/><xsd:enumerationvalue="10"/></xsd:restriction></xsd:simpleType><xsd:simpleTypename="integer-1-10"><xsd:restrictionbase="xsd:integer"><xsd:minInclusivevalue="1"/><xsd:maxInclusivevalue="10"/></xsd:restriction></xsd:simpleType>GB/T16263.5—xxxx/ISO/IEC8825-5:2021示例4:下面描述了一个顶层简单类型定义,它是另一个受限(有minInclusive约束)简单类型定义,派生自带<xsd:simpleTypename="multiple-of-4"><xsd:restriction><xsd:simpleType><xsd:restrictionbase="xsd:integer"><xsd:minInclusivevalue="1"/><xsd:maxInclusivevalue="10"/></xsd:restriction></xsd:simpleType><xsd:minExclusivevalue="5"/></xsd:restriction></xsd:simpleType>示例5:下面描述了一个顶层简单类型定义,它是另一个受限(有最小长度和最大长度约束)简单类型定义,派生自有附加枚举约束的xsd:string元素。<xsd:simpleTypename="color"><xsd:restriction><xsd:simpleType><xsd:restrictionbase="xsd:string"><xsd:enumerationvalue="white"/><xsd:enumerationvalue="black"/><xsd:enumerationvalue="red"/></xsd:restriction></xsd:simpleType><xsd:minLengthvalue="2"/><xsd:maxLengthvalue="4"/></xsd:restriction></xsd:simpleType>12.5其他约束12.5.1若一个简单类型定义,既有总数位、小数位、数值上界、数值上确界、数值下界和数值下确界约束,又有映射到一个ASN.1“Enumeration”(见12.4.1和12.14.2)的枚举约束,那么对于那些不满足总数位、小数位、数值上界、数值上确界、数值下界和数值下确界约束的枚举约束的值成员(若有),其“Enumeration”中不包含“EnumerationItem”。12.5.2若一个简单类型定义有数值上界、数值上确界、数值下界和数值下确界约束,而无枚举约束,或有不能映射到ASN.1“Enumeration”的枚举约束,那么需使用以下两个条款:GB/T16263.5—xxxx/ISO/IEC8825-5:2021若此简单类型定义(直接或间接)派生自一个XSD内置类型:日期或时间(xsd:date,xsd:dateTime,xsd:duration,xsd:gDay,xsd:gMonth,xsd:gYear,xsd:gYearMonth,xsd:gMonthDay,或xsd:time),那么简单类型定义的数值上界、数值上确界、数值下界和数值下确界约束应该映射到ASN.1用户定义约束(见12.5.4)。否则,简单类型定义的数值上界、数值上确界、数值下界和数值下确界约束根据表4应该映射到一个ASN.1值域或单值约束。表4对应于数值上界、数值上确界、数值下界和数值下确界约束的ASN.1约束maxInclusive=ubmaxExclusive=ubminExclusive=lbminInclusive=lbminInclusive=ubmaxInclusive=lbminInclusive=ubmaxExclusive=lbminExclusive=ubmaxInclusive=lbminExclusive=ubmaxExclusive=lb12.5.3若一个简单类型定义有总位数和小数位约束而无枚举约束,或有不能映射到ASN.1“Enumeration”的枚举约束(见12.4.1和12.4.2),那么简单类型定义的总数位和小数位约束应该映射到一个用户定义约束(见12.5.4)。12.5.4当一个约束映射到一个ASN.1用户定义约束时,推荐约束和其值出现在用户定义约束的ASN.1注释里。用户定义的约束形式本文件不做明确规定。13简单类型定义映射13.1本章由本文件中其他条明确调用来生成ASN.1类型赋值或与简单类型定义所对应的ASN.1类型定义。13.2一个顶层简单类型定义应映射为一个ASN.1类型赋值。10.3应用于简单类型定义的名应生成“TypeAssignment”中“typereference”。根据13.4到13.9,“TypeAssignment”中“Type”应成为ASN.1类型定义。13.3一个匿名简单类型定义根据13.4到13.9的各条应映射到一个ASN.1类型定义。13.4对于带枚举约束的原子类型的简单类型定义且它(直接或间接)派生自xsd:string限制元素,ASN.1类型定义应是一个ASN.1枚举类型,其枚举类型的“Enumeration”根据12.4.1规定生成。13.5对于带枚举约束的原子类型的简单类型定义且它(直接或间接)派生自xsd:integer限制元素,ASN.1类型定义应是一个ASN.1枚举类型,其枚举类型的“Enumeration”根据12.4.2规定生成。最终USE-NUMBER编码指令应分配给ASN.1枚举类型。13.6对于带枚举约束的任何原子类型的其他任何简单类型定义(设为D)直接或间接派生自顶层简单类型定义,第23章应用于顶层简单类型定义(设为B)生成ASN.1类型定义,使得:GB/T16263.5—xxxx/ISO/IEC8825-5:2021a)D通过限制元素,派生(直接或间接)于B;b)或者B是D的基本类型定义,或从B到D的所有中间派生步骤都是匿名的简单类型定义。那么对D(若有)的任何约束,第12章应用于添加到ASN.1类型定义的约束,会生成一个ASN.1约束。13.7对于其他简单类型定义(设为D),若其有原子类型,将第23章应用于XSD内置类型(设为B),将生成ASN.1类型定义,使得:a)D通过限制元素派生(直接或间接)于B;b)或者B是D的基本类型定义,或从B到D的所有中间派生步骤都是匿名的简单类型定义。那么对D(若有)的任何约束,第12章用于添加到ASN.1类型定义的约束应生成一个ASN.1约束。13.8对于其他简单类型定义(设为D),若其带有原子类型列表,应用以下五条。13.8.1ASN.1类型定义应是一个ASN.1序列类型,其类型序列组件是第23章应用于item类型定义时生成的“Type”类型。13.8.2对于D约束的每一种,一个ASN.1约束通过将第12章中用于约束产生的限制应添加到ASN.1序列类型。13.8.3如果列表项的简单类型定义是xsd:string或是xsd:string的限制元素,并映射到一个ASN.1字符串类型;那么需要将许可字母表约束(FROM((0,0,0,33)..(0,16,255,253)))应用到ASN.1字符串类型。13.8.4如果列表项的简单类型定义是一个联合类型,那么需要将13.8.3中规定的子约束应用到ASN.1选择类型中每个候选类型,ASN.1选择类型是通过在可选类型上使用内部子约束的字符串类型。13.8.5一个最终LIST编码指令应该分配给ASN.1序列类型。<xsd:simpleTypename="list-of-float"><xsd:listitemType="xsd:float"/></xsd:simpleType>13.9对于任何其他有联合类型的简单类型定义(设为D),需要应用以下五条。13.9.1对于成员类型定义的每个成员,ASN.1类型定义应是一个具有替代的ASN.1选择类型。“NamedType”中的“identifier”通过将10.3应用于成员名称(若该成员是XSD内置类型或一个顶层简单类型定义)或应用于字符串“alt”(若成员是一个匿名简单类型定义)而生成,并且将第23章应用于成员类型定义时,“NamedType”的“Type”应是生成的ASN.1类型定义。13.9.3对于为匿名简单类型定义的成员类型定义,对应的“NamedType”应有一个最终NAMEAS””编码指令。13.9.4对于D约束的每一个方面,ASN.1约束通过将第12章应用于添加到ASN.1选择类型的约束上而生成。13.9.5最终USE-UNION编码指令应该分配给ASN.1选择类型。<xsd:simpleTypename="decimalOrBinary"><xsd:union><xsd:simpleType><xsd:restrictionbase="xsd:decimal"/>GB/T16263.5—xxxx/ISO/IEC8825-5:2021</xsd:simpleType><xsd:simpleType><xsd:restrictionbase="xsd:float"/></xsd:simpleType></xsd:union></xsd:simpleType>DecimalOrBinary∷=[NAMEASUNCAPITALIZED][USE-UNION]CHOICE{alt[NAMEAS""]XSD.Decimal,alt-1[NAMEAS""]XSD.Float}14元素声明映射14.1本章由本文件中其他条明确调用来生成ASN.1类型赋值或与元素声明所对应的ASN.1类型定注:元素声明上的值约束通常会影响到映射。然而,8.10显示了元素声明映射具有值约束的情况,值约束的类型定义是xsd:QName或xsd:NOTATION或XSD内置类型的限制14.2对顶层元素声明应予以忽略。14.3一个非抽象顶层元素声明应该映射到一个ASN.1类型赋值。“TypeAssignment”中“typere-ference”通过将10.3应用于元素声明的名称而生成,并且“TypeAssignment”的“Type”应是一个在14.5中规定的ASN.1类型定义。14.4一个本地元素声明应按14.5的规定映射为ASN.1类型定义。14.5第23章、第26章或第27章(见14.6)应用于简单类型定义或复杂类型定义(它们是元素声明中类型定义),10.2应用于(ASN.1类型赋值是根据第29章作用于类型定义上生成的)生成ASN.1类型定义。在这两种情况下,元素声明中值约束(若有)需提供可用的章条(第23章、第26章、第27章或第29章),并在产生的本条规定的ASN.1类型定义中使用这些条款。14.6根据下列条件选择表5的内容后,可从表5的最后一列获得可用的条款编号:a)元素声明是否有可替换或不可替换的类型定义(见14.7);b)元素声明是否为nillable或non-nillable;c)类型定义是否为简单类型定义或复杂类型定义;d)类型定义是否为XSD内置类型,还是匿名,或是顶层类型定义。表5元素声明映射时的条款编号可否替代nillable类型定义可用条编号否否简单或复杂XSD内置、匿名或顶层否是否是顶层否是复杂XSD内置、匿名或顶层否是复杂是是或否简单或复杂XSD内置、匿名或顶层GB/T16263.5—xxxx/ISO/IEC8825-5:202114.7当出现短语“有一个可替换的类型定义”应用到元素声明时,是指该元素声明的类型定义是一个顶层简单类型定义或复杂类型定义,它们作为另一个顶层简单类型定义或复杂类型定义的基本类型定义出现。注:根据此定义,元素声明的类型定义为XSD内置类型xsd:anyType时,15属性声明映射15.1本章由本文件中其他条明确调用来生成ASN.1类型赋值或与属性声明所对应的ASN.1类型定15.2顶层属性声明映射到ASN.1类型赋值。“TypeAssignment”中的“typereference”应通过将10.3用于属性声明的名来生成,并且“TypeAssignment”的“Type”应是一个在14.5中规定的ASN.1类型定义。最终ATTRIBUTE编码指令应被分配给ASN.1类型赋值。15.3本地属性声明应映射为在14.5中规定的ASN.1的类型定义。15.4ASN.1的类型定义应通过第23章应用于属性声明中的类型定义来生成。16简单类型定义值映射16.1本章由本文件中其他条明确调用来生成与简单类型定义值所对应的ASN.1“Value”。16.2在简单类型定义的值域上的给定值V,并且:a)ASN.1类型定义从简单类型定义映射;b)V用正则词汇表示法(见W3CXML模式第2部的2.3.1V应被映射成一个ASN.1基本值符号(值符号用于ASN.1类型定义的抽象值),在EXTENDED-XER中,正则词汇表示是一个有效的“ExtendedXMLValue”编码。17模型组定义映射17.1本章由本文件中其他条明确调用来生成与模型组定义对应的ASN.1类型赋值。17.2一个模型组定义中如果它的模型组有序列或选择序列则应映射为一个ASN.1类型赋值。将10.3应用于模型组定义的名,应生成“TypeAssignment”中的“typereference”,且将第18章应用于模型组定义的名,应生成“TypeAssignment”中的“Type”。18模型组映射18.1本章由本文件中其他条明确调用来生成与模型组所对应的ASN.1类型定义。注:某些情况下本条不会被每个模型组调用。例如,模型组有一个全排序时不会映射到ASN.1,但其粒子模式组件18.2具有一个序列的排序的模型组会映射到ASN.1序列类型。对模型组中顺序编排的粒子模式组件而言,零个或多个ASN.1“NamedType”序列表应根据第19章应用于原子而产生,并且这些“NamedType”应以相同顺序添加到类型序列中。一个最终UNTAGGED编码指令应分配给类型序列。18.3具有一个选择的序列且其排序至少有一个粒子模式组件的模型组,将被应映射到一个ASN.1选择类型。对模型组中顺序编排的粒子模式组件而言,“NamedType”应根据第19章应用于粒子而产GB/T16263.5—xxxx/ISO/IEC8825-5:2021生,并且这些“NamedType”应以相同顺序添加到选择类型中。一个最终UNTAGGED编码指令应分配给选择类型。18.4无粒子的选择的排序模型组应映射到一个ASN.1内置类型NULL。19粒子映射19.1本章由本文件中其他条明确调用来生成与粒子对应的零个或多个ASN.1“NamedType”有序的注1:本条款不会被每个粒子调用。例如,一个复杂类型定义的内容类型的顶层粒子,若它的项是有序排列的模型注2:在多数据情况下,本条款生成一个单一“NamedType”。仅当一个序列模型组件的粒子包“NamedType”。在此情况下,内序列模型组19.2以下三条定义了本文件第19章的其余部分使用的术语。19.2.1若minoccurs和maxoccurs都为1,那么:a)若粒子的项是一个与模型组定义无关的有序的排序,且粒子自身属于一个有序的排序的模型组,则粒子称为“pointlesssequenceparticle”;a)否则,粒子称作“mandatorypresenceparticle”。19.2.2若minoccurs为0而maxoccurs为,那么:a)若粒子的映射是为了产生一个ASN.1序列类型的一个组件,则该粒子称作“optionalpresenceparticle”;b)否则,粒子称作“optionalsingle-occurrenceparticle”。19.2.3若maxoccurs大于或等于2,则粒子称为“multiple-occurrenceparticle”。19.3一个“pointlesssequenceparticle”应映射为一个零或多个“NamedType”的有序列表(设为L)。列表L应初始化为空。对于模型组(即粒子的有序术语)中的每个粒子(设为P),通过反复使用第19章内容,粒子P会生成一个零或多个“NamedType”的有序列表,且这些“NamedType”应以相同的顺序添加到列表L中。19.4一个“mandatorypresenceparticle”或“optionalpresenceparticle”应该映射成以下两种条款规定中的“NamedType”。19.4.1“NamedType”的“identifier”应通过将10.3应用于符合19.6的字符串来生成,“NamedType”的“Type”应通过将19.7应用于粒子中的术语来生成。19.4.2若粒子是“optionalpresenceparticle”,则“NamedType”之后应紧随OPTIONAL关键字。19.5一个“optionalsingle-occurrenceparticle”或“multiple-occurrenceparticle”应根据下面六种子条款规定来生成“NamedType”。19.5.1通过将10.3在“NamedType”的“identifier”后增加后缀”-list”字符串(见19.6)来生成,“NamedType”的“Type”是类型序列。19.5.219.5.2除minoccurs为0且maxoccurs为unbounded外,一个长度约束应根据表6添加到类型序列中。表6minoccurs到maxoccurs区间所对应的ASN.1长度约束ASN.1长度约束minoccurs=nmaxoccurs=nSIZE(n)GB/T16263.5—xxxx/ISO/IEC8825-5:2021n≥2minoccurs=minmaxoccurs=maxmax>minandmax≥2SIZE(min..max)minoccurs=0maxoccurs=1SIZE(0..1)minoccurs=minmaxoccurs=unboundedmin≥1SIZE(min..max)19.5.3若粒子的项是元素声明,则类型序列组件应是“NamedType”。此“Name“identifier”应据10.3生成元素声明的“name”,“NamedType”的“Type”应通过将19.7应用于粒子中的术语来生成。19.5.4若粒子的项是通配符,则类型序列组件应是“NamedType”。此“NamedType”的“identifier”应为elem且“NamedType”的“Type”应通过将19.7应用于粒子的术语来生成。19.5.5若粒子的项是模型组,则类型序列组件应是“Type”且应通过将19.7应用于粒子的术语来生19.5.6最终UNTAGGED编码指令应分配给类型序列。19.6对应于粒子产生的“NamedType”中“identifier”所使用的字符串应是:a)若粒子中的项是一个元素声明,“identifier”为元素声明的名;b)若粒子中的项是一个模型组定义的模型组,“identifier”为模型组定义的名;c)若粒子中的项是一个与模型组定义无关的有序的排序的模型组,“identifier”为字符串“sequence”;d)若粒子中的项是一个与模型组定义无关的选择的排序的模型组,“identifier”为字符串“choice”;e)若粒子中的项是一个通配符,“identifier”为字符串“elem”。19.7对应于粒子(见19.4)的“NamedType”中的“Type”,或对应于粒子的“SequenceOfType”中的“NamedType”的“Type”应是:a)若粒子中的项为一个顶层元素声明(组元素替代头仅包含自身头的),则ASN.1类型定义(一个“DefinitionType”)依据10.2生成符合第14章的元素声明的ASN.1类型赋值;注1:包括没有元素声明的一般情况,引用此元素b)若粒子中的项是顶层元素声明,其组元素替代标头至少包含多于一个元素的标头,则ASN.1类型定义(一个“DefinitionType)依据10.2生成符合第31章的元素声明的ASN.1类型赋值;注2:若头是元素声明,那么它是抽象的,它不是元素自身的替代组成员。在此种情况下,若替代组至少有一个成员,那么条款b)适用;而若成员的数量为1,则替代组将映射c)若粒子中的项是一个抽象的顶层元素声明,且该元素声明为一个空元素替代组的头,则ASN.1内置类型为NULL;d)若粒子中的项是一个本地元素声明,则ASN.1类型定义依据第14章生成元素声明;e)若粒子中的项是一个模型组定义的模型组,则ASN.1类型定义(“DefinitiinType)依据10.2生成符合第17章的模型组定义的ASN.1类型赋值;f)若粒子中的项是一个与模型组定义无关的模型组,则ASN.1类型定义依据第18章生成模型注3:这包括这种情况,即一个的模型组内重新定义包含一个自我参考。原始模型组定义的模型组,被复制到一个新结构,在此与一个模型组定义无关。因为原始模型组定义自身不会复制到新结构(新模型组定义有不同的g)若粒子中的项是一个通配符,则ASN.1类型定义依据第21章生成通配符。GB/T16263.5—xxxx/ISO/IEC8825-5:202120复杂类型定义映射20.1本章由本文件中其他条明确调用来生成与复杂类型定义对应的ASN.1类型赋值或类型定义。20.2顶层复杂类型定义应映射到ASN.1类型赋值。“TypeAssignment的“typereference应依据10.3生成复杂类型定义的名,其中“TypeAssignment”的“Type”应是符合20.4到20.11所指定的ASN.1类型定义。20.3匿名的复杂类型定义应映射到符合20.4到20.11所指定的ASN.1类型定义。20.4ASN.1类型定义应是一个ASN.1序列的类型,根据下面的20.5到20.11规定,0个或多个组件应被有序地添加到序列中。20.5若复杂类型定义的内容类型是混合内容模型,那么组件应添加到ASN.1序列类型。该组件中“NamedType”的“identifier”值应是embed-values的,并且“NamedType”的“Type”应是一个类型的序列,该类型的序列组件“Type”依据第23章要求,生成XSD内置类型xsd:string,最后EMBED-VALUES编码指令应分配给ASN.1序列类型。20.6若复杂类型定义的内容类型是一个项为带所有序列的模型组件的粒子,那么组件应添加到ASN.1序列类型。该组件的“NamedType”的“identifier”应是顺序的,并且“NamedType”应是组件为“EnumeratedType”的类型。对模型组的每个的粒子(其术语总是一个元素声明),一个“EnumerationItem”应有序地添加到“Enumeration”,其中“EnumerationItem”的“identifier”与对应的每个粒子的“NamedType”的“identifier”相一致。最后,USE-ORDER编码指令分配给ASN.1序列类型。注:当每一个组件被添加到序列类型,“NamedType

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论