曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<!ENTITY EMAIL "elharo@metalab.unc.edu">
XML 實用大全
第 254 頁
<!ENTITY LM "Last modified: ">
因日期對不同的文檔可能會發(fā)生改變,故而忽略了&LM;中的日期。若把日期作為一個實體引用,不會帶來任何好處。
現(xiàn)在,就可把清單9-1 內(nèi)容重寫成更加簡潔的形式:
<DOCUMENT>
<TITLE>&ERH;</TITLE>
<SIGNATURE>
<COPYRIGHT>©99; &ERH;</COPYRIGHT>
<EMAIL>&EMAIL;</EMAIL>
<LAS _MODIFIED>&LM; March 10, 1999</LAST_MODIFIED>
</SIGNATURE>
</DOCUMENT>
應(yīng)用實體引用代替書寫文本全文的一個好處是使得更改文本更加簡便,在簡單的DTD 被若干文檔共享的情況下,特別有用。
例如,假設(shè)把電子郵件地址從elharo@metalab.unc.edu 更改為eharold@solar.stanford.edu,僅需按如下內(nèi)容更改DTD 中
的一行內(nèi)容,而勿需在多個文檔中尋找和替換郵件地址:
<!ENTITY EMAIL "eharold@solar.stanford.edu">
9.2.2 在DTD 中使用通用實體引用
讀者或許對是否能像下面的代碼一樣在一個通用實體引用中包含另一個通用實體引用表示懷疑,如下所示:
<!ENTITY COPY99 "copyright 1999 &ERH;">
實際上該例是合法的,因為ERH 實體作為COPY99 實體的一部分存在,而COPY99 實體本身最終又成為文檔內(nèi)容的一部分。盡
管存在某些限制,對于DTD 中的其他地方,若最終能轉(zhuǎn)換成文檔內(nèi)容的一部分(例如作為缺省屬性值),則也可在此處使用
通用實體引用。第一條限制:語句中不能使用如下的循環(huán)引用:
<!ENTITY ERH "©99 Elliotte Rusty Harold">?
<!ENTITY COPY99 "copyright 1999 &ERH;">?
第二條限制:通用實體引用不能插入僅為DTD 的一部分且不能作為文檔內(nèi)容的文本。例如,下述簡略用法的企圖無法實現(xiàn):
<!ENTITY PCD "(#PCDATA)">
<!ELEMENT ANTIMAL &PCD;>
XML 實用大全
第 255 頁
<!ELEMENT FOOD &PCD;>
然而,利用實體引用把文本合并到文檔的DTD 中的方法常常是有用的。為此目的,XML 使用將在下章中講述的參數(shù)實體引用
來實現(xiàn)這一目的。
對通用實體值的限制僅在于不能直接包含三種字符:% 、&、”,可是能經(jīng)過使用字符引用包含這三種字符。若&和%僅作為
實體引用的開頭,而不代表自身含義,則可包含其中。限制很少意味著實體可包含標(biāo)記和分割為多行。例如下面的SIGNATURE
實體是有效的:
"<SIGNATURE>
<COPYRIGHT>1999 Elliotte Rusty Harold</COPYRIGH >
<EMAIL>elharo@metalab.unc.edu</EMAIL>
<LAST_MODIFIED>March 10, 1999</LAST_MODIFIED>
</SIGNATURE>"
>
下一個關(guān)心的問題是實體是否可以擁有參數(shù)。能否使用上面的SIGNATURE 實體,但卻改變每頁中每一獨立的LAST_MODIFIED
元素的數(shù)據(jù)?答案是否定的;實體僅為靜態(tài)的替換文本。若需要給實體傳送數(shù)據(jù),應(yīng)改為使用標(biāo)記符,并在樣式單中隨同提
供適當(dāng)?shù)膶崿F(xiàn)指令。
9.2.3 預(yù)定義通用實體引用
XML 預(yù)定義五個通用實體引用,如表9-1 所示。五個實體引用出現(xiàn)在XML 文檔中用來代替一些特殊的字符,這些字符如果不
用引用方式就會被解釋為標(biāo)記。例如實體引用<;代表小于號<,小于符號<可解釋為標(biāo)記的開頭。
考慮到最大限度的兼容,若計劃使用預(yù)定義實體引用,就該在DTD 中聲明這些引用。因為需要避免DTD 中字符的遞歸引用,
所以聲明時必須相當(dāng)小心。為方便引用的聲明,字符引用使用字符的十六進(jìn)制ASCII 值。清單9-2 顯示了所需要的聲明。
表9-1 XML 中的預(yù)定義實體引用
實體引用 字符
& &
< <
> >
" "
'
清單9-2:預(yù)定義通用實體引用聲明
<!ENTITY lt "&#60;">
XML 實用大全
第 256 頁
<!ENTITY gt ">">
<!ENTITY amp "&#38;">
<!ENTITY apos "'">
<!ENTITY quot """>
XML 實用大全
第 257 頁
9.3 外部通用實體
包含基本元素/文檔實體的主文件以外的數(shù)據(jù)稱為外部實體。通過外部實體引用可在文檔中嵌入外部實體和從若干相互獨立
的文件中獲取數(shù)據(jù)組建為XML 文檔。
僅使用內(nèi)部實體的文檔非常類似于HTML 模式。文檔的完整文本存放于單一文件中,圖像、JAVA 小程序、聲音和非HTML 數(shù)
據(jù)也可鏈接入文件中,但至少在文件中要有所有的文本。當(dāng)然,HTML 模式存在一些問題。特別在文檔中嵌入動態(tài)信息的過
程是一件非常困難的事情。可通過使用CGI、JAVA 小程序所愛好的數(shù)據(jù)庫軟件、服務(wù)器方面提供的手段和其他各種各樣的方
法嵌入動態(tài)信息,但HTML 僅提供靜態(tài)文檔支持。從若干文件中獲取數(shù)據(jù)組建文檔的行為必須在HTML 外部進(jìn)行。HTML 中解
決這問題的最簡單的方法是使用框架,但這是非常糟糕的用戶界面,通常令用戶迷惑和討厭。
部分問題是HTML 文檔不能自然地插入到另一個HTML 文檔中,每個HTML 文檔有且僅有一個BODY,服務(wù)器端嵌入法僅能提供
把HTML 片段嵌入文檔的能力,而不是嵌入有效的文檔實體,此外服務(wù)器端提供的引用需依賴于服務(wù)器的存在,而不是真正
的HTML 文檔部分。
然而,XML 更加靈活。一個文檔的基本元素沒有必要與另一文檔基本元素相同。即使兩個文檔共享同一基本元素,DTD 也可
聲明元素對自身的包含。在適當(dāng)?shù)臅r候,XML 標(biāo)準(zhǔn)并不制止結(jié)構(gòu)完整的XML 文檔嵌入另一結(jié)構(gòu)完整的XML 文檔的做法。
但是,XML 走得更遠(yuǎn)一些,可定義一個機制,利用這機制可在若干本地或遠(yuǎn)程系統(tǒng)上的、較小的XML 文檔的基礎(chǔ)上建立新的
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(75)