曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
7.8.1 為什么煩惱
我們的Book Catalog DTD出了什么問題?實(shí)際上,它正開始有起色。如果我們合適地驗(yàn)證
了目錄文檔,有關(guān)Book Catalog的每一樣?xùn)|西必須進(jìn)入一個(gè)D T D。本章前面普遍應(yīng)用我們特有的
D T D時(shí),所有的批評(píng)都瞄準(zhǔn)了D T D。
我們要做的第一件事是將出版目錄范圍分成兩個(gè)分離的模式,一個(gè)反映處理作者的命名空
間,另一個(gè)處理目錄信息。另外,我們能夠?qū)σ恍┑膶傩院驮靥峁┖軓?qiáng)的分類,因此到了書
寫處理目錄的應(yīng)用程序時(shí),我們的工作變得更加輕松。因?yàn)閄ML 模式是一種流的狀態(tài),它接近
推薦書里的狀態(tài),我們將要在M S X M L里使用X M L - D R版本的模式。
1. 分割
在第3章見到的c a t a l o g . d t d給了我們?cè)S多概念。一個(gè)目錄一定需要b o o k s,但如果作者存在目
錄外面不是更好嗎?畢竟,如果我們需要為標(biāo)記每本書的的真實(shí)內(nèi)容寫一個(gè)模式,或許想同時(shí)
在這里包含作者信息。這就是將Book Catalog DTD分成兩個(gè)獨(dú)立的模式的主要?jiǎng)訖C(jī): C a t a l o g和
A u t h o r。當(dāng)我們想要?jiǎng)?chuàng)建一個(gè)目錄文檔,能夠?yàn)镃atalog 模式聲明一個(gè)缺省的命名空間,然后使
用一個(gè)驗(yàn)證過的命名空間去引進(jìn)Author 模式。
2. 附加的語法
在c a t a l o g . d t d里有幾個(gè)屬性,能夠提供強(qiáng)大的分類功能。如果我們包含數(shù)據(jù)類型,它將非常
容易地用來計(jì)算總頁數(shù),我們將肯定喜歡能夠從來自目錄的一個(gè)定單計(jì)算定單總數(shù)。因此需要
仔細(xì)查閱Catalog 模式,看什么樣的屬性應(yīng)該用類型信息檢驗(yàn)。
3. 元數(shù)據(jù)發(fā)現(xiàn)
用X M L語法創(chuàng)建一個(gè)模式對(duì)于程序員非常有用,在那里為他們提供一些對(duì)編寫程序的支持,
對(duì)此操作手冊(cè)的目錄文檔根據(jù)我們的模式做了標(biāo)記。我們提供的最大支持是簡單地使D T D帶有
模式表單形式。一旦它采用X M L語法,程序員能夠使用相同的解析器,他們?cè)盟cX M L文檔
實(shí)例一起來發(fā)現(xiàn)元數(shù)據(jù)背后的含義。
假設(shè)你不熟悉我們的模式。你能夠用< d e f i n i t i o n >元素調(diào)查單個(gè)元素。這在文檔瀏覽器里非
常有用。一個(gè)用戶可能單擊為得到特定條目的附加信息,查看與之相連的元數(shù)據(jù)。我們不愿意
表現(xiàn)X M L定義,當(dāng)然如果一個(gè)條目是數(shù)值類型,我們可能會(huì)顯示。在枚舉的情況下,當(dāng)然顯示
條目能取的數(shù)值的范圍。主要信息能夠看到很重要,比如說一個(gè)屬性是否是必須的。只要我們
用X M L語法提供一個(gè)模式,所有這些能夠在文檔實(shí)例被讀到時(shí)發(fā)現(xiàn)。在我們將catalog DTD轉(zhuǎn)成
230使用XML 高級(jí)編程
下載
一個(gè)模式之后,將顯示能夠怎樣去使用D O M在模式里生成相互協(xié)調(diào)的元素。這些將采用一個(gè)模
式,同時(shí)提供給你一些參照元素以及它們是怎樣使用的。
7.8.2 重鑄DTD
仔細(xì)看一下我們的D T D。我們將做完一個(gè)到X M L - D R格式的轉(zhuǎn)換,正像我們所做的,顯示
對(duì)定義不斷的改進(jìn)。
對(duì)于XML-DR 模式文件擴(kuò)展還沒有明確的一致意見。M i c r o s o f t發(fā)起者趨向使用x m l,與此
同時(shí),一個(gè)商業(yè)化可用的工具使用x d r。如我們看到的,W3C 模式工作組傾向?yàn)樗麄兊哪?br />
式使用x s d。我將在下面的例子里使用x m l。無論什么情況,模式是X M L,于是它的M I M E
類型保留text/xml。
目錄分成三個(gè)部分(參見圖7 - 3):
• 有關(guān)出版者的出版商信息( P u b l i s h e r)。
• 包含描述信息的線索( T h r e a d s)。
• 包含有關(guān)書籍的信息( B o o k s)。
圖7-3
出版商信息部分也包括作者信息細(xì)節(jié),但是我們正打算刪除作者信息,將它們放在獨(dú)立的
作者模式里,于是我們能在目錄模式里借用,并在其他地方使用它們。因此,在回到目錄的其
他部分之前,讓我們從作者模式開始。
1. 作者模式
我們應(yīng)該首先看一下作者模式,這是因?yàn)榻酉聛斫⒌哪夸浤J綄⒁獜乃抢锝梃b些內(nèi)容。
第一件要做的事是去掉< A u t h o r >元素聲明和一切從屬于它的東西,建立新的模式文件—
a u t h o r s . x m l。文件開始應(yīng)該聲明與XML 1.0的一致性,命名模式以及聲明X M L - D R和數(shù)據(jù)類型命
名空間:
程序清單7 - 3 8
缺省的命名空間是X M L - D R以及數(shù)據(jù)類型命名空間將用前綴d t加別名。A u t h o r元素是我們的
第7章命名空間和模式使用231 下載
起點(diǎn)。它只是依次包含與名稱相關(guān)的、< B i o g r a p h i c a l >和< P o r t r a i t >元素等元素內(nèi)容:
在X M L - D R里,這些變成了:
程序清單7 - 3 9
我們?yōu)閍 u t h o r C i t e I D保留了XML ID類型以用來保存作者和書籍之間的連接。注意特別是在
M I上的重要部分。它可能出現(xiàn)零次或者一次,這就是說,它是可選的,F(xiàn)在聲明< A u t h o r >的子
元素:
程序清單7 - 4 0
關(guān)閉最高級(jí)< S c h e m a >元素和你已經(jīng)做了。現(xiàn)在你有一個(gè)可以重用的模式,它能被引進(jìn)我們
標(biāo)記作者元素信息的任何地方。
2. 目錄模式
既然從目錄D T D移走了作者信息,將它們放在單獨(dú)的模式里,我們將注意力轉(zhuǎn)向重建X M L
里的目錄數(shù)據(jù)。我們將稱這個(gè)模式為P u b C a t a l o g . x m l。當(dāng)需要包含作者細(xì)節(jié)時(shí),這些將從作者模
式借用過來。這里是開放的信息:
程序清單7 - 4 1
注意怎樣為我們新建立的作者模式—a u t h o r s . x m l用別名前綴a t h r添加一個(gè)命名空間。
讓我們深入研究一下:我們以< C a t a l o g >元素開始,它包含其他信息。這里包括< P u b l i s h e r >、
< T h r e a d >和< B o o k >元素,就像我們?cè)谠缙诘腸 a t a l o g . d t d里有過的那樣,其中的每一個(gè)可能出現(xiàn)
232使用XML 高級(jí)編程
下載
很多次:
程序清單7 - 4 2
下面我們需要聲明i s b n屬性,它將用在我們剛剛聲明的< P u b l i s h e r >和< B o o k >元素里:
(1) 出版商
我們需要著手的下一部分是剛剛聲明的< P u b l i s h e r >元素的內(nèi)容。它還包含在D T D里看到的
中國航空網(wǎng) m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(84)