XML Schema 的最佳实践原则
XML Schema 的最佳实践原则
ARTS(零售技术标准协会)的IXRetail提出了规范XML Schema设计的最佳实践原则,共有17条:
1.所有的XML命名采用UCC(首字大写的大小写混合)方案,单词间无空格或连字符。
解释:大小写混合方案(camel case)分为UCC与LCC两种。UCC要求以大写字母开头,例如:NewBookName;LCC则以小写字母开头,例如:newBookName。为了统一命名,IXRetail推荐使用UCC,且不允许使用空格或下划线,即不能用New_
Book_name或New Book Name。
2.可读性比标记长度更重要。
解释:IXRetail认为,为了便于用户理解XML文档,增加标记的长度也是值得的。例如:CompanyID就比ID_Comp要好。
3.尽量避免在元素、属性和类型的命名中使用缩写。但是 GTIN(全球贸易项目编号)、ID(标识号)、POS(电子收款机系统)除外。
解释:本原则是依据ARTS数据模型而提出的。例外情况是针对零售业而言,其它行业可以规定本行业的可缩写术语。
4.尽量不要在属性命名中包括实体名。
解释:在ARTS数据模型中,实体名通常被用作属性名字前缀。然而XML已具清晰的层次结构,包含前缀的属性名只会徒然增加标记长度。本原则也适用于本地元素命名。
5. 使用W3C XMLSchema,不要用DTD或其他Schema方案。
解释:与DTD相比,W3C的XML Schema具有很多优点,如:XML Schema是XML文档;一个XML文件可以对应多个Schema;XML
Schema的内容模型可以随意扩充;XML Schema支持多种数据类型,且能自定义;XML Schema允许使用本地名称;XML Schema可以使用空值等等(参见http://www.w3.org/TR/xmlschema-0)。其他方案包括微软早期向W3C提交的XML
Schema方案等。
6.枚举值的命名,应该遵循元素命名原则,且不包含数字;尽量不要使用IXRetail创造的新名字;尽量使用ISO标准命名而不是国家标准或协会标准命名。
解释:包含数字的命名是不规范的,且给处理带来困难。自然语言词汇已经暗示了其数值,何乐而不为?
7.枚举值应该使用由英语单词组成的名字。
解释:能够暗示数值的自然语言命名没有多少选择余地,而在ARTS数据模型中已经提供了英语命名,可以使用它们的衍生词作为名称。
8.命名不应与所在结构重复。
解释:本原则是第4条的推广。
9.所有的XML Schema的全局名字空间统一命名为 IXRetail,它的 URI是http://www.nrf-arts.org/IXRetail/namespace/
。
解释:本原则可以避免与其他名字空间冲突。URI末尾的“/”代表它是目录而不是文件名。这并不重要,因为URI是用于给名字空间命名而不是对其定位的。其他行业可以自行规定名字空间。
10.所有来自IXRetail的XML实例都要指定IXRetail为默认名字空间。
解释:本原则可以避免在使用本行业术语时都要加上名字空间前缀IXRetail。各行业可以指定自己的默认名字空间。
注意:本原则仅适用于XML实例,而不是XML Schema。
11. 所有来自IXRetail的XML Schema都要指定IXRetail 为默认名字空间以及目标名字空间。
解释:在本原则下,W3C不再是默认名字空间,相应的标准命名都要加上名字空间前缀。
注意:本原则仅适用于XMLSchema而不是XML实例。
12.凡是领域专家认为可重用的数据类型,无论是simple Type还是complexType,应该在全局名字空间而不是在Element属性中定义。
解释:数据类型名称很少用在标记里,即使全局名字空间里定义,并且加上领域名称和作者等前缀,也不会影响标记的总长度。
13.Schema中的元素名称,应该使用嵌套Element定义,其数据类型可以被显式或隐式定义;不要用ref引用全局定义。
解释:本原则与第12条相反。元素名称在标记中频频出现,因此,精简了附加信息的本地元素名称可以大大缩短标记总长度。
14.来自IXRetail的Schema的各个版本,都应该在 schemaLocation属性中指定其URI;URI要遵循ARTS-NRF制定的规范(每个schemaLocation都是http://www.nrf-arts.org/IXRetail/schemaLocation/的子目录,且是UTF-8
文件)。开放标记的version属性不能为空,且必须与schemaLocation属性一致。schemaLocation属性和version属性的值都要与Schema的许可、实施、发行信息中所述一致;还要包含符合W3C日期格式的发行日期。
解释:为了规范XML Schema的版本控制机制,任何发行版本,包括第一版的XML Schema,都应该遵循本原则。任何 XML处理器均支持UTF-8格式但只有少数处理器支持简/繁体中文、日语等UTF-16格式的语言,因此要用UTF-8格式。所谓
W3C日期格式,是指yyyymmdd格式,如:20020211(2002年2月11日)。版本控制机制尚未统一,故其他机构制定的规范可能与本原则有出入。
15.尽量使用ARTS XML字典中的词汇。
解释:ARTS XML字典中包含了ARTS数据模型的实体名和属性名、来自IXRetailschemas的名称,以及它们的衍生词。目前它的词汇以零售业为主,可以扩充到任何行业。
16.从全局名字空间选取名称时,尽量选取能揭示被命名对象的特定意义的复合词。
解释:词汇具有多义性,通用词更是如此。如果不加选择,就会引起岐义,从而影响文档的可读性。本原则对于用Element定义的本地词汇不适用,它们所在的层次限定了其含义。
17.名字空间前缀要保持统一;使用 IXRetail名字空间不需要加前缀。只能使用下列前缀和定义:
(1)xml(在可扩展标示语言标准方面定义)。
(2)xmlns(在可扩展标示语言标准的 Namespaces中定义)。
(3)xs http://www.w3.org/2001/XMLSchema 。
(4)xsi http://www.w3.org/2001/XMLSchema-instance 。
解释:前述第10条与第11条两条原则已经规定IXRetail是默认名字空间,故不需加前缀。本原则提到的可用前缀还可进一步完善。
以上17条原则是由IXRetail提出来,以规范零售业的XMLSchema的设计。基本的原则包括:规范命名的形式、合理选词、规范名字空间、与现行工业标准接轨。具体应用时,可视情况加以调整。
(王凌峰)