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