<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD EnterPRise javaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar >
。。。。。。
</ejb-jar>
2、dtd聲明解析原則:
D O C T Y P E聲明不僅包含常規(guī)的要害字和根元素名稱,而且包含指示外部D T D源的要害字和D T D的位置。X M L規(guī)范定義了幾種聲明源的方法。聲明中可以使用要害字SYSTEM 或 PUBLIC。假如使用 SYSTEM 要害字,解析器將僅根據(jù)給出的U R L尋找DTD?DTD通過U R L顯式地直接定位。
然而,假如D T D源要害字為 PUBLIC,情況就略微復(fù)雜一些。P U B L I C要害字用于聲明眾所周知的詞匯表。例如,假設(shè)出版界已經(jīng)對(duì)圖書種類D T D達(dá)成了大量共識(shí)。需要根據(jù)該詞匯表解析文檔的應(yīng)用程序可能會(huì)通過某種策略來定位D T D。假如這個(gè)D T D非常普及,應(yīng)用程序或許有本地拷貝。直接使用本地拷貝可能比從We b服務(wù)器上遠(yuǎn)程下載更可取。D T D可能存放在數(shù)據(jù)庫(kù)中,或者可以通過其他與應(yīng)用程序相關(guān)的技術(shù)獲得。假如使用P U B L I C要害字和U R I,應(yīng)用程序就有機(jī)會(huì)利用自己的算法定位D T D。統(tǒng)一資源標(biāo)識(shí)符(URI)可以是URL,也可以是一個(gè)單獨(dú)的名字。
例如:
<!DOCTYPE ejb-jar PUBLIC “universal/publishing/book”
“http://www.myweb.com/dtd/books.dtd” >
假如U R I“universal/Publishing/Book”對(duì)于處理這類文檔的應(yīng)用程序來說是已知的,應(yīng)用程序可以通過某種有效的方式自行尋找D T D。或許我們恰好有適合該領(lǐng)域的解析器。它可能有D T D的本地拷貝,或者它可以訪問由本地?cái)?shù)據(jù)庫(kù)服務(wù)器維護(hù)的D T D。最要害的是,尋找D T D的方法主要是由負(fù)責(zé)處理D O C T Y P E聲明的應(yīng)用程序確定的。
當(dāng)然,“眾所周知”通常是相對(duì)的。因此, XML 1.0答應(yīng)P U B L I C聲明同時(shí)有公共U R I和系統(tǒng)標(biāo)識(shí)符。假如使用文檔的應(yīng)用程序或解析器不能從P U B L I C要害字提供的U R I定位D T D,它必須使用系統(tǒng)標(biāo)識(shí)符。
在本例中,文檔的設(shè)計(jì)者答應(yīng)作為接收方的應(yīng)用程序根據(jù)公共的U R I自行尋找D T D。假如該過程失敗,對(duì)我們的出版領(lǐng)域不熟悉的通用解析器一般屬于這種情況,應(yīng)用程序可以從地址為 http://www.myweb.com/ 的We b服務(wù)器請(qǐng)求指定的文件,即獲取網(wǎng)絡(luò)上的dtd文件:http://www.myweb.com/dtd/books.dtd 。