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