《標誌語言》 XLink介紹 Rick Jellife撰 蔡依純譯 如果在這個世界上每部電腦中的每個資料塊都能夠被識別、定址 及連結,那將是多麼令人振奮的事呢?Xink就是說明如何在網際網 路上做到這點的規格文件。 HTML的連結 由於WWW的風行,大部分的人都熟悉超文字連結的基本觀念,亦即 是“一個連結具有兩個端點及一個方向,兩個端點我們通常稱為 Anchor。這個連結可以從一個起點連到任何一個網路資源的目標點 ,這些連結可能是一張圖片,一卷影片,一段聲音,一個程式,一 篇HTML的文件,或其中的元素等等”。 假如你常使用瀏覽器,你一定會知道,當你在連結上按滑鼠的右 鍵時,就會出現一個選單,而其中一個選擇是“在新視窗開啟”。 在HTML中,對於這些連結都是用一個「Anchor」的標誌所做成。 如果你是撰寫HTML的高手,你一定知道在head標誌裡有個特別的 標誌叫做link,它提供了多種的連結功能:比方像是連結到樣式表 (新的瀏覽器會提供使用者多一點選擇,讓其自行選擇使用哪一個 樣式表),或是連結到有音樂的地方(當下載完畢後可自動地播放 ),抑或是連結到另一個網頁(可使瀏覽器預先載入該網頁,以省 去等待的時間)等。 以上所描述的都是連結的功能,事實上,有很多其他的超文字連 結功能是HTML沒有辦法做到的,即使如早期(1960年末至1970年初 期)的超文字連結系統所提供的連結功能,HTML亦沒辦法做到。然 而,HTML之所以會成功,是因為它使用最簡單的方式去使用超連結 ,而且使用者並不需要特別的編輯器(Editor)便可製作網頁。 多用途的連結! 有時當我們看到「連結」時,我們發現其實它看起並不像是連結 ,但事實上,為什麼呢?許多的事物包括電子化地址、識別字、位 址或是查詢等,都可以有連結這個動作。當你想到兩個資料間有“ relationship”、“role”、“pointer”或是“has a”等關聯性 時,在XML(eXtensible Markup Language)中我們可以用「連結」 的方法來加以標示。 讀者們應有一個觀念,在HTML4.0規格中,所定義的超文字連結標 準,並不是就是連結的所有特性,所以在這裡我們將對連結做更清 楚的定義: 1.一個連結可以有一個、二個甚至是很多個ends,而每一個end都 可以是指標,事實上連結本身可以很明確地指定是外部( externally)連結,因而連接到每一個end。 2.一個連結並不需一定要有方向,但它也可以有很多或是沒有方 向,除此之外,連結的方向不需要一定得從“context”到 “part”才行。 3.連結的end可以是某一範圍,不一定是要連結到整個resource或 某一地方。 4.連結點的表現方式乃視連結資料的角色而定,「擷取」和「取 代」只是可能性的行為之一。是故,使用者設定連結為擷取資 料並取代畫面只是連結功能的表現之一。 XML連結對我們有什麼用呢?簡言之,像是資料模型化、資料交換 、超文字連結或是任何不同關係的資料型態上,都可以派上用場。 XLinks有一重要功能就是建立「topic maps」,這是一種依據 metadata連結到種種不同網路資源的方式。Topic maps允許不同的 資料有外在的註解(External Annotation)。因此,我們可以說 Topic maps是有結構性的metadata,而依據各特性關聯主題,可以 連結到不同的網路資源。 XLinks XLink定義了幾種常用的連結型態:Simple、Extended、Group和 Document。 1.Simple的用法比較接近在HTML內a標誌的用法(如下HTML的寫法 所示)。 2.Extended的用法包含arc和locator的元素,並允許各種種類的 擴充連結。 3.Group和document的用法,是讓群組連結到一些特別的文件。 以下我們將說明Simple的語法,有兩種方法可以知道一個連結是 否是XLink: 1.直接使用simple字眼; 2.以xlink:type表示。 讓我們來看看下面Simple的例子: 1.以HTML的寫法如下: 2.以XLink的寫法: 同樣一個連結,另一種XLink也可以寫成: xmlns:xlink屬性是一個名稱領域(Namespaces)宣告的例子, 而所謂的名稱領域,是方便使用者同時使用數個文件型別宣告( Document Type Declaration)之機制,至於這樣的做法,我們相信 在未來之HTML版本中,也會朝這一方向努力。 圖一則是extended link的例子,這例子不同於HTML的超連結,因 為這是many-to-many的連結。它含有很多arcs,而且連結的元素( 例如xlink:extended)不是任何arc的端點。 也許我們覺得很奇怪,為什麼這些arcs會接在一起,而形成 extended link呢?有些人可能比較喜歡(圖二)的寫法,因為這種 連結並沒有“from”和“to”,只有href的地址。 在locator的定義中包含兩個原性:href和role。href屬性包含 URL,role屬性則包含了如何去使用連結的關鍵字。 XLink擴展了URIs的使用,其中actuate和show對於XLink來說是非 常重要的屬性,原因如下: 1.actuate的屬性可以說明Link是自動地或人工地(user-command) 追蹤。 2.show的屬性說明另一端的連結是需要顯示一個新(new)的視窗 ,或是取代(replace)成目前的視窗,或是需要剖析的(若該 連結連結到XML文件)。 對於HTML的高手來說,上述href屬性的用法較不平常,這是因為 含有查詢條件的正確URL,而它的主要目的是查詢文件。 這一種URL使用了一個很特別的語法,就是在URL之前放問號(? )來查詢,許多指向資料庫的連結都用這個技巧。 W3C正在發展中的Xpointer是一種特殊的查詢,也是XLink推展的 一部份。XPointer的語法是 ?xptr= 加上XML Path Expression 【 像是id(phone2)】。從上面的例子中看來,id指到唯一識別字 phone2。(這個跟xlink:arc的from和to的用意一樣)。 XML Path Expression可讓我們以不同種類的標準來選擇某一元素 樹狀結構式(Element tree of structure data)特殊分枝。 讀者若想獲得更多的相關資訊,請參考Steve DeRose教授所寫的 期刊Journal of Markup Theory and Practise, issue 1以及位於 http://www.ascc.net/xml/en/utf-8/xll.html的本篇文章英文版原 稿。