以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  XML Schema 的最佳实践原则  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=6727)


--  作者:admin
--  发布时间:4/14/2004 2:15:00 PM

--  XML Schema 的最佳实践原则
XML Schema 的最佳实践原则

王凌峰  
02-1-23 下午 02:52:55

--------------------------------------------------------------------------------

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 XML Schema,不要用 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.的推广。例如:在 元素中的 元素就不要使用 NewBookName。
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 不再是默认名字空间,相应的标准命名都要加上名字空间前缀。注意:本原则仅适用于 XML Schema 而不是 XML 实例。
12. 凡是领域专家认为可重用的数据类型,无论是 simpleType 还是 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 数据模型的实体名和属性名、来自 IXRetail schemas 的名称,以及它们的衍生词。目前它的词汇以零售业为主,可以扩充到任何行业。
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 提出来,以规范零售业的 XML Schema 的设计。基本的原则包括:规范命名的形式、合理选词、规范名字空间、与现行工业标准接轨。具体应用时,可视情况加以调整。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms