曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
讓我們來改進(jìn)一下:
程序清單2 - 1 5
現(xiàn)在,已經(jīng)明確地把作者們分開了,所以讓我們看一看目錄元數(shù)據(jù)是如何顯示的。例如,
我們可能爭(zhēng)論書名、I S B N等內(nèi)容都是< b o o k >元素的屬性,而不是內(nèi)容的一部分。
出于說明的需要,我們把這些元素改變成了屬性(雖然最好的辦法與此效果相當(dāng)),并且把某
些其他的< B o o k >子元素改為屬性。我們還增加了一個(gè)< P r i c e >元素以便更深入地說明屬性的使用:
程序清單2 - 1 6
48使用XML 高級(jí)編程
下載
很明顯,在這個(gè)例子中有許多遺漏的地方。一個(gè)一直存在的不足就是p u b l i s h e r屬性和
< A u t h o r >元素的字符串常量的使用。我們將在下一章解決它和其他問題,此時(shí)書籍目錄的概念
已經(jīng)得到很大的擴(kuò)充。
前面的例子解釋了元素和屬性的處理原則:元素是代表對(duì)象的名詞,而屬性是描述這些對(duì)
象的特點(diǎn)的形容詞。
你可能注意到我們使用了一種代碼風(fēng)格的約定來分隔這兩個(gè)對(duì)象:元素類型名使用適當(dāng)?shù)?br />
名詞形式(第一個(gè)字母大寫);屬性名都是小寫。這有助于增強(qiáng)正在命名的內(nèi)容,特別是當(dāng)我
們?cè)谧⑨尰蚱渌谋局杏懻撨@些命名時(shí)尤其如此。
元素和屬性的配合使用并不是件簡(jiǎn)單事情。在X M L - L和X M L - D E V新聞組中就這個(gè)主題曾經(jīng)
出現(xiàn)過許多討論和爭(zhēng)論。某些人認(rèn)為根本就不應(yīng)該使用屬性—因?yàn)樗鼈冊(cè)黾恿瞬槐匾奶幚?br />
復(fù)雜性,任何用屬性代表的東西都可以更好地包含在子元素中。其他人則非常欣賞使用D T D驗(yàn)
證屬性值和設(shè)置缺省值所帶來的好處。最近的試驗(yàn)表明,拋開表面現(xiàn)象,使用普通的數(shù)據(jù)壓縮
(例如g z i p、L Z W或者z l i b)都不具備數(shù)據(jù)存儲(chǔ)和傳輸方面天生的優(yōu)勢(shì)(也就是說,壓縮過的
X M L數(shù)據(jù)對(duì)象的大小沒有什么變化)。
XML 1.0推薦規(guī)范的兩位編輯者和其他S G M L / X M L專家曾經(jīng)就這個(gè)主題撰寫過文章—通
過以下鏈接大家可以看到這些內(nèi)容(大多數(shù)都深藏在Robin Cover的SGML/XML We b頁下)。
• Andrew Layman的“XML Syntax Recommendation for Serializing Graphs of Data”—
h t t p : / / w w w. w 3 . o rg / Ta n d S / Q L / Q L 9 8 / p p / M i c r o s o f t - s e r i a l i z i n g . h t m l
• Eliot Kimber的“Elements or attributes?”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / a t t r K i m b e r 9 7 11 . h t m l
• Michael Sperberg - M c Q u e e n的“Element vs. Attributes”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / a t t r S p e r b e rg 9 2 . h t m l
• Robin Cover的“SGML/XML: Using Elements and Attributes”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / e l e m e n t s A n d A t t r s . h t m l
• Tim Bray的“When is an attribute an attribute?”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / b r a y A t t r 9 8 0 4 0 9 . h t m l
• G. Ken Holman的“When to use attributes as opposed to elements”—
h t t p : / / w w w. o a s i s - o p e n . o rg / c o v e r / h o l m a n E l e m e n t s A t t r s . h t m l
2.15 小結(jié)
在本章中,我們向大家演示了所有X M L數(shù)據(jù)必需的基本語法。我們?cè)跊]有其他任何知識(shí)或
第2章XML 語法使用49
下載
工具的情況下就能夠創(chuàng)建簡(jiǎn)單的、格式正規(guī)的文檔,但這還沒有開始充分利用X M L的強(qiáng)大功能。
例如,在基本語法中并沒有提供H T M L中“H T”—超文本。在本書后面的部分(第8章)
中討論的一些待定的X M L擴(kuò)展中,改進(jìn)的鏈接語法是非常重要的一個(gè)方面。
格式正規(guī)的文檔對(duì)于一些應(yīng)用程序來說已經(jīng)足夠,但這意味著任何數(shù)據(jù)的解釋或驗(yàn)證都必
須硬編碼在應(yīng)用程序中。一種更方便的辦法就是提供第二個(gè)文檔用來驗(yàn)證第一個(gè)。這個(gè)驗(yàn)證文
檔的形式可能是D T D(參見第3章)也可能是模式(參見第7章)。
在簡(jiǎn)單的情況下, X M L是一種強(qiáng)大的數(shù)據(jù)交換介質(zhì)。在使用D T D或模式、命名空間、鏈接
和樣式單擴(kuò)充后, X M L將是更為強(qiáng)大的I n t e r n e t時(shí)代的基礎(chǔ)。再配合以J a v a或其他合適的語言,
X M L將使得計(jì)算程序能夠更為方便、使用范圍更廣。
50使用XML 高級(jí)編程
下載
下載
第3章文檔類型定義
上一章介紹了如何編寫格式正規(guī)的X M L文檔。然而,當(dāng)你開發(fā)符合XML 1.0的文檔結(jié)構(gòu)時(shí),
出現(xiàn)了這樣一個(gè)有趣的問題:你如何與其他人交流你設(shè)計(jì)的結(jié)構(gòu)?主流的瀏覽器已經(jīng)支持或者
正在準(zhǔn)備支持X M L,但是這僅限于顯示X M L的內(nèi)容。如果你開發(fā)的程序不僅用到X M L,而且創(chuàng)
建了新的X M L詞匯表,即:將你的設(shè)計(jì)意圖隱藏在代碼中。那么,為了使XML 1.0的其他用戶
能夠理解符合你創(chuàng)建的詞匯表的文檔的結(jié)構(gòu),作為X M L詞匯表的設(shè)計(jì)者,你必須通過某種通用
的方式說明詞匯表的語法規(guī)則。為此, XML 1.0提供了一種機(jī)制—文檔類型定義( D o c u m e n t
Type Definition,D T D),并將其作為規(guī)范的一部分。D T D使用正式的語法定義X M L文檔的結(jié)構(gòu)
和允許值。你在上一章看到的X M L是格式正規(guī)的X M L。它符合X M L的基本語法規(guī)則,并且沒有
其他任何語法約定。在本章,我們將創(chuàng)建有效的X M L:它不僅遵循X M L的語法規(guī)則,而且受到
你所創(chuàng)建的詞匯表規(guī)則的約束。
D T D將帶來以下優(yōu)越性。首先,通過創(chuàng)建D T D,能夠正式而精確地定義詞匯表。所有詞匯
表規(guī)則都包含在D T D中。凡是未在D T D中出現(xiàn)的規(guī)則都不屬于詞匯表的一部分。許多解析器可
以利用D T D驗(yàn)證文檔實(shí)例的有效性。只要在文檔實(shí)例中寫入一條簡(jiǎn)單的聲明語句,解析器就能
夠獲取D T D,并將其中的內(nèi)容與文檔實(shí)例進(jìn)行比較。另外, X M L創(chuàng)作工具也可以通過類似的方
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(21)