曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<!ENTITY ocirc "ô"><!-small o, circumflex accent ->
<!ENTITY otilde "õ"><!-small o, tilde ->
<!ENTITY ouml "ö"><!-small o, dieresis or umlaut->
<!ENTITY oslash "ø"><!-small o, slash ->
<!ENTITY ugrave "ù"><!-small u, grave accent ->
<!ENTITY uacute "ú"><!-small u, acute accent ->
<!ENTITY ucirc "û"><!-small u, circumflex accent ->
XML 實用大全
第 290 頁
<!ENTITY uuml "ü"><!-small u, dieresis or umlaut ->
<!ENTITY yacute "ý"><!-small y, acute accent ->
<!ENTITY thorn "þ"><!-small thorn, Icelandic ->
<!ENTITY yuml "ÿ"><!-small y, dieresis or umlaut ->
可簡單地應(yīng)用參數(shù)實體引用鏈接到清單9-18 所示的實體引用,然后在文檔中使用通用實體引用,而不需要把清單9-18 包含
在文檔DTD 的內(nèi)部子集中。
例如,假設(shè)需要以結(jié)構(gòu)完整的XML 文檔將中世紀(jì)的Hlidebrandslied 文檔放入Web 上,可是原稿為德語書寫的,文中使用了
非ASCII 字符æ、ê、î、ô 和û。
為使文檔具有最大的可移植性,可按ASCII 字符鍵入詩文,而把這些字母分別編碼為ê;、î;、ô;、û;
和æ;的實體引用。即使不需要有效完整的文檔,也依然需要一個DTD,該DTD 聲明使用的各種實體引用。獲取所需擴
展字符的最簡單方法就是簡單地引用清單9-18 中的外部DTD。清單9-19 說明了這種情況。
清單9-19:為使用ASCII ISO Latin-1 字母而使用實體引用的無效完整文檔
<?xml version="1.0" standalone="no"?>
<!DOCTYPE DOCUMENT [
<!ENTITY % ISOlat1
PUBLIC "ISO 8879-1986//E I IES Added Latin 1//E //XML"
"http://www.schema.net/public-text/ISOlat1.pen">
%ISOlat1;
]>
<DOCUMENT>
<TITLE>Das Hildebrandslied, circa 775 C.E. </TITLE>
<LINE>Ik gihôrta dhat seggen,</LINE>
<LINE>dhat sih urhêttun ænon muotîn,</LINE>
<LINE>Hiltibrant enti Hadhubrant untar heriun tuêm.
</LINE>
<LINE>sunufatarungo: iro saro rihtun,</LINE>
XML 實用大全
第 291 頁
<COMMENT>I ll spare you the next 61 lines</COMMENT>
</DOCUMENT>
文檔部分是由使用現(xiàn)場編寫的標(biāo)記的結(jié)構(gòu)完整的XML 所組成。這些標(biāo)記未在DTD 中聲明過,也沒有必要去維護文檔的結(jié)構(gòu)完
整性。可是實體引用需要在內(nèi)部或外部子集的DTD 中聲明。在清單9-19 中,通過外部參數(shù)實體引用%ISO1atl 載入清單9-18
中聲明的實體,也就在外部子集中聲明了實體引用。
DTD 也可用于儲存通用樣式文本,該文本用在整個Web 站點上的結(jié)構(gòu)完整的XML 文檔,有利于維護XML 文檔的合法性。當(dāng)僅
僅處理結(jié)構(gòu)完整的XML 文檔時,可體現(xiàn)出一定的簡便性,這是因為插入到文檔中的樣式文本與父文檔DTD 的約束條件上不會
出現(xiàn)任何匹配問題。
首先,把不帶DTD 的樣式插入到一個文件中,如清單9-20 所示。
清單9-20:不帶DTD 的Signature 樣板
<?xml version="1.0"?>
<SIGNATURE>
<COPYRIGHT>1999 Elliotte Rusty Harold</COPYRIGH >
<EMAIL>elharo@metalab.unc.edu</EMAIL>
</SIGNATURE>
接下來,按清單9-21 所示編寫一個小型的DTD,該DTD 為清單9-20 中的文件定義一實體引用。在這里,假設(shè)可在文件
signature.xml 中找到清單9-20 所示內(nèi)容,該文件位于Web 服務(wù)器根目錄上的boilerplate 目錄中;也假定可在文件
singature.dtd 中找到清單9-21 所示內(nèi)容,該文件位于Web 服務(wù)器根目錄上的dtds 目錄中.
清單9-21:定義實體引用的Signature DTD
<!ENTITY SIGNATURE SYSTEM "/boilerplate/signature.xml">
現(xiàn)在,就可在文檔中引入signature.dtd,然后使用通用實體引用&SIGNATURE;,就可在文件中嵌入signature.xml 的內(nèi)容。
清單9-22 說明了這種用法:
清單9-22:使用&SIGNATURE;的文件
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ENTITY % SIG SYSTEM "/dtds/signature.dtd">
%SIG;
]>
XML 實用大全
第 292 頁
<DOCUMENT>
<TITLE>A Very Boring Document</TITLE>
&SIGNATURE;
</DOCUMENT>
似乎這種間接的做法與真正所需的相比較,多了一個層次。例如清單9-23 直接在其內(nèi)部DTD 子集中定義了&SIGNATURE;實
體引用,且確實有效。但是這種間接做法所增加的層次可保護Web 站點免于被更改,這是因為無法通過編輯一個文件的方式
僅更改所有頁面使用的signature 內(nèi)容。也可通過編輯一個文件的方式更改所有Web 頁面使用的signature 的位置。另一方
面,清單9-22 中使用的方法越直接,就越便于在不同的頁面上使用不同的signature。
清單9-23:使用&SIGNATURE;減少了一層非直接引用的文件
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ENTITY % SIGNATURE SYSTEM "/dtds/signature.dtd">
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(84)