XML: XLink (XML Linking Language)
XLink là gì?
Xlink (XML Linking Language) là một ngôn ngữ hỗ trợ cho liên kết tài liệu XML một cách rất tổng quát.
Siêu liên kết HTML cung cấp một số thẻ như <A>, <IMG> mới có khả năng tạo liên kết. Những liên kết này chỉ là liên kết một chiều, HTML cho phép tiến chứ không cho quay lui, tức là khi chúng ta link đến một trang nào đó thì chúng ta không thể nào đi ngược lại trang trước đó (nếu không sử dụng History của trình duyệt hay một số ngôn ngữ khác) . XLink cho phép tạo liên kết đến một phần (giống như boockmark của HTML) hoặc toàn bộ tài liệu theo nhiều hình thức khác nhau. XLink cho phép liên kết một chiều hoặc nhiều chiều.
XLink cần có sự hỗ trợ của XPointer và XPath để có thể trỏ đến một cách chính xác từng vùng dữ liệu do XPointer và XPath định vị.
Cách tạo liên kết trong XLink
Không giống như HTML, XLink không quy định một phần tử liên kết nào cả, nó phụ thuộc vào thuộc tính liên kết được chỉ ra. Chúng ta cần phải định nghĩa một không gian tên cho các phần tử liên kết để trình phân tích phân biệt được đâu là XLink, khai báo không gian tên với URL: http://www.w3.org/1999/xlink.
<zvon xmlns:xlink = "http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="zvon.gif">
Click here
</zvon>
Chúng ta không nhất thiết phải lấy tiếp đầu ngữ của không gian tên XLink là xlink, chúng ta có thể dùng bất kỳ nhưng dùng tên xlink sẽ dễ phân biệt hơn.
Trong ví dụ trên chúng ta thấy có sử dụng thuộc tính type (xlink:type="simple"). Đây chính la thuộc tính quy định kiểu XLink.
Có tất cả 7 kiểu XLink được định nghĩa thông qua giá trị của thuộc tính xlink:type:
Giá trị |
Mô tả |
---|---|
simple |
Liên kết đơn giản, liên kết này giống như liên kết trong HTML |
extended |
Liên kết mở rộng |
locator |
Định vị |
arc |
Cung liên kết |
reource |
Tài nguyên liên kết |
Title |
Tiêu đề liên kết |
None |
Tùy biến |
Liên kết đơn giản (simple)
Đây chỉ là một liên kết đơn giản giống như liên lết trong HTML, kết hợp với thuộc tính xlink:type có các thuộc tính sau:
Tên thuộc tính |
Giá trị |
Mô tả |
---|---|---|
xlink:href |
Là một địa chỉ cần link đến |
Địa chỉ cần link đến |
xlink:show |
new, replace. embed |
|
xlink:actuate |
onLoad, onRequest |
|
Khi thuộc tính xlink:show được thiết lập là new thì link này sẽ đựợc mở ra với một cửa sổ mới. Thuộc tính xlink:show có thể được kết hợp với thuộc tính xlink:actuate để làm cho liên kết đa dạng hơn:
- xlink:actuate="onLoad" thì link này sẽ tự động được gọi, tức là không cần phải click vào link này.
- xlink:actuate="onRequest" thì link sẽ không được gọi một cách tự động.
Ví dụ:
<zvon:logo xmlns:zvon = "http://www.zvon.org" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
xlink:href="zvon.gif"
xlink:show="new"
xlink:actuate="onLoad">
</zvon:logo>
Khi thuộc tính xlink:show được thiết lập là replace thì nội dung của link này sẽ được thay thế ngay trên trang hiện tại, khi kết hợp với thuộc tính xlink:actuate="onLoad" thì link này sẽ đuợc tự động gọi.
<zvon:doclink xmlns:zvon = "http://www.zvon.org" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
xlink:href="xml5_out.xml" xlink:show="replace"
xlink:actuate="onLoad"> Sau khi click vào link thì ví dụ sau sẽ được mở trong cửa sổ này. </zvon:doclink>
Khi thuộc tính xlink:show được thiết lập là embed thì tài liệu link này sẽ được nhúng vào tài liệu hiện hành, chúng ta có thể hình dung nó giống như liên kết <IMG> trong HTML.
<zvon:logo xmlns:zvon = "http://www.zvon.org" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
xlink:href="zvon.gif"
xlink:show="embed"
xlink:actuate="onLoad"> Mozilla M17: Đặc tính này không còn được hỗ trợ, nếu không ta sẽ nhìn thấy một ảnh ở đây.
</zvon:logo>
và thuộc tính xlink:actuate cũng được sử dụng giống như trên.
Liên kết mở rộng (extended)
XLink mở rộng dùng để liên kết nhiều nguồn tài liệu khác nhau từ những nguồn khác nhau. XLink mở rộng là tập các định nghĩa bao gồm quan hệ giữa tài nguyên nguồn và tài nguyên đích. Có hai loại tài nguyên liên kết mở rộng được chỉ ra bởi thuộc tính xlink:type, đó là resource (tài nguyên cục bộ) và locator (tài nguyên ở xa).
Tài nguyên cục bộ được định nghĩa trực tiếp bên trong liên kết còn tài nguyên ở xa được tham chiếu đến thông qua địa chỉ URL/URI.
<WEBSITE xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended">
<NAME xlink:type="resource">Cafe au Lait</NAME>
<HOMESITE xlink:type="locator“ xlink:href="http://ibiblio.org/javafaq/"/>
<MIRROR xlink:type="locator“ xlink:href="http://sunsite.kth.se/javafaq"/>
<MIRROR xlink:type="locator“ xlink:href="http://sunsite.informatik.rwth-aachen.de/javafaq/"/>
<MIRROR xlink:type="locator" xlink:href="http://sunsite.cnlab-switch.ch/javafaq/"/>
</WEBSITE>
Ví dụ trên chúng ta đã định nghĩa một WEBSITE gồm một tài nguyên cục bộ và 4 tài nguyên ở xa. Khi hiển thị trên ứng dụng hay trình duyệt thì nội dung của tài nguyên cục bộ sẽ được hiển thị và khi người dùng kích hoạt liên kết thì các địa chỉ liên kết sẽ được chọn để triệu gọi. Nhưng đây mới chỉ là cơ sở lý thuyết và chưa có trình duyệt nào hỗ trợ điều này.
Chúng ta có thể hình dung mỗi nguồn tài nguyên là một đỉnh và sự kết nối giữa một đỉnh đến một hay nhiều đỉnh khác người ta gọi là cung liên kết, mỗi đỉnh có một tên gọi được đặt bởi thuộc tính xlink:role. Có 3 loại cung liên kết, đó là cung kết nối, cung kết nối nhiều đỉnh, cung kết nối tổ hợp.Cung liên kết
Một phần tử là cung liên kết khi thuộc tính xlink:type được nhận giá trị là arc. Bây giờ chúng ta sẽ tìm hiểu từng loại cung liên kết.
Cung kết nối
Cung kết nối là sự nối kết giữa một đỉnh tài nguyên này với một đỉnh tài nguyên khác, giữa hai đỉnh kết nối thì có một tài nguyên nguồn và một tài nguyên đích được phân biệt nhờ vào thuộc tính xlink:from và xlink:to của XLink.
Ví dụ:
<WEBSITE xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended">
<NAME xlink:type="resource" xlink:role=”source”>Cafe au Lait</NAME>
<HOMESITE xlink:type="locator“ xlink:href="http://ibiblio.org/javafaq/" xlink:role=”ibiblio”/>
<MIRROR xlink:type="locator“ xlink:href="http://sunsite.kth.se/javafaq" xlink:role=”sunsite-kth”/>
<MIRROR xlink:type="locator“ xlink:href="http://sunsite.informatik.rwth-aachen.de/javafaq/" xlink:role=”sunsite-informatik”/>
<MIRROR xlink:type="locator" xlink:href="http://sunsite.cnlab-switch.ch/javafaq/" xlink:role=”sunsite-cnlab”/>
<LINK-TO >
xlink:type=”arc”
xlink:from=” source” xlink:to=” ibiblio” xlink:show=”replace” xlink:actuate=”onRequest”
</LINK-TO>
</WEBSITE>
Cung kết nối nhiều đỉnh
Trong trường hợp chúng ta muốn nối kết từ một đỉnh đến đồng thời nhiều đỉnh bằng cách chúng ta đặt tên cho các đỉnh muốn nối kết đến cùng một tên. Loại nối kết này gọi là cung kết nối nhiều đỉnh.
Việc xử lý các cung liên kết là do trình ứng dụng hay trình duyệt quyết định.
<WEBSITE xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended">
<NAME xlink:type="resource" xlink:role=”source”>Cafe au Lait</NAME>
<HOMESITE xlink:type="locator“ xlink:href="http://ibiblio.org/javafaq/" xlink:role=”multi-con”/>
<MIRROR xlink:type="locator“ xlink:href="http://sunsite.kth.se/javafaq" xlink:role=”multi-con”/>
<MIRROR xlink:type="locator“ xlink:href="http://sunsite.informatik.rwth-aachen.de/javafaq/" xlink:role=”multi-con”/>
<MIRROR xlink:type="locator" xlink:href="http://sunsite.cnlab-switch.ch/javafaq/" xlink:role=”multi-con”/>
<LINK-TO >
xlink:type=”arc”
xlink:from=” source” xlink:to=”multi-con” xlink:show=”replace” xlink:actuate=”onRequest”
</LINK-TO>
</WEBSITE>
Cung kết nối tổ hợp
Nếu chúng ta không muốn chỉ ra một cung cụ thể nào thì trong định nghĩa cung chúng ta không cần sử dụng đế n thuộc tính xlink:to, như vậy các cung liên kết là một sự tổ hợp của các đỉnh.
<LINK-TO >
xlink:type=”arc” xlink:from=” source”
xlink:show=”replace” xlink:actuate=”onRequest”
</LINK-TO>