中华人民共和国国家标准
金融服务 金融业通用报文方案 第4部分:XML设计规则
Financial services-Universal financial industry message scheme-Part 4:XML design rules
GB/T 27926.4-2011
发布部门:中华人民共和国国家质量监督检验检疫总局
中国国家标准化管理委员会
发布日期:2011年12月30日
实施日期:2012年05月01日
前 言
GB/T 27926的本部分按照GB/T 1.1-2009给出的规则起草。
GB/T 27926《金融服务 金融业通用报文方案》由以下5部分构成:
——第1部分:库输入输出方法和格式规范;
——第2部分:注册机构的角色及职责;
——第3部分:建模导则;
——第4部分:XML设计规则;
——第5部分:反向工程。
本部分为GB/T 27926的第4部分。
本部分等同采用ISO/TS 20022-4:2004《金融服务 金融业通用报文方案 第4部分:ISO 20022XML设计规则》(英文版)。
为便于使用,本标准还做了下列编辑性修改:
a)“ISO 20022的本部分”改为“GB/T 27926的本部分”;
b)删除国际标准前言;
c)将国际标准名称由“ISO 20022 XML设计规则”改为“XML设计规则”。
附录A为资料性附录。
本部分由中国人民银行提出。
本部分由全国金融标准化技术委员会(SAC/TC 180)归口。
本部分负责起草单位:中国金融电子化公司。
本部分参加起草单位:中国人民银行、中国证券监督管理委员会、中国工商银行、中国建设银行、博时基金管理有限公司、深圳证券通信公司、申银万国证券股份有限公司、中国人民银行南京分行、中国人民银行长春中心支行。
本部分主要起草人:王平娃、陆书春、李曙光、赵志兰、马小琼、王毛路、王德英、巫禄芳、强庆华、施轶倩、李迎辉、成永德、贾树辉、刘运、景芸、程晓阳、陈立军。
1 引言
XML是W3C(万维网标准化协会)定义的技术标准,可用来描述GB/T 27926标准化报文(即语法)。但XML在描述特定对象时(例如,GB/T 27926标准化报文)具有很大的灵活性,所以仅仅说明GB/T 27926标准化报文是使用XML来定义的是不够的,我们必需知道如何使用XML来定义它。
本部分包含一套XML设计规则,我们称之为GB/T 27926XML。设计规则规定了标准化的报文是怎样描述为符合GB/T 27926标准的XML文档的。该标准化报文是根据GB/T 27926.3中的建模导则,由UML1)(统一建模语言)描述的报文定义来描述的。
根据W3C的定义,任何包含关联描述并符合描述中相应限制的XML文档都可以称作一个有效的XML文档(以下称为“XML实例”或“实例”)。这里的关联描述来源于最初的报文定义,是由UML描述的。
本部分同样描述如何将UML报文(部分)定义转换成W3C XML Schema。通过XML Schema,我们能够利用XML Schema解析器的验证功能来自动校验一个给定的实例是否符合报文定义中描述的约束(或其子集)。
DTD(文档类型定义)也可以用于检验XML实例与相应报文定义的部分一致性。但是由于DTD提供的验证功能具有一定局限性,本部分没有涉及XML DTD的内容。
注意,本部分只是解释了如何将报文定义图映射成XML。并没用解释如何生成一个报文定义图。该方面的信息见GB/T 27926.3建模导则。
--------------------------------
1)关于UML(统一建模语言)的详细信息参见对象管理组网站:http://www.omg.org/uml。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 7408 数据元和交换格式 信息交换 日期和时间表示法(GB/T 7408-2005,ISO 8601:2000,IDT)
GB/T 27926.1 金融服务 金融业通用报文方案 第1部分:库输入输出方法和格式规范(GB/T 27926.1-2011,ISO/TS 20022-1:2004,MOD)
GB/T 27926.3 金融服务 金融业通用报文方案 第3部分:建模导则(GB/T 27926.3-2011,ISO/TS 20022-3:2004,IDT)
用于ISO文档的URN命名空间
3 UML到XML的转换
3.1 假定
将UML形式的报文定义转换成以XML描述对的设计规则需基于下述设计选择:
——当前工作是基于下列W3C所建议的标准规范:
2000年10月版XML规范(http://www.w3c.org/TR/2000/REC-xml-20001006);
2001年5月版XML Schema规范(http://www.w3c.org/TR/xmlschema-0/);
(http://www.w3c.org/TR/xmlschema-1/)和(http://www.w3c.org/TR/xmlschema-2/)。
——GB/T 27926 XML描述应尽可能的系统化:
·业务信息表示为XML元素/值;
·元数据信息表示为XML属性。在XML实例中一般不携带属性,除非需要排除歧义。
——GB/T 27926 XML的元素、属性、简单类型(simpleType)或复杂类型(complexType)均有对应的UML模型元素;
——目前只定义了GB/T 27926 XML运行时(验证)的schema。运行时的schema仅包含了验证XML实例的信息,不包含文档后实现信息(例如,元素代码、版本、定义等)。
3 UML到XML的转换
3.1 假定
将UML形式的报文定义转换成以XML描述对的设计规则需基于下述设计选择:
——当前工作是基于下列W3C所建议的标准规范:
2000年10月版XML规范(http://www.w3c.org/TR/2000/REC-xml-20001006);
2001年5月版XML Schema规范(http://www.w3c.org/TR/xmlschema-0/);
(http://www.w3c.org/TR/xmlschema-1/)和(http://www.w3c.org/TR/xmlschema-2/)。
——GB/T 27926 XML描述应尽可能的系统化:
·业务信息表示为XML元素/值;
·元数据信息表示为XML属性。在XML实例中一般不携带属性,除非需要排除歧义。
——GB/T 27926 XML的元素、属性、简单类型(simpleType)或复杂类型(complexType)均有对应的UML模型元素;
——目前只定义了GB/T 27926 XML运行时(验证)的schema。运行时的schema仅包含了验证XML实例的信息,不包含文档后实现信息(例如,元素代码、版本、定义等)。
3.2 术语和约定
3.2.1 建模术语和约定2)
——报文定义在UML中描述为分层类图,即报文定义图;
——报文定义图的根类是一个没有属性的UML类,构造型为《Message》,表示报文;
——报文由报文组件组成,报文和报文组件类的父子关系用UML中的聚合关系(和其UML角色)描述;
——报文组件描述为一个UML类,构造型为《MessageComponent》或者《ChoiceComponent》,报文组件包含报文元素,报文元素或者描述为一个UML类属性(当类描述报文组件)或者为两个UML类聚合关系中的UML角色(当每个类描述一个报文组件时);
——报文元素均具有类型,该类型或者描述为UML的类属性(当属性描述报文元素)或者为UML聚合的目标类(当聚合包含描述报文元素的角色时);
——报文元素的类型也可以为报文组件或数据类型(Data Type),数据类型描述为一个具有适当的构造型的UML类(例如,《Code》、《Identifier》或《Text》)。数据类型可包含元数据,这些元数据在表示数据类型的UML类中描述为类属性。
3.2.2 XML命名约定
所有用于XML元素、XML属性、XML简单类型(simpleType)和XML复杂类型(complexType)的名称都是基于对应的UML对象名称。
——XML简单类型和XML复杂类型直接使用对应的UML类名;
——为了优化3),XML实例中出现的XML元素和XML属性使用对应的UML对象名称缩写版本。该缩写基于一个映射表。由于映射表会因为新缩写的不断加入而更新,故将其放在GB/T 27926的网站上(http://www.GB/T 27926 org)。
——每个报文都有一个标识符(Message Identifier),该标识符由GB/T 27926注册机构定义。
报文标识符惟一标识报文并具有下列结构:“xxxx.nnn.aaa.bb”,其中:
·xxxx是4位字母代码(固定长度),标识业务流程;
·nnn是3位字母数字代码(固定长度),标识报文功能;
·aaa是3位数字代码(固定长度),标识报文功能的特点(变体);
·bb是2位数字代码(固定长度),标识版本;
·元素间以“.”字符作为分隔符。
--------------------------------
2)关于报文建模的详细信息见“GB/T 27926.3:建模导则”。
3)附录中含一个报文优化的导则列表,这些导则旨在提高报文验证性能和验证量。
3.3 UML到XML schema和XML实例的转换规则
报文定义由互不相同且有限数量的UML模式组成。通过定义从UML模式到GB/T 27926 XML的转换规则,我们能将任意报文定义图转换为相应的GB/T 27926 XML schema,也能将任何报文转换为其相应的GB/T 27926 XML实例。
3.3.1 XML和UML对象的关系
GB/T 27926 XML元素能描述下列UML对象:
——报文;
——报文元素。
GB/T 27926 XML属性能描述下列UML对象:
——数据类型的元数据。
GB/T 27926 XML简单类型或具有简单内容的复杂类型能描述下列UML对象:
——数据类型。
GB/T 27926 XML复杂类型能描述下列UML对象:
——报文;
——报文组件。
3.3.2 数据类型(Date Types)
报文定义中使用的所有报文元素都拥有类型。此类型可以是GB/T 27926的数据类型。GB/T 27926的数据类型基于数据类型表示之上。
3.3.2.1 数据类型表示(Date Type Representations)
注:每一个GB/T 27926数据类型均由UML类描述,并由一个允许的数据类型表示来构造。数据类型表示包含许多特性,这些特性被传递(继承)到使用该数据类型表示的所有数据类型。通过这种方式,众多数据类型所共有的特性被集合在一起。在描述GB/T 27926数据类型的类中,一些特性被描述为UML类属性。为便于正确地转换成XML schema和XML实例,相应的构造型为《XMLAttribute》、《Property》或者《XMLType》。这些属性携带的大部分信息为静态的,而且只应用于GB/T 27926数据类型的文档描述和/或实现。但在某些情况下,属性将对XML schema中相应的简单类型定义产生影响。这些属性携带的部分信息可为动态的,这些动态信息必须包含在使用该GB/T 27926数据类型的所有XML实例中。在3.3.2.3中详细描述了每个GB/T 27926数据类型所允许的数据类型表示,也描述了属性对于XML Schema和/或XML实例的影响。
3.3.2.2 基本数据类型
GB/T 27926 XML基本数据类型按照W3C的定义来编制,见http:www.w3.org/TR/xmlschema-2/#dt-encoding。GB/T 27926 XML支持的XML基本类型如下:
3.3.2.3 GB/T 27926数据类型
可以使用一种数据类型表示来定义GB/T 27926数据类型。
这样,GB/T 27926数据类型(基本数据类型、任意属性等)可以应用该数据类型表示的所有特性。
通过详细说明相关特性的实际值(例如:使用的Identification Scheme)来限定原始基本数据类型(例如,String)和数据类型表示(例如,Identifier)的取值空间。还可以通过引入《Format》所构造的UML操作来做进一步限定。这些操作在生成XML schema时转换成限定条件。
为了使用该限定条件,这些数据类型所生成的XML类型必须为简单类型或具有简单内容的复杂类型而不是复杂类型4)。将GB/T 27926数据类型与XML简单类型或具有简单内容的复杂类型相联系不存在任何问题,且可对XML基本类型进行进一步限定。
下面章节详细描述了所有允许的数据类型表示转化为相应数据类型的转化规则。
3.3.2.3.1 使用数据类型表示《Quantity》的数据类型
属性:
数据类型表示《Quantity》(见元模型)包含一个称为“unit”的属性(构造型为《XMLAttribute》)。任何由《Quantity》构造的数据类型应详细说明“unit”是否包含一个可能值列表。
——当可能值多于一个时,该属性将作为XML属性出现在XML schema中,并且在每一个实例中包含实际使用值,该有效值列表定义在数据类型“UnitList”中;
——当可能值仅有一个或者无可能值时,该属性仅在文档中说明,不在XML schema或XML实例中出现,因而“Unit”是隐含的(因为它的取值固定并在文档中说明,或者因为该属性出现在报文别的地方)。
3.3.2.3.2 使用数据类型表示《Code》的数据类型
属性:
当列表值在报文环境中(例如,交易类型)包含有意义的(即语义的)值时,使用此数据类型。GB/T 27926数据类型通过使用《Code》引用内部列表(即在schema中说明的列表)。其为一个枚举,枚举值需要在实例中从可选值中选定一个。
枚举值只能在可能值列表中选取。
枚举项的值从每个UML枚举属性的四字符初始值中获得。
3.3.2.3.3 使用数据类型表示《Identifier》的数据类型
属性:
GB/T 27926数据类型使用《Identifier》引用外部列表(即未在schema中说明)。
数据类型表示《Identifier》(见元模型)包含一个称为“IdentificationSchemeName”的属性(构造型为《Property》)。任何由《Identifier》构造的数据类型应说明实际方案的名称。此信息仅用于文档说明,不作为XML schema或实例的一部分。
如果需要,可以增加限定条件来进行语法的校验(使用《Format》操作)。
3.3.2.3.4 使用数据类型表示《Rate》的数据类型
属性:
数据类型表示《Rate》(见元模型)包含一个称为“RateBase”的属性(构造型为《Property》)。任何由《Rate》构造的数据类型应说明实际使用的基类。此信息仅用于文档说明,不作为XML schema或实例的一部分。
3.3.2.3.5 使用数据类型表示《Amount》的数据类型
属性:
数据类型表示《Amount》(见元模型)包含一个称为“Currency”的属性(构造型为《XMLAttribute》)。任何由《Amount》构造的数据类型应详细说明“Currency”是否包含一个可能值列表。
——当可能值多于一个时,该属性将作为XML属性出现在XML schema中,并且在每一个实例中包含实际使用值。该有效值列表定义在数据类型“CurrencyCode”中;
——当可能值仅有一个或者无可能值时,该属性仅在文档中说明,不在XML schema或XML实例中出现,因而“Currency”是隐含的(因为它的取值固定并在文档中说明,或因为该属性出现在报文别的地方)。
3.3.2.3.6 使用数据类型表示《Indicator》的数据类型
属性:
由数据类型表示《Indicator》构造的数据类型意味着报文元素应具有布尔值(“ture”或“false”)。
数据类型表示《Indicator》(见元模型)包含2个属性,分别称为“MeaningWhenTrue”和“Meaning-WhenFalse”(构造型均为《Property》)。任何由《Indicator》构造的数据类型应详细说明当其值为“ture”和“false”时的实际意义。此信息仅在文档中说明,不作为XML schema或实例的一部分。
3.3.2.3.7 使用数据类型表示《Text》的数据类型
属性:
由数据类型表示《Text》构造的数据类型意味着报文元素包含文本信息。
《Format》操作包含此数据类型的限定条件。
3.3.2.3.8 使用数据类型表示《DateTime》的数据类型
属性:
数据类型表示《DateTime》(见元模型)包含一个称为“Format”的属性(构造型为《XMLType》)。任何由《DateTime》构造的数据类型应说明实际使用的基本数据类型(Date、DateTime、……)。该信息作为相应数据类型的限制条件包含在XML schema中。
3.3.2.4 示例
下述报文实例包含了上述说明的所有数据类型。首先给出报文定义图,然后由此得到XML schema。
3.3.2.4.1 报文定义图
3.3.2.4.2 Schema源文件5)
3.3.2.5 Schema的图形表示
3.3.2.5.1 XML实例
3.3.3 UML模型转化规则
下面章节详细描述了报文定义中出现的所有UML模型的转换规则。
3.3.3.1 元素顺序
GB/T 27926 XML缺省规定,XML元素的排列顺序应符合如下规定:
首先是表示为类属性的报文元素,其次是表示为聚合角色的报文元素。但也可不受此约束。
为了对报文定义图中生成的XML元素的顺序进行管理,每个报文元素拥有一个分配的顺序号。
3.3.3.2 简单组合
3.3.3.2.1 报文定义图
3.3.3.2.2 Schema源文件
3.3.3.2.3 Shema的图型表示
3.3.3.2.4 XML实例
3.3.3.3 矢量属性组合
——重复次数用来表示元素出现的次数,默认值为1,可省略;其他情况用范围值来表示元素的重复次数,例如:0..n;
——使用“范围~重复次数”来表示一组元素,描述一个报文元素集合(表示为属性或角色);
——schema能准确地验证重复次数。
3.3.3.3.1 报文定义图
3.3.3.3.2 Schema源文件
3.3.3.3.3 Schema的图型表示
3.3.3.3.4 XML实例
3.3.3.4 继承性
报文组件可是特定的,虽然可能性很小。然而,数据定义图中只涉及了大部分特定的报文组件,通用组件在Schema中并未提及。
因此不需要支持一个特殊的继承模式,因为从UML及XML的观点来看,其行为类似一个简单的组合模式。
3.3.3.5 使用《XOR》构造进行报文元素选择
注:UML中关于XOR运算的一些规则:
——可以给该操任意命名;
——XOR应仅应用于属于报文组件的报文元素(即类属性和聚合角色)。在当前组件角色和父类或者子类的组件角色间不允许进行XOR运算;
——XOR运算仅应用于XOR中涉及的报文元素,报文元素可不成为XOR的部分。因此当增加报文元素时,只有也被添加到XOR操作中时,它才会是XOR的部分。
3.3.3.5.1 报文定义图
3.3.3.5.2 Schema源文件
3.3.3.5.3 Schema的图形表示
3.3.3.5.4 XML实例
3.3.3.6 使用《choice》构造进行报文元素选择
该模式模拟了在报文元素间进行的选择(即UML类属性和UML聚合角色)。
《ChoiceComponent》的所有报文元素都是可选项。因此,当某个报文元素被添加时,它就自动成为可选项(相反地,在XOR构造中,新报文元素不会自动成为XOR部分)。当删除报文元素时,该报文元素自动从选择项中删除。
注:《choice》的聚合不具有重复性,但是《choice》的成员允许具有重复性。这些重复性的处理方式如下:
3.3.3.6.1 报文定义图
3.3.3.6.2 Schema源文件
3.3.3.6.3 Schema的图形表示
3.3.3.6.4 XML实例
-------------------------
4)XML schema验证限制:该限定不能应用于非简单内容的复杂类型。
5)XML命名约定(即缩写)不能直接体现在报文定义图中。关于缩写的更多信息参见附录A。
6)报文定义图中仅有一个这样元素,且为该报文的根元素。
7)报文元素为任一UML聚合角色或为UML的类属性。
4 采用的XML schema特性
4.1 假定
——GB/T 27926XML schema仅包含了可以通过XML schema解析器对XML实例进行验证时所涉及到的相关信息,不包含例如,文档说明(定义等)或实现信息(相似组件之间的关系等);
——GB/T 27926XML schema只是UML的一个子集并不能取代UML模型;
——XML实例中仅名称是简写的,这些名称源于UML名称(参见附录A);
——因为UML概念和schema概念间的密切关系,任何由XML schema定义的有关规定都在模型层解决,而不在XML设计规则中解决;
——XML元素作用域仅限于它所属的复杂类型,复杂类型是全局惟一的。这就是通常理解的“Venetian blind”模式;
——报文是全局惟一的;
一一所有字典的管理(例如,重用、指针等)都在UML的报文定义图层次实现。该方面的内容见GB/T 27926.3建模导则。
4.2 特性
4.2.1 XML schema和XML实例的命名空间
GB/T 27926XML schema和XML实例使用四种命名空间:
一一缺省(无条件的)命名空间。所有schema有其自身默认的命名空间,包括以下2个部分:
·由ISO文档8)的urn命名空间组成的固定部分:urn:iso:std:iso:20022;
·惟一对应每个schema的部分:
xsd:BusinessService $ MessageIdentifier
其中,
BusinessService是可选的,说明其支持的业务交易。
MessageIdentifier在上述3.2.2中已解释。
——xs:W3C XML schema命名空间(不在实例中使用);
——xsi:W3C XML schema实例命名空间;
——与缺省命名空间相同的目标命名空间(仅对schema)。
4.2.2 应用到简单类型中的XML限定条件
以下章节描述了引入到XML schema中的XML限定条件。这些XML schema限定条件基于构造型为《Format》的UML操作,该操作已经在UML模型中,按照4.4节中与生成Schema相关的《Format》操作概要进行了详细说明。
4.2.2.1 模式(pattern)
模式匹配可对应用于正则表达式(通常称为“Perl表达式”)进行描述的字符串(string)进行词法验证。
此限定条件仅适用于字符串(string)。
“XML Schema第2部分:数据类型”(W3C于2001年5月推荐的XML Schema版本)的附录E定义了允许的正则表达式的严格语法。
4.2.2.2 长度(length)、最小长度(minlength)、最大长度(maxlength)
XML schema可使用长度、最小长度、最大长度来对任一字符串(string)的取值范围进行限定(即double、integer、date等不受此限定)。
上述限定方式仅应用于字符串(string),且值必须为正整数。
4.2.2.3 最小包含(minInclusive)、最小不包含(minExclusive)、最大包含(maxInclusive)、最大不包含(maxExclusive)
XML schema可使用最小包含、最小不包含、最大包含、最大不包含来对任一数值的取值范围进行限定。
上述限定仅适用于数值(Integer、Long、BigDecimal、Float、Double)或与时间度量相关的数值(Date、Time等),这些值必须为常量且与其应用的数值属于同一类型。
4.2.2.4 枚举(emumeration)
XML schema可使用枚举限定条件来限定枚举的取值范围。
此限定条件只适用于由《Identifier》或《Code》构造的的数据类型,并且它们的值应在所限定的初始枚举中取值。
4.2.2.5 十进制数的最大位数(totaldigits)、小数点后保留的位数(fractiondigits)
定点十进制数值需要规定最大位数(即十进制数据类型值的位数最大值)以及小数点后保留的位数(即十进制数据类型值小数部分的位数最大值)。
与最大位数相关的值必须为正整数。
与小数点后保留的位数相关的值必须为非负整数。
4.3 Schema粒度
每一个报文定义图拥有一个schema。
4.4 与生成schema相关的使用《format》的UML操作概要
以下定义的操作具有《Format》构造类型。
4.5 字符集
GB/T 27926XML使用UTF-8作为(默认)字符编码机制,原因如下:
——它拥有最有效的字符描述方法:
·它是当前金融环境中应用最普遍的最简短的字符描述方法(ASCII和EBCDIC字符);
·它可以描述几乎任意已知的字符。
——通过(可自动的)转换算法,它可以和许多其他的编码方案进行互操作。
----------------------
8)基于ISO规范(URN namespace for ISO documents.doc/version 1.5/2004-08-05)
附录A
(资料性附录)
XML缩略语
XML的缩略语存储在一个单独的映射表中,为使其简短和易懂,该映射表遵从了如下一项或多项规则:
a)除去名字中的元音;
b)使用谐音替代(例如,Xchg代表Exchange);
c)使用通用英文缩写(例如,Rpt代表Report);
d)使用通用首字母缩写(例如,POB代表PostOfficeBox);
e)术语结束于:
“ed”->在缩写后加“d”;
“ing”->在缩写后加“g”;
“y”->在缩写后加“y”;
“ty”->在缩写后加“ty”;
“al”->在缩写后加“l”;
“er”->在缩写后加“r”。
(例如,Instructed/Instructing-Instd/Instg)
f)复数后加一个“s”;
g)用国家代码来代替国家名称;
h)名称中保留首字母缩写;
i)在名称中保留数字;
j)用大写表示逻辑运算符的缩写(例如,EQ表示Equal);
k)在一个单词中,当可用“s”取代“z”时,不应使用“z”。
leon 2017-09-01这是我看到了最好用的一个建筑施工竣工验收统一用表网站,不光让提供企业级资料的统一监管,而且提供大量的免费资料,已经购买了此公司的模板,使用还可以,只是操作培训方面需要加强,不然有很多功能都不知怎么使用? | |
goooogle 2017-08-28范例不错,但有些范例的填写数据太少了些,希望可以改进。 | |
曾工 2017-08-11如果有培训视频就好了,每个省出的统表都不一样,都不知什么使用,关键还是培训要跟上。 | |
游客 2017-08-01如果购买了,在工程中使用不知是否方便,真的能在手机上,在工地上方便的编制表格吗? | |
邓为墉 2017-07-08感觉还可以,但有些表格是要购买才可以查看的,并没有全部免费啊。 | |
歌手The 2017-07-03提供填写说明和填表范例很有价值,在手机和电脑上都可以查看,非常方便,真的是随时随地使用的。 | |
林工 2017-06-12资料很有用,而且结构清晰,表格规范,关键是的可以免费使用,华软公司真是良心公司啊! | |
李天一 2017-06-11此资料是否是免费的? | |
张工 2017-05-21是否是最新版本的规范 | |
游客 2017-05-01这是最新版本的的统一用表吗? |