2.6.1. XSL
Nhƣ đó giới thiệu, định nghĩa và cỳ phỏp khai bỏo CSS khụng tuõn theo cấu trỳc của ngụn ngữ XML, mà CSS là cỏch định kiểu thẻ trong tài liệu XML. W3C cung cấp một cỏch diễn dịch dữ liệu XML khỏc tƣơng tự CSS đú là XSL (eXtension Style Language). XSL là ngụn ngữ định kiểu mở rộng, nú hoàn toàn tuõn thủ theo đặc tả và cỳ phỏp của XML. XSL thực hiện nhiệm vụ biến đổi dữ liệu của XML để hiển thị tài liệu đó định dạng nhƣ HTML trờn trỡnh duyệt cũng nhƣ CSS, tuy nhiờn nú linh động hơn CSS.
XSL chia thành hai phần: XSLT (XSL Transform) thực hiện nhiệm vụ chuyển dịch hay trớch rỳt dữ liệu XML đƣa vào khuụn dạng HTML và XSL-FO (XSL Formating Object) thực hiện định dạng tài liệu thụng qua cỏc thuộc tớnh thiết lập font chữ, màu sắc,... Vỡ XSL-FO cú chức năng tƣơng tự CSS nờn trong phần này chỳng ta tỡm hiểu khả năng chuyển đổi tài XML sang tài liệu HTML của XSLT.
Để trỡnh xử lý và phõn tớch biết nội dung tài liệu XML kết hợp với tài liệu diễn dịch file.xsl, cần khai bỏo đơn giản trong tài liệu XML nhƣ sau:
<?xml-stylesheet = “text/xsl” href = “file.xsl”?>
Tài liệu XSLT tiếp nhận tài liệu XML theo cấu trỳc hỡnh cõy, tức xem cỏc thành phần trong tài liệu XML là tập hợp cỏc nỳt trờn một cõy, sau đú thực hiện chuyển đổi tài liệu XML này và cho ra một tài liệu định dạng cũng theo cấu trỳc hỡnh cõy khỏc. Trong trang style XSLT, dữ liệu đầu vào là một tập hợp cỏc nỳt chẳng hạn nhƣ thành phần thuộc tớnh hay nội dung văn bản nào đú [3,5,10].
Nỳt Diễn giải
Gốc tài liệu (document root) Khởi đầu của tài liệu cần chuyển đổi.
Thuộc tớnh (attribute) Nắm giữ thuộc tớnh của thành phần thẻ. Gỏi trị thuộc tớnh đó loại bỏ dấu bọc chuỗi.
Chỳ thớch (comment) Nắm giữ dữ liệu của chuỗi văn bản chỳ thớch (đó loại bỏ ký hiệu <!—và -->)
Thành phần (element) Bao gồm thẻ tờn của thành phần (thẻ đúng, thẻ mở) và tập cỏc thành phần con giữa hai thẻ đúng và mở.
Khụng gian tờn (namespace) Nắm giữ chuỗi định danh URL của khụng gian tờn.
Chỉ thị xử lý (processing instructions)
Nội dung chuỗi chỉ thị xử lý đó loại bỏ hai ký tự định danh <? và ?>
Văn bản (text) Dữ liệu thuần text giữa thẻ đúng và thẻ mở.
Bảng 2.6.1: Một số nỳt mà bộ xử lý XSLT cú thể nhận dạng và chuyển dịch
XSL chứa cỏc chỉ thị nhằm mục đớch làm cỏch nào đú để kộo thụng tin khỏi tài liệu XML và biến đổi chỳng sang dạng định dạng khỏc, chẳng hạn nhƣ HTML. Với XSL, cú thể tạo ra cấu trỳc hiển thị giống nhƣ HTML, cấu trỳc này khỏc với cấu trỳc dữ liệu XML nguyờn bản [9,10].
Dữ liệu theo XML
Trang định kiểu XSL
Bộ xử lí XSL HTML/ CSS
hoặc cách thể hiện khác
Hỡnh 2.6.1: Biến đổi dữ liệu XML sang HTML sử dụng XSL
Quỏ trỡnh chuyển đổi tài liệu XML sang HTML bằng XSL là phải sử dụng thuộc tớnh so khớp và chọn đỳng dữ liệu đƣa vào định dạng kết xuất.
2.6.1.1. Cấu trỳc ngụn ngữ định dạng mở rộng XSL
Mỗi trang định dạng tài liệu XSL chớnh là tài liệu XML, vỡ vậy phải mở đầu bằng khai bỏo XML chuẩn, sau đú là quy định khụng gian tờn cho trang và khai bỏo tiền tố xsl (đõy là quy ƣớc chuẩn của W3C). Tiếp đến tạo template để ỏp dụng cho nỳt gốc của tài liệu. Cuối cựng, là nội dung của trang định dạng. Cỳ phỏp nhƣ sau: <?xml version = “1.0”?> <xsl:stylesheet xmlns:xsl = “http://www.w3.org/TR/WD-xsl”> <xsl:template match = “/”> Nội dung <xsl:template> </xsl:stylesheet>
Bộ xử lý XSL nhận diện cỏc nỳt trong XML nguồn, nú tỡm lệnh thao tỏc nỳt trong tập tin file.xsl. Lệnh nằm trong template, mỗi template cú hai phần: nhón nhận diện nỳt và lệnh về biến đổi. Mỗi file.xsl cú một template gốc chứa tổ hợp thành phần hằng và lệnh XSL kết xuất hoặc xử lý tiếp cỏc nỳt trong tài liệu nguồn.
Mỗi “template con” bao gồm thờm lệnh xsl:apply-template trỏ vào template con khỏc, nú cho phộp kiểm soỏt thứ tự xử lý và kết xuất nội dung tài liệu nguồn.
2.6.1.2. Chỉ định mẫu so khớp với thuộc tớnh match
Thuộc tớnh so khớp match dựng để yờu cầu thẻ lệnh thực hiện theo một điều kiện dữ liệu thỏa món nào đú. Do vậy, cú thể dựng nú trong cỏc thành phần điều khiển do XSL quy định.
Tờn thành phần Diễn giải
<xsl:value-of> Kết xuất nội dung của nỳt <xsl:if> Thành phần điều kiện lựa chọn <xsl:choose> Thành phần điều khiển lựa chọn
<xsl:text> Thành phần điều khiển để kết xuất văn bản thụ <xsl:comment> Tạo cỏc dũng chỳ thớch trong tài liệu đớch
<xsl:sort> Thành phần điều khiển cho phộp chọn một mục dữ liệu cần sắp xếp
<xsl:element> Dựng tạo một thành phần mới cho dữ liệu đầu vào
<xsl:attribute> Dựng tạo một thuộc tớnh mới cho một thành phần nào đú
Bảng 2.6.1.2. Cỏc thành phần cơ bản của XSL.
So khớp thành phần gốc của tài liệu XML: Thành phần gốc của tài liệu XML đƣợc so khớp bằng ký tự “/”, tức là trỡnh duyệt sẽ bắt đầu phõn tớch từ nỳt gốc của cõy tài liệu XML đầu vào.
Thớ dụ, so khớp thành phần gốc của một tài liệu XML bất kỳ: <xsl:template match=“/”>
<xsl:apply-tamplates/> </xsl:template>
So khớp cỏc thành phần con: Để so khớp với cỏc thành phần con cần tạo đƣờng dẫn (sử dụng ký tự “/”) từ nỳt cha đến nỳt con trong tài liệu XML. Thớ dụ, dựng ký tự (.) trong thuộc tớnh select để yờu cầu <xsl:value-of> kết xuất dữ liệu của nỳt hiện hành trong cõy tài liệu:
<xsl:template match=“BAIGIANG/HOCPHAN”> <xsl:value-of select=“.”/>
</xsl:template>
Ngoài ra, cú thể sử dụng ký tự đại diện * để chỉ lựa chọn đối với tất cả cỏc phần tử.
So khớp với cỏc thuộc tớnh: để lấy ra đƣợc nội dung của thuộc tớnh của một thành phần nào đú cần phải sử dụng ký hiệu so khớp thuộc tớnh @.
2.6.1.3. Bổ sung mó HTML vào XSL
Về cơ bản cú hai loại thành phần trong tài liệu định kiểu mở rộng XSL: lệnh và hằng. Lệnh XSL mụ tả cỏch biến đổi tài liệu XML nguồn. Hằng thƣờng là văn bản và mó HTML. Việc bổ sung văn bản và mó HTML là dễ dàng, miễn sao thành lập đỳng HTML và phải tuõn theo nguyờn tắc của XML, chẳng hạn nhƣ thẻ mở là <p> phải cú thẻ đúng </p> tƣơng ứng hay trong XSL dựng <hr/> chứ khụng phải <hr> nhƣ trong HTML.
Thớ dụ, thờm thụng tin tiờu đề HTML tại thành phần gốc của tập tin data.xsl nhƣ sau:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" <xsl:template match="/">
<html>
<head><title>Xem bai giang</title></head>
<p><a href="http://localhost/goc/Right_Xembaigiang.asp">Tro ve trang xem bai giang</a></p>
<xsl:apply-templates select="BAIGIANG"/> </html>
</xsl:template>
2.6.2. XPath
Nhƣ đó biết, tài liệu XML đƣợc tổ chức theo dạng cấu trỳc hỡnh cõy và khỏi niệm XPath cung cấp cơ chế tham chiếu đến một mục dữ liệu trong tài liệu XML thụng qua đƣờng dẫn. Hay núi cỏch khỏc, tài liệu XML là tập hợp cỏc nỳt và XPath cung cấp khả năng tham chiếu đến cỏc nỳt trong tài liệu này.
Dấu chấm “.” Tham chiếu nỳt hiện hành. Thớ dụ, <xsl:value-of select=“.”/>
./eName Tham chiếu đến nỳt eName là tờn thành phần trong thành phần nỳt hiện hành. Thớ dụ, <xsl:apply- template select=“./TENMUC” />
/rootName/eName Chọn thành phần con cú tờn là eName. Thớ dụ, <xsl:for-each select=“/NOIDUNG/MUC/TENMUC” />
/eName/* Chọn tất cả cỏc thành phần cú đƣờng dẫn /eName, ký tự đại diện * dựng chọn tất cả cỏc thành phần.
//eName Tham chiếu tất cả thành phần eName. Thớ dụ, <xsl:apply-template=“//MUC”/>
//* Chọn tất cả cỏc nỳt trong tài liệu XML. /@attName Chọn thuộc tớnh của một thành phần.
//eName[@attName] Chọn tất cả cỏc thành phần cú thuộc tớnh mang tờn attName.
Bảng 2.6.2. Một số tham chiếu đường dẫn đơn giản.
Ngoài ra, cũn cú thể viết biểu thức bằng cỳ phỏp Xpath để tham chiếu đến cỏc thành phần thẻ trong tài liệu XML [3].
2.7. XLINK và XPOINT
Cỏc trang Web viết bằng HTML kết hợp đƣợc với nhau nhờ khả năng tạo siờu liờn kết. Tuy nhiờn, siờu liờn kết trong HTML là khỏ hạn chế, nú chỉ cú một số thành phần đó đƣợc định nghĩa trƣớc nhƣ <A>, <IMG>. XML đó khắc phục đƣợc hạn chế này, nú cho phộp tạo liờn kết đa chiều, kiểm soỏt cỏch thức và thời điểm tỏc động lờn liờn kết,... dựa vào Xlink và Xpoint. Một vấn đề trở ngại là chƣa trỡnh duyệt Web nào hỗ trợ XLink và Xpoint [3,10].
2.7.1. XLink
Xlink hỗ trợ cho liờn kết tài liệu XML, nú khụng quy định thành phần liờn kết nào cả, mà thay vào đú liờn kết đƣợc chỉ ra bởi thuộc tớnh của thành phần. Cỏc thành phần chứa thuộc tớnh Xlink đƣợc gọi là thành phần liờn kết (linking
element). Trong thành phần gốc của tài liệu hoặc trong thành phần đang muốn tạo liờn kết, khai bỏo khụng gian tờn Xlink nhƣ sau:
<eNames xmlns:xlink = “http://www.w3.org/1999/xlink”>
Tiếp đầu ngữ sử dụng cho khụng gian tờn Xlink thƣờng là xlink nhƣng cũng cú thể dựng một tờn khỏc. Cú tất cả 7 kiểu Xlink đƣợc định nghĩa thụng qua giỏ trị thuộc tớnh xlink:type nhƣ
simple: Liờn kết đơn giản
extended: Liờn kết mở rộng
locator: định vị
arc: Cung liờn kết
resource: Tài nguyờn liờn kết
Title: Tiờu đề liờn kết
None: Tựy biến
Trong XML, cú hai kiểu liờn kết: liờn kết đơn giản (simple link) là liờn kết tƣơng tự nhƣ siờu liờn kết của HTML và liờn kết mở rộng (extended link) đƣợc dựng để liờn kết đến nhiều tài liệu đớch và từ nhiều nguồn khỏc nhau. Một số thuộc tớnh liờn kết khỏc:
xlink:herf = “URL”: là địa chỉ trỏ đến vị trớ của tài nguyờn cần liờn kết.
xlink:show = “replace | embedded | new”: xỏc định nơi xuất hiện tập tin ngoài.
xlink:actuate = “onRequest | onLoad”: xỏc định thời điểm gọi tập tin ngoài.
xlink:role= “use” và xlink:title= “description”: mụ tả thờm thụng tin cho liờn kết.
2.7.2. Xpointer
Xpointer dựng trỏ đến mục thụng tin dữ liệu trong tài liệu XML và nú đƣợc xõy dựng dựa trờn cơ sở Xpath (cỏch tạo đƣờng dẫn đến từng nỳt cụ thể trong cõy tài liệu XML).
Xpointer định nghĩa một vị trớ dữ liệu dựa trờn điểm trỏ (point), cú hai loại điểm trỏ đú là điểm trỏ nỳt (node-point) và điểm trỏ ký tự (character point). Khi muốn định vị tài liệu dựa trờn cỏc thành phần XML (nỳt), sử dụng điểm trỏ nỳt. Khi muốn định vị dữ liệu đến từng ký tự cụ thể của nội dung tài liệu dựng điểm trỏ ký tự. Xpointer thƣờng đƣợc sử dụng hàm trỏ xpointer() sau ký hiệu # của cỏc địa chỉ cơ sở URL. Thớ dụ, địa chỉ sử dụng Xpointer và dựng hàm start-point () để tạo ra điểm trỏ cựng với hàm position () để thiết lập chỉ số cần trỏ đến nhƣ sau:
Ngoài ra, cũng cú thể liờn kết khoảng giữa hai điểm trỏ đó cho trong tài liệu bằng hàm range-to của Xpointer theo cỳ phỏp nhƣ sau:
xlink:herf = “URL#xpointer ((start_expression)/range-to (end_expression))”
Trong đú, start_expression và end_expression là biểu thức viết bằng cỳ phỏp Xpath cho biết đầu khoảng và cuối khoảng.
2.8. Phõn tớch XML theo mụ hỡnh DOM
W3C định nghĩa tài liệu XML theo mụ hỡnh đối tƣợng tài liệu DOM (Document Object Model). Về cơ bản, DOM là một giao diện lập trỡnh ứng dụng (API, Application Program Interface) khụng phụ thuộc ngụn ngữ lẫn chƣơng trỡnh, cho phộp cỏc chƣơng trỡnh và cỏc kịch bản truy cập và cập nhật động nội dung, cấu trỳc và kiểu của cỏc tài liệu XML cũng nhƣ HTML [5,10,12,18].