曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
• 字符引用
• 實(shí)體引用
讓我們先來了解一下字符引用。
2.6.1 字符引用
在X M L中,字符引用是一個(gè)字符文字形式的替代品,當(dāng)對(duì)該字符的文字形式直接處理會(huì)導(dǎo)
致違反X M L對(duì)格式正規(guī)的要求時(shí)(參見本章后面的2 . 1 2節(jié)“格式正規(guī)的文檔”),它會(huì)起到非常
重要的作用。
字符引用用來表示一個(gè)可顯示的字符,它由十進(jìn)制或十六進(jìn)制的數(shù)字前面加上“ & #”或
“& # x”,后面緊跟分號(hào)(;)組成:
上面的字符串“ N N N N N”和“X X X X X”可能是一個(gè)或多個(gè)數(shù)字,它們對(duì)應(yīng)著任何X M L允
許的統(tǒng)一代碼字符值。雖然在H T M L中十進(jìn)制數(shù)字更加通用,但X M L還是偏向于使用十六進(jìn)制
的形式,因?yàn)榻y(tǒng)一代碼就使用十六進(jìn)制進(jìn)行編碼。
例如,& # 1 6 9或& # x A 9(在H T M L瀏覽器中)會(huì)被顯示為( c ),而& # 1 7 4或& # x A D會(huì)顯示為®。
下面,我們把它們同實(shí)體引用比較一下。
2.6.2 實(shí)體引用
實(shí)體引用允許在元素內(nèi)容或?qū)傩灾抵胁迦肴魏巫址,這就為字符引用提供了一種助記的
34使用XML 高級(jí)編程
下載
替代方式。
實(shí)體引用是一種合法的X M L名字,前面帶有一個(gè)符號(hào)“&”,后面跟著一個(gè)分號(hào)( ;):
& n a m e ;
有五個(gè)實(shí)體被定義為X M L的固有部分,它們通常用作X M L標(biāo)記分隔符號(hào)的轉(zhuǎn)義序列(參見
表2 - 3)。
表2 - 3
實(shí)體用途
& a m p ; 通常用來替換字符&(除了在C D ATA部分中—本章稍后將詳細(xì)介紹)
& l t ; 通常用來替換字符小于號(hào)( <)(除了在C D ATA部分中)
& g t ; 可能用來替換字符大于號(hào)( >)—在C D ATA部分中,如果>緊跟著字符
串“] ]”就必須使用該實(shí)體
& a p o s ; 可用來替換字符串中的單引號(hào)( ')
& q u o t ; 可用來替換字符串中的字符雙引號(hào)( ")
除了上述五個(gè)實(shí)體,所有實(shí)體都必須在文檔使用前予以定義(就像傳統(tǒng)編程中宏的定義和
使用一樣)。實(shí)體在文檔的D T D中定義,D T D可以是一個(gè)被稱作“外部子集”的文檔外的獨(dú)立對(duì)
象(參見第3章);也可以是一個(gè)在文檔本身中使用< ! D O C T Y P E . . . >聲明的“內(nèi)部子集”(參見
本章稍后的“文檔類型聲明”部分)。如果X M L解析器發(fā)現(xiàn)一個(gè)未定義的實(shí)體引用,就會(huì)按照
X M L規(guī)范定義的那樣報(bào)告一個(gè)致命錯(cuò)誤(在2 . 1 2節(jié)“格式正規(guī)的文檔”部分你也會(huì)看到關(guān)于這
項(xiàng)內(nèi)容的細(xì)節(jié))。
例如:AT & a m p ; T在支持X M L的瀏覽器中會(huì)顯示為AT & T,"Jack's Tr a c k s & q u o t ;
則顯示為“Jack's Tr a c k s。 ”
實(shí)體引用還可以用作普通的文本宏(樣本文件)。例如下面的文本包含了一對(duì)實(shí)體引用:
當(dāng)引用被替換成它們所代表的值時(shí),它可能顯示為:
當(dāng)然,此時(shí)我們假設(shè)這些實(shí)體已經(jīng)經(jīng)過定義。
如果實(shí)體的替換文本在聲明時(shí)包含另一個(gè)實(shí)體引用,該引用會(huì)順序擴(kuò)展開,直到所有嵌套
的引用全部解析完畢。但是,嵌套的“名稱”不能夠包含對(duì)自己的遞歸引用,不管是直接的還
是間接的。(在后面“文檔類型聲明”部分我們將知道對(duì)實(shí)體的聲明是如何處理的。)
現(xiàn)在,我們來看一看處理指令。
2.7 處理指令
既然X M L像以前的S G M L一樣是一種描述性的標(biāo)記語言,它并不預(yù)先假設(shè)元素或者其內(nèi)容
的處理辦法。這是一種非常強(qiáng)大的優(yōu)勢(shì),因?yàn)樗峁┝孙@示的靈活性,以及針對(duì)應(yīng)用程序和操
作系統(tǒng)的獨(dú)立性。但是,我們會(huì)發(fā)現(xiàn)經(jīng)常需要把某些線索通過文檔傳遞給應(yīng)用程序。處理指令
(Processing Instruction,P I)正是X M L為此目的提供的一種機(jī)制。
第2章XML 語法使用35
下載
P I使用的是X M L元素語法的一種變形:
處理指令t a rg e t是必須的部分,而且必須是有效的X M L名稱,它用來指明哪個(gè)應(yīng)用程序(或
者其他對(duì)象)需要P I的幫助。P I的... instruction ...部分只不過是一個(gè)字符串表示,它可能包含任
何有效的字符,除了“ ? >”(因?yàn)檫@是P I的結(jié)束符)。此外在XML 1.0推薦標(biāo)準(zhǔn)中就沒有更多關(guān)于
P I語法的定義了。
另一個(gè)幾乎隨處可見的P I的用途就是將一個(gè)樣式單和X M L數(shù)據(jù)對(duì)象關(guān)聯(lián)起來:
這個(gè)P I并沒有出現(xiàn)在XML 1.0 推薦規(guī)范當(dāng)中,但在W 3 C推薦標(biāo)準(zhǔn)中則不同,你可以在
h t t p : / / w w w. w 3 . o rg / T R / x m l - s t y l e s h e e t找到1 9 9 9年6月2 9提出的“Associating Style Sheets with
XML Documents, Version 1.0”。在第1 3章中你會(huì)了解到更多關(guān)于這個(gè)處理指令的使用的內(nèi)容。
請(qǐng)注意樣式單關(guān)聯(lián)的處理指令的名字以字符串“ x m l”開頭;這對(duì)于任何非W 3 C定義的P I都
屬于非法,因?yàn)樗鼈兌荚赪 3 C規(guī)范中保留使用。
X M L開發(fā)者群體一直在爭論P(yáng) I是否真正有用,以及特殊語法是否會(huì)妨礙X M L的普遍性(因
為在現(xiàn)有的瀏覽器中缺少對(duì)P I的支持,而且非標(biāo)準(zhǔn)化的目標(biāo)名稱可能會(huì)造成標(biāo)記的不兼容性)。
另一個(gè)針對(duì)P I的爭論是許多通過P I傳遞的信息最好僅用在外部樣式單中。
另一方面, P I也可能有幾個(gè)好處:它可以作為腳本或服務(wù)端包含文件的掛鉤(避免類似
H T M L語法中“<!-- -->”注釋語法的泛濫成災(zāi));可以作為擴(kuò)展模式的機(jī)制(否則它們就不能
被修改);它也是一種無需改變D T D認(rèn)證就可以擴(kuò)展文檔的方法;此外,它也可以作為一種傳
遞嵌入在文檔當(dāng)中的文檔顯示信息的途徑,而且不會(huì)影響文檔的結(jié)構(gòu)。
既然我們已經(jīng)談到了H T M L當(dāng)中的注釋語法。下面讓我們來看一看X M L的類似機(jī)制。
2.8 注釋
這種機(jī)制對(duì)于在文檔當(dāng)中插入提示,或者叫注釋( c o m m e n t)來說是相當(dāng)有幫助的。這些注
釋可能提供修訂記錄、歷史信息或者其他類型的可能對(duì)創(chuàng)建者或者文檔編輯者來說有著特殊意
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(15)