曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
q u o t e l i s t . x m l之間添加了鏈接:
程序清單8 - 3 9
當(dāng)識(shí)別X L i n k處理器打開鏈接文檔時(shí),讀取擴(kuò)展鏈接,可以看到q u t o e l i s t文檔和c o m m e n t s文
檔之間存在一個(gè)鏈接。可以提出q u o t e l i s t內(nèi)容,并允許鏈接回注釋文檔(參見圖8 - 11)。
點(diǎn)擊鏈接元素就可得到c o m m e n t信息(參見圖8 - 1 2)。
如果我們能鏈接到q u o t e l i s t . x m l文檔中精確的位置,該位置對(duì)應(yīng)著我們正在評(píng)論的單詞,
“m e n”,那就更好了—不過這是XPo i n t e r的工作,我們將在下面討論。
9. Xlink總結(jié)
第8章鏈接和查詢使用265 下載
圖8-11
圖8-12
XLi n k為在X M L文檔中定義鏈接提供一種靈活的機(jī)制,使不同的資源連接到一起。這些資源
甚至可以是通常并不包含鏈接的資源,像圖像文件。XLi n k可以用于把一個(gè)文檔鏈接到另一個(gè)文
檔,可以用于比H T M L超鏈接更多的文檔,或者它可以將把許多不同資源鏈接在一起。它也可以
用于從內(nèi)容中抽象出鏈接信息,以便于鏈接信息的更新。然而, XLi n k還沒有在任何一種目前最
常使用工具包中被實(shí)現(xiàn)并流行—雖然我們毫無疑問地相信XLi n k的一些形式很快被用于X M L
的開發(fā)中。
8.3 XPointer
我們前面提到如果我們能夠指向一個(gè)X M L文檔的一些組成部分,而不是指向整體文檔—
單獨(dú)子樹、屬性或者甚至文本內(nèi)容的一部分單獨(dú)字符。W 3 C提出一個(gè)機(jī)制可以使我們這樣做。
8.3.1 HTML指針
X M L指針的概念在H T M L中有一個(gè)類似物: <A NAME=...>標(biāo)識(shí)。這個(gè)標(biāo)識(shí)指明利用H T M L
指針語法可以鏈接到被< A >元素標(biāo)識(shí)的位置。例如:我們有下面的文檔, c o n t e n t . h t m:
266使用XML 高級(jí)編程
下載
程序清單8 - 4 0
我們從另一個(gè)文檔可以鏈接到該文檔, i n d e x . h t m,利用下面的語法:
程序清單8 - 4 1
H T M L利用符號(hào)# 來指明其后面的文字指向了目標(biāo)文檔中的一個(gè)命名的錨點(diǎn)。瀏覽器可以通
過把顯示器調(diào)整到目標(biāo)文檔的標(biāo)識(shí)位置,象征性地映射出內(nèi)容來。注意:像H T M L錨點(diǎn)一樣,目
標(biāo)文檔不需要直接指定;如果不是這樣,所有的XPo i n t e r位置將和文檔的基礎(chǔ)U R I相關(guān)連(通常
該文檔包含X P o i n t e r)。XPo i n t e r表達(dá)式可以用于U R I適用的任何地方。一個(gè)識(shí)別X P o i n t e r處理器
正確地對(duì)它們進(jìn)行處理。例如, XPointer 可以對(duì)擴(kuò)展XLi n k的定位的U R I進(jìn)一步精煉。
H T M L指針的問題
像H T M L鏈接一樣, H T M L指針存在缺點(diǎn):
(1) HTML錨點(diǎn)必須先被聲明
為了指出H T M L文檔中一個(gè)特定的位置,文檔必須含有<A NAME=...>錨引用。如果沒有這
個(gè)聲明,H T M L指針將不能指向H T M L文檔的一個(gè)位置,也就不可能指入一個(gè)不具有錨點(diǎn)聲明的
只讀文檔。
(2) HTML錨點(diǎn)必須鏈接到整個(gè)文檔
沒有辦法使得一個(gè)H T M L指針指向一個(gè)目標(biāo)文檔的一個(gè)部分—而只能指向整個(gè)文。如果我
們能夠定義一個(gè)指針使之僅僅指向目標(biāo)文檔的一個(gè)部分那就好了。這樣處理器就可以顯示出該
部分而不是整個(gè)目標(biāo)文檔。
后面我們將會(huì)看到, X M L指針機(jī)制將能夠解決這兩個(gè)問題。
8.3.2 XPointer 規(guī)范
W 3 C關(guān)于XML 指針的規(guī)范被稱為XPo i n t e r,它可以在下面的網(wǎng)址中查到:
h t t p : / / w w w. w 3 . o rg / T R / x p t r。
在本書編寫的時(shí)候, XPointer 還是一個(gè)處于最后召集狀態(tài)的運(yùn)行草案,這意味著下兩個(gè)月
內(nèi)它可能成為推薦產(chǎn)品,而該規(guī)范內(nèi)出現(xiàn)的信息將不可能發(fā)生重大改變。
注意:XPo i n t e r基本上是另一個(gè)規(guī)范, XPa t h的延伸。XPa t h是用于表達(dá)X M L文檔內(nèi)獨(dú)立信
息項(xiàng)目的W 3 C通用機(jī)制,也是X S LT的一個(gè)主要組成部分。XPo i n t e r提供了語法,用于說明一個(gè)
第8章鏈接和查詢使用267 下載
到達(dá)X M L文檔的鏈接的地址信息。稍后我們將簡要討論一下XPa t h。
1. 在U R I中指定XPo i n t e r
XPointer 可以按照和H T M L指針類似的方法被引用。當(dāng)使用識(shí)別X P o i n t e r處理器進(jìn)行處理的
時(shí)候,通過給X M L文檔自身的U R I附加一個(gè)XPo i n t e r程序段標(biāo)識(shí)符,U R I可以包含該X M L文檔內(nèi)
一個(gè)位置的引用。和H T M L錨點(diǎn)引用不同,應(yīng)用于U R I的指針機(jī)制可以通過放置指針機(jī)制名稱及
定位的括弧來識(shí)別—對(duì)于XPo i n t e r來說,總是采用XPointer( )的形式。
例如:h t t p : / / w w w. w r o x . c o m / C a t a l o g / c a t a l o g . x m l # x p o i n t e r ( b o o k 1 )會(huì)指向c a t a l o g . x m l文檔內(nèi)具
有I D為b o o k 1的元素。我們稍后將從一定的深度討論程序段標(biāo)識(shí)符的指定方法。
上個(gè)例子按照和H T M L指針同樣的方法指向文檔,程序段標(biāo)識(shí)符指明了在映射內(nèi)容時(shí),文檔
移動(dòng)的位置。請(qǐng)求一個(gè)需要顯示的指定程序段而忽略文檔的其他部分也是可行的,這通過使用
程序段指示符“|”,而不是“ #”實(shí)現(xiàn):
h t t p : / / w w w . w r o x . c o m / C a t a l o g / c a t a l o g . x m l | x p o i n t e r ( b o o k 1 )
這個(gè)U R I僅僅映射具有I D為book1 的元素(以及任何包含在該元素內(nèi)的子元素及屬性),而忽
略了文檔的其他部分,這就為篩選大的XML 文檔,返回和附近位置相關(guān)的信息提供一個(gè)很好的
方法。
2. 程序段標(biāo)識(shí)符可以如何指定
在XPo i n t e r中有三種方法指定程序段標(biāo)識(shí)符。其中之一為完全指定,非常復(fù)雜,并允許以一
定的靈活性來指向一個(gè)X M L文檔。它是建立在W3C XPa t h推薦標(biāo)準(zhǔn)基礎(chǔ)之上,這一點(diǎn)我們?cè)谟?br />
論完整規(guī)范機(jī)制時(shí)將會(huì)對(duì)其進(jìn)行探討。首先,我們討論在XPo i n t e r中指定程序段標(biāo)識(shí)符的其他兩
種方法。
(1) Bare Name程序段標(biāo)識(shí)
為提供我們?cè)贖 T M L中使用的類似功能,一種速記表示法被提出,用來指向具有特定I D的
元素。例如,假如我們有下列的文檔, c a t a l o g . x m l:
中國航空網(wǎng) m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(93)