曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
XML 文檔。語法分析器的任務(wù)就是按固定的序列把所有不同文檔組合起來。文檔中可包含另一文檔,或許這個(gè)還包含其他文
檔。只要沒有遞歸的文檔包含行為(處理器可報(bào)告的錯(cuò)誤),應(yīng)用程序就僅能看見一個(gè)單一、完整的文檔。從本質(zhì)上說,這
種機(jī)制提供客戶端嵌入的功能。
對XML 而言,可使用外部通用實(shí)體引用的方法,在文檔中嵌入另一文檔。在DTD 中,可按下述語法結(jié)構(gòu)聲明外部引用:
<!ENTITY name SYSTEM "URI">
URI 就是Uniform Resource Identifier,與URL 類似,但允許更加精確的資源鏈接規(guī)范。從理論上說,URI 把資源與其儲
存位置分開,所以Web 瀏覽器可以選擇最近的或最空閑的幾個(gè)鏡像幾個(gè)鏡像站點(diǎn),而無需明確指明該鏈接。URI 領(lǐng)域的研究
非常活躍,爭論激烈,因此在實(shí)際應(yīng)用中和在本書中,URI 就是多用途的URL。
例如,可能想在站點(diǎn)的每個(gè)頁面中都放置相同的簽字塊。為明確所見,我們假設(shè)簽字塊為清單9-3 所示的XML 代碼,而且假
定可從URL http://metalab.unc.edu/xml/signature.xml.上獲得該代碼。
清單9-3:XML 簽字文件
<?xml version="1.0">
<SIGNATURE>
<COPYRIGHT>1999 Elliotte Rusty Harold</COPYRIGHT>
<EMAIL>elharo@metalab.unc.edu</EMAIL>
</SIGNATURE>
在DTD 中添加如下聲明,可把實(shí)體引用&SIG;與這個(gè)文件聯(lián)系在一起:
XML 實(shí)用大全
第 258 頁
<!ENTITY SIG SYSTEM "http://metalab.unc.edu/xml/signature.xml">
也可使用相關(guān)的URL。例如:
<!ENTITY SIG SYSTEM "xml/signature.xml">
如果被引用的文件放置于與引用該文件的文件所處的同一目錄中,那么僅需使用一文件名進(jìn)行引用。例如:
<!ENTITY SIG SYSTEM "signature.xml">
利用上述任一種聲明,僅需使用&SIG;,就可在文檔的任意位置引用簽字文件的內(nèi)容。如清單9-4 中的簡單的文檔,圖9-2
顯示的是在Internet Explorer 5.0 中交付的文檔。
圖9-2 使用外部通用實(shí)體引用的文檔
清單9-4:SIG 外部通用實(shí)體引用
<?xml version="1.0" standalone="no">
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (TITLE, SIGNATURE)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT COPYRIGHT (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT SIGNATURE (COPYRIGHT, EMAIL)>
XML 實(shí)用大全
第 259 頁
<!ENTITY SIG SYSTEM
"http://metalab.unc.edu/xml/signature.xml"?
]>
</DOCUMENT>
<TITLE>Entity references</TITLE>
&SIG;
</DOCUMENT>
注意外部實(shí)體引用的附加作用,因?yàn)槲募辉偻暾訶ML 聲明中的standalone 屬性值為no。解析文件表明該文件需要
外部文件signature.xml 中的數(shù)據(jù)。
XML 實(shí)用大全
第 260 頁
.4 內(nèi)部參數(shù)實(shí)體
通用實(shí)體成為文檔的一部分,而非DTD 的組成成分。通用實(shí)體引用僅可用于DTD 中能成為文檔組成部分的位置上;通用實(shí)體
引用不能插入那些僅為DTD 而非文檔內(nèi)容的文本。然而在DTD 中的實(shí)體引用通常是有用的,因此XML 提供了參數(shù)實(shí)體引用的
手段。
除了如下兩個(gè)關(guān)鍵處不同,參數(shù)實(shí)體引用與通用實(shí)體引用非常相似:
1.參數(shù)實(shí)體引用以百分號%開始,而非&符號。
2.參數(shù)實(shí)體引用僅可在DTD 中出現(xiàn),而不能位于文檔內(nèi)容中。
參數(shù)實(shí)體引用在DTD 中聲明的方法與通用實(shí)體類似,只是在實(shí)體名前加一百分號。句法結(jié)構(gòu)如下:
<!ENTITY % name "replacement text">
實(shí)體名為實(shí)體內(nèi)容的縮寫。讀者所見為雙引號間的替換文本。例如:
<!ENTITY % ERH "Elliotte Rusty Harold">
<!ENTITY COPY99 "Copyright 1999 %ERH;">
當(dāng)使用參數(shù)實(shí)體引用替換通用實(shí)體引用后,前文中無法實(shí)現(xiàn)的縮寫(#PCDATA)變?yōu)橛行В?br />
<!ENTITY % PCD "(#PCDATA)">
<!ELEMENT ANTIMAL %PCD;>
<!ELEMENT FOOD %PCD;>
在元素間的子元素和屬性共享通用列表中呈現(xiàn)參數(shù)實(shí)體引用的真實(shí)值。若替換的文本塊較大且使用次數(shù)較多,則參數(shù)實(shí)體引
用用處更大。例如,假設(shè)在DTD 聲明中有許多層次結(jié)構(gòu)元素,如PARAGRAPH、CELL 和HEADING。每個(gè)該類元素都有確定的內(nèi)
聯(lián)元素?cái)?shù)目,類似PERSON、DEGREE、MODEL、PRODUCT、ANIMAL、INGREDIENT 等等的內(nèi)部元素。這些元素的聲明可能表現(xiàn)為
下述方式:
<!ELEMENT PARAGRAPH
(PERSON | DEGREE | MODEL | PRODUCT | ANTIMAL | INGREDIENT)*>
<!ELEMENT CELL
(PERSON | DEGREE | MODEL | PRODUCT | ANTIMAL | INGREDIENT)*>
<!ELEMENT HEADING
(PERSON | DEGREE | MODEL | PRODUCT | ANTIMAL | INGREDIENT)*>
XML 實(shí)用大全
第 261 頁
容器元素都有相同的內(nèi)容。假如創(chuàng)建了一個(gè)新元素如EQUATION、CD 或ACCOUNT,則該元素必須聲明為所有三個(gè)元素的子元
素。若在前兩個(gè)元素中添加新元素,卻忘了在第三個(gè)元素中添加,就會引發(fā)問題。若元素的數(shù)目為30 或者300 個(gè),而非3
個(gè),則問題將成倍增加。
若對每個(gè)容器元素不是給出單獨(dú)的子元素列表,則DTD 的維護(hù)將較為簡便。替代的方法是子元素列表變?yōu)閰?shù)實(shí)體引用,然
后在每個(gè)聲明元素聲明中應(yīng)用參數(shù)實(shí)體引用。例如:
<!ENTITY % inlines
"(PERSON | DEGREE | MODEL | PRODUCT | ANTIMAL | INGREDIENT)*">?
<!ELEMENT PARAGRAPH %inlines;>
<!ELEMENT CELL %inlines;>
<!ELEMENT HEADING %inlines;>
當(dāng)添加新元素時(shí),僅需簡單地改變一個(gè)參數(shù)實(shí)體聲明,而勿需改變3 個(gè)、30 或300 個(gè)元素聲明。
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(76)