• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

4. 属性值编码
第4章数据建模与XML使用97 下载
无论使用元素还是属性表示对象的特性,都必须决定如何对它们的值进行编码。
以下列出了一些常见的情况:
(1) 数量,例如高度、宽度和重量
第一个问题是是否将度量单位标准化(例如,所有长度都以米为单位),还是使用多种不同
的度量单位。如果度量单位是数据的一部分,你可以将它作为属性值的一部分(h e i g h t = " 1 . 8 6 m "),
或者将它分离为独立的项( <height units="m">1.86</height>)。最后,必须定义十进制数字的格
式,例如,用什么符号表示小数点和千位分隔符。一旦建立了X M L模式,只需引用标准的数字
数据类型,而不必担心词法编码,但是目前这个任务仍然要由文档设计者承担。
要深入了解XML模式,参见第7章。
(2) Ye s / N o值
在英语语境中,使用字符串y e s和n o作为明确的表示,如果空间非常宝贵,可以使用缩写y和
n。如果用属性表示模型中的特性,还可以使用S G M L的习惯用法, H T M L中也采用这种方式
—例如b o r d e r = " b o r d e r "意味着y e s,如果缺少b o r d e r属性意味着n o。这种方式在S G M L中有一定
的优越性,但是对于X M L来说,它已经成为历史。为了保证与S G M L的互操作性, X M L不提倡
同一元素有两个值集合相交的属性,例如,两个属性都允许值y e s和n o。
(3) 其他有限的值集合
对于这些有限的集合,最基本的决策是使用代码还是完整的名称,例如: W或Wi t h d r a w n,
u k或United Kingdom。如果不考虑空间因素,扩展的名称的最主要优点在于它能够避免误解
—用户对代码的理解常常与设计者的初衷大相径庭,结果导致数据含义的混淆。
(4) 日期和时间
许多人都提倡根据ISO 8601的日期格式(Y Y Y Y- M M - D D)进行标准化,以避免出现模棱两
可的情况。ISO 8601还定义了时间的表示法,其中包括时区。
实际上有许多标准是关于特定类型的特性的。表4 - 2列出了国际标准化组织( I S O)发布的
一些标准。
表4 - 2
标准范围说明
ISO 2955 公制度量单位在信息系统中使用有限的字符集(不包括希腊字母)表示S I和
其他度量单位的方法
ISO 3166 国家代码表示国家名称代码的规范;它包含两字母代码和三字母代码。
两字母代码是广为人们熟悉的I n t e r n e t域名,例如: d e代表德国
ISO 4217 货币代码国家货币的代码
ISO 5218 人类性别表示男和女的代码(这肯定是目前所发布的最短的国际标准)
ISO 6093 数值三种数值表示法:字符串形式,机器可读的形式和人类可识
别的形式
ISO 6709 位置使用经度、纬度和海拔高度唯一地标识位于地球表面、地上
和地下的点
ISO 8601 日期和时间日期表达式,包括:日历的日期、序数的日期、星期几和时
间,它使用标点符号进行分隔以免引起混淆
98使用XML 高级编程
下载
当然,你没有义务一定要使用这些标准,但是遵循标准有两大优点。第一,别人考虑到的
困难可能比你想到的多,第二,告诉其他人你将遵照标准执行能够减少徒劳无益的争论。
除此之外,还有许多其他标准: Internet RFC 1766定义了自然语言的编码机制,它已经被广
泛采纳; X . 5 0 0 / L D A P标准定义了一套精心研制的在世界范围内表示人名的方案(当然不仅仅是
名字,中间名的首字母和姓);另外还有许多应用于特定领域的标准,例如:出版领域的I S B N,
运输业的机场编码,等等。
在不久的将来,我们期待更多的通用数据类型被标准化,它们将成为X M L模式活动的一部
分。到那时, X M L解析器将接管解析和验证使用这些类型的数据的任务,它能够从一定程度上
减轻应用程序的负担。
(5) 特性的名称
当你使用元素或者属性表示信息模型中的特性时,应该使用什么名称呢?这个问题似乎是
显而易见的,然而实际上你可以有两种选择:以数据类型命名,或者以它在父对象中的角色命
名。举两个简单的例子,文档的创建日期可以命名为d a t e - c r e a t e d或d a t e;客户的地址可以命名为
a d d r e s s或b i l l i n g - a d d r e s s。
当然,如果存在多个日期或地址,你别无选择只能使用较长的形式,你或许认为它的作用
仅仅是消除了含糊不清,从某种意义上讲确实如此。遗憾的是,这种形式同时也删除了隐含的
数据类型信息。应用程序软件如何知道b i l l i n g - a d d r e s s和s e r v i c e - a d d r e s s有相同的有效性约束?另
外,如果每个元素都通过这种方式来区别, D T D将变得相当复杂。
相反,如果采用较短的命名形式,有可能使多个对象类型都包含相同的特性名称,这是否
会导致该名称重载?例如,旅游胜地、旅馆和客户都有名称—在X M L文档中使用< n a m e >标记
表示它们是否合理?从本质上讲,在X M L中元素名称是全局的(无论出现在哪里,含义都是相
同的),而属性名称则是属于特定的元素类型,它对于该类型来说是本地的。这并不是不可违背
的规则;你可以重载元素名称,特别是用于表示N A M E或T I T L E等简单文本特性的元素,同样,
在某些环境下(特别是X S LT样式表),属性名称也可以被视作有全局意义。无论在哪种情况下,
最好不要用相同的名称表示含义截然不同的事物,这是一条通用的设计规则,例如:不要用
S TAT U S同时表示个人的信贷价值和航空公司承诺的特性。
对于命名问题,你要考虑以下选择:
• 使用系统的命名习惯,例如: < B i l l i n g . A d d r e s s >和< C r e a t i o n . D a t e >。这不仅能够保证含义
清晰,而且能够保持简洁性,你甚至还可以将这种命名习惯扩展到应用程序软件中,当然
这对于X M L软件来说是没有特殊含义的—特别要指出的是,这种结构化命名方式不能应
用于X S LT。(X M L名称允许句点,它与其他字符的地位平等,没有特殊意义。)其他可选
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(42)