XML有很多相關的技術,將這些技術結合起來,才能充分發揮XML的強大功能。這些技術包括:Xlink與Xpointer(設置XML的超鏈接)、DOM(Document Object Model:文件對象模型,存取、操作文件的內容)、Namespaces(解決不同元素有相同名稱的問題)、XHTML(下一代的HTML)等。
■Xlink與Xpointer
在XML的規范中,我們看到它並沒有規定有關文件鏈接的問題。為了使XML文件也能夠有類似HTML文件超鏈接的功能,W3C制定了Xlink和Xpionter兩種規范,其中Xlink是規定XML文件之間的鏈接規范(和HTML中的外鏈接相似),Xpointer是規定XML文件中不同位置之間的鏈接規范(類似HTML中的內鏈接)。
1.Xlink:Xlink所設定的鏈接分為Simple Link和Extended Link。其中,Simple Link的鏈接功能和HTML的超鏈接基本上一樣,而Extended Link則超出了HTML超鏈接的功能,它鏈接的對象可以一次設定多個,由多個標記來共同制定該鏈接。
在XML文件中使用Xlink元素的時候,必須要在DTD中聲明這個元素。完整的聲明樣本如下(本樣本聲明了一個名為simple的Simple Link 類型的Xlink元素):
〈!ELEMENT simple ANY〉
〈!ATTLIST simple
xml:link CDATA #FIXED"simple"
href CDATA #REQUIRED
role CDATA #IMPLIED
title CDATA #IMPLIED
inline (true|false) "true"
content-role CDATA #IMPLIED
content-title CDATA #IMPLIED
show (embed|replace|new) #IMPLIED
actuate (auto|user) #IMPLIED
behavior CDATA #IMPLIED〉
可以看到,Xlink元素有多種屬性,通過對這些屬性賦值,可以編制出多種多樣的鏈接方式。下面我們對這些屬性作些解釋。
編輯推薦閱讀
● CSS與XSL簡述
Xml:link:指明鏈接類型是Simple Link還是Extended Link。
href:用來設定鏈接的地址,與HTML中A標記中的href屬性一樣。
role:敘述該鏈接功能,提供給應用程序讀取。
title:敘述該鏈接功能,提供給用戶讀取,與HTML中A標記的alt屬性相似。
inline:有“true”和“false”兩種取值,聲明建立的鏈接是否以嵌入方式鏈接,缺省為“true”。
content-role和content-title:和role、title類似,但它們敘述的是指向的內容,而不是鏈接的內容。
show:有三種取值,replace表示將鏈接的內容取代當前的內容,new表示將鏈接的內容在一個新的窗口打開,embed表示將鏈接的內容加入到當前的內容中。
actuate:設置該鏈接是如何被激活。auto表示XML文件被解讀後,鏈接自動被激活。而user表示,該鏈接必須被用戶手動激活,也就是用戶必須要用鼠標點擊一下該鏈接。
behavior:設置該鏈接被激活後,將自動引發一些動作,可用一些指令來設置鏈接激活後應用程序要作的事情。
當我們在DTD中聲明Xlink元素後,就可以在XML文件中使用這個元素。例如:
〈simple href="http://www.cbinews.com/xml.htm" title="這是一篇介紹XML的文章"
role="XML article" content-role="good" cont-title="first" show="new" actuate="user"
behavior="goto zero"/〉
另外一種Xlink鏈接方式是Extended Link,它的特點是可以一次設定多個鏈接對象。同樣,在使用Extended Link類型的Xlink元素前必須在DTD中聲明這個元素。聲明方式和Simple Link類型的Xlink元素類似,不同之處有兩點,第一,聲明xml:link屬性時,語句變為:xml:link CDATA #FIXED “extended”;第二,沒有任何href屬性和任何目標描述,聲明Extended Link類型的Xlink元素,必須包括一套包含href定位的子元素。即在聲明了Extended Link類型的Xlink元素之後,還必須聲明一個xml:link屬性值為locator的子元素。例如:
〈!ELEMENT aaa ANY〉
〈!ATTLIST aaa
xml:link CDATA #FIXED "extended"
inline (true|false) "true"
content-role CDATA #IMPLIED
content-title CDATA #IMPLIED〉
〈!ELEMENT bbb ANY〉
〈!ATTLIST bbb
xml:link CDATA #FIXED "locator"
role CDATA #IMPLIED
href CDATA #REAUIRED
title CDATA #IMPLIED
show (embed|replace|new) "replace"
actuate (auto|user) "user"
behavior CDATA #IMPLIED
〉
這樣,我們就可以在XML文件中使用定義過的Extended Link的Xlink元素。如:
〈aaa〉文章資料
〈bbb href="http://www.cbinews.com/XML1.htm title="XML入門"/〉
〈bbb href="