曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
4. 屬性值編碼
第4章數(shù)據(jù)建模與XML使用97 下載
無(wú)論使用元素還是屬性表示對(duì)象的特性,都必須決定如何對(duì)它們的值進(jìn)行編碼。
以下列出了一些常見(jiàn)的情況:
(1) 數(shù)量,例如高度、寬度和重量
第一個(gè)問(wèn)題是是否將度量單位標(biāo)準(zhǔn)化(例如,所有長(zhǎng)度都以米為單位),還是使用多種不同
的度量單位。如果度量單位是數(shù)據(jù)的一部分,你可以將它作為屬性值的一部分(h e i g h t = " 1 . 8 6 m "),
或者將它分離為獨(dú)立的項(xiàng)( <height units="m">1.86</height>)。最后,必須定義十進(jìn)制數(shù)字的格
式,例如,用什么符號(hào)表示小數(shù)點(diǎn)和千位分隔符。一旦建立了X M L模式,只需引用標(biāo)準(zhǔn)的數(shù)字
數(shù)據(jù)類型,而不必?fù)?dān)心詞法編碼,但是目前這個(gè)任務(wù)仍然要由文檔設(shè)計(jì)者承擔(dān)。
要深入了解XML模式,參見(jiàn)第7章。
(2) Ye s / N o值
在英語(yǔ)語(yǔ)境中,使用字符串y e s和n o作為明確的表示,如果空間非常寶貴,可以使用縮寫(xiě)y和
n。如果用屬性表示模型中的特性,還可以使用S G M L的習(xí)慣用法, 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中有一定
的優(yōu)越性,但是對(duì)于X M L來(lái)說(shuō),它已經(jīng)成為歷史。為了保證與S G M L的互操作性, X M L不提倡
同一元素有兩個(gè)值集合相交的屬性,例如,兩個(gè)屬性都允許值y e s和n o。
(3) 其他有限的值集合
對(duì)于這些有限的集合,最基本的決策是使用代碼還是完整的名稱,例如: W或Wi t h d r a w n,
u k或United Kingdom。如果不考慮空間因素,擴(kuò)展的名稱的最主要優(yōu)點(diǎn)在于它能夠避免誤解
—用戶對(duì)代碼的理解常常與設(shè)計(jì)者的初衷大相徑庭,結(jié)果導(dǎo)致數(shù)據(jù)含義的混淆。
(4) 日期和時(shí)間
許多人都提倡根據(jù)ISO 8601的日期格式(Y Y Y Y- M M - D D)進(jìn)行標(biāo)準(zhǔn)化,以避免出現(xiàn)模棱兩
可的情況。ISO 8601還定義了時(shí)間的表示法,其中包括時(shí)區(qū)。
實(shí)際上有許多標(biāo)準(zhǔn)是關(guān)于特定類型的特性的。表4 - 2列出了國(guó)際標(biāo)準(zhǔn)化組織( I S O)發(fā)布的
一些標(biāo)準(zhǔn)。
表4 - 2
標(biāo)準(zhǔn)范圍說(shuō)明
ISO 2955 公制度量單位在信息系統(tǒng)中使用有限的字符集(不包括希臘字母)表示S I和
其他度量單位的方法
ISO 3166 國(guó)家代碼表示國(guó)家名稱代碼的規(guī)范;它包含兩字母代碼和三字母代碼。
兩字母代碼是廣為人們熟悉的I n t e r n e t域名,例如: d e代表德國(guó)
ISO 4217 貨幣代碼國(guó)家貨幣的代碼
ISO 5218 人類性別表示男和女的代碼(這肯定是目前所發(fā)布的最短的國(guó)際標(biāo)準(zhǔn))
ISO 6093 數(shù)值三種數(shù)值表示法:字符串形式,機(jī)器可讀的形式和人類可識(shí)
別的形式
ISO 6709 位置使用經(jīng)度、緯度和海拔高度唯一地標(biāo)識(shí)位于地球表面、地上
和地下的點(diǎn)
ISO 8601 日期和時(shí)間日期表達(dá)式,包括:日歷的日期、序數(shù)的日期、星期幾和時(shí)
間,它使用標(biāo)點(diǎn)符號(hào)進(jìn)行分隔以免引起混淆
98使用XML 高級(jí)編程
下載
當(dāng)然,你沒(méi)有義務(wù)一定要使用這些標(biāo)準(zhǔn),但是遵循標(biāo)準(zhǔn)有兩大優(yōu)點(diǎn)。第一,別人考慮到的
困難可能比你想到的多,第二,告訴其他人你將遵照標(biāo)準(zhǔn)執(zhí)行能夠減少徒勞無(wú)益的爭(zhēng)論。
除此之外,還有許多其他標(biāo)準(zhǔn): Internet RFC 1766定義了自然語(yǔ)言的編碼機(jī)制,它已經(jīng)被廣
泛采納; X . 5 0 0 / L D A P標(biāo)準(zhǔn)定義了一套精心研制的在世界范圍內(nèi)表示人名的方案(當(dāng)然不僅僅是
名字,中間名的首字母和姓);另外還有許多應(yīng)用于特定領(lǐng)域的標(biāo)準(zhǔn),例如:出版領(lǐng)域的I S B N,
運(yùn)輸業(yè)的機(jī)場(chǎng)編碼,等等。
在不久的將來(lái),我們期待更多的通用數(shù)據(jù)類型被標(biāo)準(zhǔn)化,它們將成為X M L模式活動(dòng)的一部
分。到那時(shí), X M L解析器將接管解析和驗(yàn)證使用這些類型的數(shù)據(jù)的任務(wù),它能夠從一定程度上
減輕應(yīng)用程序的負(fù)擔(dān)。
(5) 特性的名稱
當(dāng)你使用元素或者屬性表示信息模型中的特性時(shí),應(yīng)該使用什么名稱呢?這個(gè)問(wèn)題似乎是
顯而易見(jiàn)的,然而實(shí)際上你可以有兩種選擇:以數(shù)據(jù)類型命名,或者以它在父對(duì)象中的角色命
名。舉兩個(gè)簡(jiǎn)單的例子,文檔的創(chuàng)建日期可以命名為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。
當(dāng)然,如果存在多個(gè)日期或地址,你別無(wú)選擇只能使用較長(zhǎng)的形式,你或許認(rèn)為它的作用
僅僅是消除了含糊不清,從某種意義上講確實(shí)如此。遺憾的是,這種形式同時(shí)也刪除了隱含的
數(shù)據(jù)類型信息。應(yīng)用程序軟件如何知道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有相同的有效性約束?另
外,如果每個(gè)元素都通過(guò)這種方式來(lái)區(qū)別, D T D將變得相當(dāng)復(fù)雜。
相反,如果采用較短的命名形式,有可能使多個(gè)對(duì)象類型都包含相同的特性名稱,這是否
會(huì)導(dǎo)致該名稱重載?例如,旅游勝地、旅館和客戶都有名稱—在X M L文檔中使用< n a m e >標(biāo)記
表示它們是否合理?從本質(zhì)上講,在X M L中元素名稱是全局的(無(wú)論出現(xiàn)在哪里,含義都是相
同的),而屬性名稱則是屬于特定的元素類型,它對(duì)于該類型來(lái)說(shuō)是本地的。這并不是不可違背
的規(guī)則;你可以重載元素名稱,特別是用于表示N A M E或T I T L E等簡(jiǎn)單文本特性的元素,同樣,
在某些環(huán)境下(特別是X S LT樣式表),屬性名稱也可以被視作有全局意義。無(wú)論在哪種情況下,
最好不要用相同的名稱表示含義截然不同的事物,這是一條通用的設(shè)計(jì)規(guī)則,例如:不要用
S TAT U S同時(shí)表示個(gè)人的信貸價(jià)值和航空公司承諾的特性。
對(duì)于命名問(wèn)題,你要考慮以下選擇:
• 使用系統(tǒng)的命名習(xí)慣,例如: < 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 >。這不僅能夠保證含義
清晰,而且能夠保持簡(jiǎn)潔性,你甚至還可以將這種命名習(xí)慣擴(kuò)展到應(yīng)用程序軟件中,當(dāng)然
這對(duì)于X M L軟件來(lái)說(shuō)是沒(méi)有特殊含義的—特別要指出的是,這種結(jié)構(gòu)化命名方式不能應(yīng)
用于X S LT。(X M L名稱允許句點(diǎn),它與其他字符的地位平等,沒(méi)有特殊意義。)其他可選
中國(guó)航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(42)