曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
鏈接:
程序清單8 - 3 2
聲明中那些顯式鏈接是由< x l i n k : a r c >元素定義的(參見圖8 - 4)。
然而如果我們不包括< x l i n k : a r c >元素,在擴展鏈接定義的一部分定義的每個定位之間會存在
隱式a r c(參見圖8 - 5)。
W 3 C并沒有規定識別X L i n k解析器有必要處理隱式鏈接,或者是不是它們和顯式鏈接的處理
方式不同。另外,XLi n k的實現如何處理這個問題還沒有定論。
通過定義一個帶有l o c a t o r和a r c的擴展鏈接,只要有必要可以按照任意復雜的式樣,把任何
數量的資源連接在一連。我們稍后看一下擴展鏈接的幾種使用方法,不過首先我們看一下內聯
擴展鏈接和外聯擴展鏈接的區別。
6. 內聯擴展鏈接和外聯擴展鏈接
擴展鏈接可以嵌入到參與擴展鏈接的一個資源中(如果這個資源恰好是X M L文檔)。這種鏈
258使用XML 高級編程
下載
接定義對于擴展鏈接中的任何定位并不意味著什么—它可以通過識別X L i n k處理器來解析,可
以按照處理器顯式定位之間的a r c的任何合適的方式來使用它。
圖8-4
圖8-5
如果采用把擴展鏈接嵌入到鏈接中使用的一個位置,這種方法會產生兩個問題:
• 如果包含了擴展鏈接的資源先被讀取,那么一個識別X L i n k處理器能夠瀏覽這個鏈接。但
是如果資源2被首先讀取了,將會發生什么呢?這樣處理器就無法知道到資源3的合法鏈接
第8章鏈接和查詢使用259 下載
定位定位
定位定位
定位
定位定位
定位
可以被瀏覽。這個鏈接信息可以在每個資源中重復,而這些資源在擴展鏈接中包含有定位,
然而這樣你就會陷入維護的夢魘。
圖8-6
• 包含鏈接的資源必須是一個X M L資源。例如,如果我們想在上面所顯示的圖案中把四個圖
像資源鏈接在一起,那該如何呢?我們在哪里放置鏈接信息呢?
7. 外聯擴展鏈接—使用L i n k b a s e s
一類特殊的< x l i n k : e x t e n d e d >元素被用來向識別X L i n k處理器指明一個外聯擴展鏈接存在于
特定文檔中。它們的r o l e屬性必須設置為x l i n k : e x t e r n a l - l i n k s e t。l o c a t o r子元素定義了外部X M L文
檔,這個外部X M L文檔中包含了正被處理的文檔的XLi n k信息:
程序清單8 - 3 3
當一個識別X L i n k處理器遇到帶有x l i n k : e x t e r n a l - l i n k s e t角色的擴展鏈接,它讀取了擴展鏈接
元素的l o c a t o r子元素指示的文檔,來尋找引用了正被處理文檔的外部鏈接。它然后就“記住”
了那個信息,就好像它被包含在原始文檔中。這將使維持項目間的鏈接變得更加容易—實際
上,解決了前面的“ Joe wants to add a pasta menu”問題。
260使用XML 高級編程
下載
鏈接元素
資源1 資源2
資源3 資源4
定位定位
定位定位
圖8 - 7是幾個分離的X M L文檔,它們包含有連接我們的資源外聯鏈接信息。
圖8-7
如果我們把擴展鏈接x l i n k : e x t e r n a l - l i n k s e t加入到四個鏈接后的文檔中,當其中任何一個文檔
變為當前文檔時,該擴展鏈接信息仍可用(參見圖8 - 8)。
圖8-8
第8章鏈接和查詢使用261 下載
資源1
資源3 資源4
資源1 資源2
資源3 資源4
定位定位
定位定位
鏈接
元素
鏈接庫
資源2
定位
定位定位
定位
鏈接
元素
鏈接庫
8. 擴展鏈接的幾個例子
讓我們看一下擴展鏈接如何解決我們前面提到的關于H T M L鏈接的一些問題:
• HTML鏈接必須嵌在源文檔中。
• HTML鏈接僅允許沿一個方向瀏覽。
• HTML鏈接只鏈接兩個數據源。
• HTML鏈接并不指定顯示引擎的行為。
(1) 鏈接數據庫
利用擴展鏈接組,我們可以在文檔之間維護鏈接列表。我們會有下面這個鏈接文檔,
m e n u l i n k . x m l:
程序清單8 - 3 4
然后我們將有下面的m e n u 1 . x m l(應用于所有菜單頁相同的一般格式):
程序清單8 - 3 5
262使用XML 高級編程
下載
當m e n u 1 . x m l打開時,識別X L i n k處理器將從m e n u l i n k . x m l中讀取擴展鏈接信息,然后將文
檔通過一種可以使該文檔鏈接到m e n u 2 . x m l以更加清晰的方式顯示出來。一個瀏覽器可以選擇這
種方式表達信息(當然,這僅僅是形式上的—目前情況下還沒有瀏覽器直接支持X L i n k,參見
圖8 - 9)。
圖8-9
如果現在J o e想添加一個p a s t a菜單,我們所要作的僅僅是修改鏈接數據庫文檔:
程序清單8 - 3 6
第8章鏈接和查詢使用263 下載
當我們為這個p a s t a項目創建文檔m e n u 5 . x m l時,那么我們就不必返回去修改其他任何菜單
頁!我們的瀏覽器能夠自動體現出這個變化(參見圖8 - 1 0)。
圖8-10
264使用XML 高級編程
下載
如果我們希望改變這些菜單頁貫連的次序,可以通過修改鏈接數據庫文檔來實現這一點
(不是去修改鏈接中出現的每一個參與文檔,而這正是H T M L所需要的)。你可以看到,從內容
中抽象出鏈接信息是用來控制和維持文檔間鏈接的很強大的方法,這樣就可以使其他沒有控制
你的內容的人員鏈接到該內容,或從該內容鏈接到其他地方—在下一部分你將會看到這一點。
(2) 標出只讀文檔
利用外聯鏈接注釋來自其他數據源只讀文檔也是一個很好的方法。從下面的簡短的例子可
以看出它是如何做的。
假如我們有下面稱為q u o t e l i s t . x m l的只讀文檔,它包含著引用,這可以通過注釋來表明:
程序清單8 - 3 7
我們希望將這個文檔加到另一個文檔comments, xml中:
程序清單8 - 3 8
我們可以指定一個鏈接文檔, c o m m e n t l i n k . x m l,它在文檔c o m m e n t s . x m l和只讀文檔
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(92)