曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
圖書列表。
目錄元素不包含任何屬性。它在文檔中只有一個,因此沒有必要提供標(biāo)識符。我們將對目
錄的討論分散到它所包含的其他對象中。
(2) 出版社
現(xiàn)在,讓我們來看看P u b l i s h e r(出版商)元素的定義:
上述定義對應(yīng)于我們在前面看到的示意圖。P u b l i s h e r元素包含一個公司名稱,一個或多個地
址,若干印記,以及零個或多個作者。有些出版社為了簡單起見有時寧愿不要作者,但是在我
們的目錄中,無作者代表該書是匿名作者編寫的,或者作者過多,例如:會議的專題文集。
有一點(diǎn)需要特別注意, I m p r i n t s沒有設(shè)定元組數(shù)。這并不是疏忽。其他屬性都是在同一級列
出的,對于I m p r i n t s,我希望改變一下風(fēng)格,通過元素集合來說明。P u b l i s h e r元素將包含由
I m p r i n t元素集構(gòu)成的子元素。這種方式并不會影響元素的含義,它有利于應(yīng)用程序的程序員理
解D T D。如果你希望忽略該元素,只需直接跳至下一元素。如果你對該元素感興趣,你可以利
用解析器檢查屬于I m p r i n t s元素的子元素的數(shù)量,由此得到印記數(shù)。
另外,P u b l i s h e r元素還有一個屬性i s b n:
P u b l i s h e r元素需要一個唯一的指示符,而公司名稱不能作為指示符。圖書的I S B N包含分配
給出版商的唯一數(shù)字。例如,Wr o x出版社的所有書的I S B N都包含序號1 8 6 1。我希望文檔的創(chuàng)作
者將整個I S B N中的這個片斷作為該屬性的值。
下面我們來介紹構(gòu)成P u b l i s h e r元素的子元素:
程序清單3 - 1 7
以上代碼應(yīng)該與你想象的差不多。大多數(shù)元素都是# P C D ATA類型的。
本節(jié)最后給出了圖書目錄DTD的完整代碼。
I m p r i n t s元素是由一個或多個I m p r i n t元素構(gòu)成的,如前所述, I m p r i n t元素是# P C D ATA類型
的。A u t h o r元素看上去略微混亂一些,但是在分析其內(nèi)容模型之前,我們還要進(jìn)一步說明一下
第3章文檔類型定義使用73 下載
A d d r e s s和I m p r i n t元素的屬性:
由于出版社可能有多處辦公地點(diǎn),因此要將總部和分公司區(qū)分開。在此,我使用簡單的枚
舉類型,而且該屬性是可選的。關(guān)鍵字# I M P L I E D表示文檔的作者可以忽略該屬性,同時不會影
響文檔的有效性。如果元素包含該屬性,它的值必須是y e s或n o。
現(xiàn)在讓我們來研究I m p r i n t元素的屬性列表。由于該元素的內(nèi)容為# P C D ATA,因此I m p r i n t的
名稱的長度不受限制。我需要將圖書與印記相關(guān)聯(lián),所以我希望有個較短的關(guān)鍵字。這就是
s h o r t I m p r i n t N a m e屬性的作用。此后, Our Incredibly Wonderful Children's Book Division可以縮
寫為I n c r e d C h i l d。我們同樣沒有限制該屬性的長度。實(shí)際上, D T D語法并未提供控制字符串長
度的設(shè)置。
與字符串長度問題相比,如何使用I D類型的屬性更加重要。如果文檔中出現(xiàn)該屬性,它就
作為唯一的關(guān)鍵字,可以被文檔中的其他元素引用。在我們的例子中,我們知道該屬性將被
B o o k元素引用,但是D T D并不提供顯式的聲明機(jī)制。
讓我們回到A u t h o r元素,以下是A u t h o r及其子元素的聲明:
程序清單3 - 1 8
A u t h o r的子元素相對來說比較通俗,它包含的文本信息你可想而知。我們提供了名稱和個人
簡歷信息。該元素的關(guān)鍵在于它的屬性。A u t h o r元素的a u t h o r C i t e I D屬性是元素的簡短引用,它
的作用與I m p r i n t元素的s h o r t I m p r i n t N a m e屬性類似。它是一個I D類型的屬性,用于將作者與一本
或多本書相關(guān)聯(lián)。
P o r t r a i t元素用于將作者的照片與作者的文字信息相關(guān)聯(lián)。由于X M L標(biāo)記中不能包含二進(jìn)制
數(shù)據(jù),因此需要借助鏈接機(jī)制。我們不能使用實(shí)體取代鏈接,因?yàn)樵谝环莺荛L的目錄清單中,
會出現(xiàn)許多作者和相應(yīng)的圖像文件,當(dāng)創(chuàng)建文檔時它們大多數(shù)都是動態(tài)命名的。X M L委員會針
對鏈接提出了許多方法,但是都未形成正式的建議規(guī)范,而且?guī)缀跷吹玫浇馕銎鲝S商的支持。
為了簡單起見,我們還是暫時不提X L i n k或X P o i n t e r的語法為好,我將圖像文件的U R L作為
p i c L i n k屬性的值。然而,我們的應(yīng)用程序無論如何都需要支持某種鏈接機(jī)制。如果讀取目錄文
檔的應(yīng)用程序使用瀏覽器,我們可以為瀏覽器生成包含I M G標(biāo)記的H T M L文件。在這類應(yīng)用程序
中,p i c L i n k的值將成為I M G標(biāo)記的S R C屬性的值。如果使用文檔的應(yīng)用程序不具備可視化的界
面,它只需忽略該屬性。
74使用XML 高級編程
下載
你是否曾經(jīng)考慮過使用表示法?由于我不希望限制應(yīng)用程序使用D T D的行為,因此放棄
了這種方法。如果沒有提供針對特殊類型的處理程序,表示法只是給數(shù)據(jù)類型定義了一
個名稱。如果我指定了處理程序,就必須保證任何使用目錄文檔的應(yīng)用程序有特定的行
為,例如:顯示鏈接。而我的設(shè)計目標(biāo)是無論應(yīng)用程序是否有可視化的界面, D T D都應(yīng)
該發(fā)揮同樣的作用。
(3) 線索
我們已經(jīng)完整而詳細(xì)地分析了P u b l i s h e r元素的內(nèi)容。在C a t a l o g內(nèi)容模型中,下一個對象是
T h r e a d。以下是該元素的聲明:
元素的內(nèi)容是用于描述線索的文本。它可能是關(guān)鍵字列表(例如:對于Wr o x出版社來說,
元素的內(nèi)容可能是A S P、D a t a b a s e、X M L、S c r i p t i n g等),或者更長的描述。屬性t h r e a d I D用于在
圖書與線索之間建立關(guān)聯(lián)。
(4) 圖書
下面我們將討論最后一個元素—B o o k。它是D T D的核心。我們介紹問題模型時曾經(jīng)給出
了圖書對象的示意圖,元素的聲明完全是按照該圖產(chǎn)生的:
Ti t l e元素和A b s t r a c t元素是# P C D ATA類型的。R e c S u b j C a t e g o r i e s元素的聲明如下:
C a t e g o r y是# P C D ATA類型的。我們曾經(jīng)說過,每本書都有三個推薦的主題域。實(shí)際上,每
本書有且僅有三個主題域。最簡單的表示方法是利用D T D提供的元組工具,將內(nèi)容模型說明為
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(31)