Tài liệu XML căn bản

Có lẽ bạn đã nghe qua Web Services. Đó là những dịch vụ trên Web ta có thể dùng ondemand , tức là khi nào cần cho chương trình của mình, bằng cách gọi nó theo phương

pháp giống giống như gọi một Hàm (Function). Web Services được triển khai dựa vào XML

và Http, chuẩn dùng để gởi các trang Web.

Điểm quan trọng của kỹ thuật XML là nó không thuộc riêng về một công ty nào, nhưng là

một tiêu chuẩn được mọi người công nhận vì được soạn ra bởi World Wide Web Consortium

- W3C (một ban soạn thão với sự hiện diện của tất cả các dân có máu mặt trên giang hồ Tin

học) và những ai muốn đóng góp bằng cách trao đổi qua Email. Bản thân của XML tuy

không có gì khó hiểu, nhưng các công cụ chuẩn được định ra để làm việc với XML như

Document Object Model - DOM, XPath, XSL, v.v. thì rất hữu hiệu, và chính các chuẩn

nầy được phát triển không ngừng.

Microsoft committed (nhất quyết dấn thân) vào XML ngay từ đầu. Chẳng những có đại diện

để làm việc thường trực trong W3C mà còn tích cực đóng góp bằng cách gởi những đề nghị.

Vị trí của Microsoft về XML là khi tiêu chuẩn chưa được hoàn thành thì các sản phẩm của

Microsoft tuân thủ (comply) những gì có vẽ được đa số công nhận và khi tiêu chuẩn hoàn

thành thì tuân thủ hoàn toàn.

pdf37 trang | Chuyên mục: XML | Chia sẻ: dkS00TYs | Lượt xem: 3410 | Lượt tải: 1download
Tóm tắt nội dung Tài liệu XML căn bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
A former architect battles corporate zombies, an evil sorceress, and her own
childhood to become queen of the world.
Thurman, Paula
Splish Splash
Romance
4.95
2000-11-02
A deep sea diver finds true love twenty thousand leagues beneath the
sea.
Knorr, Stefan
Creepy Crawlies
Horror
4.95
2000-12-06
An anthology of horror stories about roaches, centipedes, scorpions and other
insects.
Kress, Peter
Paradox Lost
Science Fiction
6.95
2000-11-02
After an inadvertant trip through a Heisenberg Uncertainty Device, James
Salway
discovers the problems of being quantum.
O'Brien, Tim
Microsoft .NET: The Programming Bible
Computer
36.95
2000-12-09
Microsoft's .NET initiative is explored in detail in this deep programmer's
reference.
Dưới đây là một thí dụ dùng xsl:if:
 6">
cyan
Trong thí dụ trên, Attribute bgcolor chỉ được tạo ra với trị số cyan khi price của book lớn hơn
6. Mục đích của ta là dùng màu xanh da trời nhạt để làm nền cho sách nào có giá (price)
cao hơn 6.
Dưới đây là một thí dụ dùng xsl:choose:
background-color: pink
background-color: lightblue
background-color: lightgreen
Trong thí dụ trên Attribute style của Cascading Style Sheet sẽ có những trị số cho
background-color khác nhau tùy theo loại sách. Nếu là Romance thì pink, Fantasy thì
lightblue, còn nếu không phải là Romance hay Fantasy (tức là xsl:otherwise) thì lightgreen.
Màu nầy sẽ được dùng làm nền cho đề mục (title) của sách. Để ý là cặp Tags
, được dùng để gói các xsl:when, và xsl:otherwise bên trong.
Sau đây là listing của một catalog.xsl style sheet đầy đủ, trong đó có cả hai cách dùng xsl:if
và xsl:when nói trên:
Book Lovers' Catalog
Book Lovers' Catalog
ID
Author
Title
Genre
Price
Published Date
Description
background-color: pink
background-color: lightblue
background-color: lightgreen
 6">
cyan
Sau khi thêm câu:
vào đầu hồ sơ catalog.xml, double click lên tên file catalog.xml, Internet Explorer sẽ hiển thị
kết quả sau:
Book Lovers' Catalog
ID Author Title Genre Price Published Date Description
bk102 Ralls, Kim Midnight Rain Fantasy 5.95 2000-12-16 A former architect battles
corporate zombies, an evil sorceress, and her own childhood to become queen of the world.
bk107 Thurman, Paula Splish Splash Romance 4.95 2000-11-02 A deep sea diver finds true
love twenty thousand leagues beneath the sea.
bk108 Knorr, Stefan Creepy Crawlies Horror 4.95 2000-12-06 An anthology of horror stories
about roaches, centipedes, scorpions and other insects.
bk109 Kress, Peter Paradox Lost Science Fiction 6.95 2000-11-02 After an inadvertant trip
through a Heisenberg Uncertainty Device, James Salway discovers the problems of being
quantum.
bk110 O'Brien, Tim Microsoft .NET: The Programming Bible Computer 36.95 2000-12-09
Microsoft's .NET initiative is explored in detail in this deep programmer's reference.
Bạn có thể tải về catalog.xml và catalog.xsl tại đây.
Dùng nhiều Templates trong một Style Sheet
Trong bài trước, trong mỗi XSL Style Sheet ta thấy vỏn vẹn chỉ có một Template (bảng kẻm
in), và nó được áp dụng vào Root Element của tài liệu XML.
Thật ra, XSL cũng cho phép ta dùng nhiều Templates trong một Style Sheet. Có thể bạn cần
làm việc ấy vì hai lý do. Thứ nhất, bạn có thể phân chia cách trình bày ra từng phần của tài
liệu XML, để dễ debug hay sửa đổi bộ phận nào của Style sheet. Thứ hai, bạn có thể dùng
XPath expressions để áp dụng kiểu trình bày nào vào loại dữ liệu nào tùy theo trị số của nó.
Khi một Style Sheet chứa nhiều templates, bạn chỉ định việc áp dụng của chúng vào luận lý
trình bày (presentation logic) bằng cách dùng lệnh apply-templates. Thông thường, bạn tạo
một Template cho Root Element nói là để chế biến cả tài liệu và dùng lệnh apply-templates
để chế biến những Element nằm bên trong cái top-level template ấy. Những Templates nầy
có thể được gọi lúc nào cần, và cái top-level template sẽ xử lý mọi dữ liệu không có
Template nào nhắc tới. Tức là nếu Element nào không có template để áp dụng cho nó thì ta
dùng cái template tổng quát của Root Element.
Thí dụ như cái Style Sheet sau đây gồm có: một top-level template để áp dụng vào
Document (Root) Element, một template cho những Element Product với Attribute UnitPrice
có trị số lớn hơn 70, một template cho những Element Product khác, và một template cho
những Element Quantity:
Northwind Home Page
Customer Order
Order No:
Date:
Customer:
ProductID
Product Name
Price
Quantity Ordered
 70]">
Products.asp?ProductID=
Products.asp?ProductID=
Khi áp dụng Style Sheet nầy vào cái tài liệu đặt hàng XML, ta sẽ có hồ sơ HTML sau đây:
Northwind Home Page
Customer Order
Order No: 1047
Date: 2002-03-26
Customer: John Costello
ProductID
Product Name
Price
Quantity Ordered
1
Chair
70
6
2
Desk
250
1
Phần BODY của HTML trên hiển thị như sau:
Customer Order
Order No: 1047
Date: 2002-03-26
Customer: John Costello
ProductID Product Name Price Quantity Ordered
1 Chair 70 6
2 Desk 250 1
Cách áp dụng Style Sheet vào tài liệu XML
Trước khi tiếp tục học thêm các lệnh khác của XSL Style Sheet, ta cần hiểu và biết cách áp
dụng một Style Sheet vào một tài liệu XML.
Áp dụng một Style Sheet là một chức năng của một XML parser như MSXML của Internet
Explorer. Bạn có thể bảo một XML parser áp dụng một Style Sheet vào một XML bằng cách
hoặc là chỉ cần nhét một processing instruction vào đầu hồ sơ XML, hoặc là viết một vài
dòng code.
Dùng XML parser để hiển thị
Nếu ta lưu trữ XSL Style Sheet của hồ sơ đặt hàng trong một file tên Order.xsl thì ta có thể
thêm một hàng processing instruction xml-stylesheet vào đầu hồ sơ đặt hàng XML như sau:
2002-03-26
John Costello
Chair
6
Desk
1
Khi một XML parser đọc hồ sơ XML nầy, cái processing instruction xml-stylesheet bảo
parser áp dụng hồ sơ style sheet Order.xsl để transform XML.
Attribute type cho biết loại style sheet được áp dụng, hoặc là XSL style sheet hoặc là
cascading style sheet (CSS), một loại style sheet dùng để chỉ định màu và kiểu chữ. Ở đây
nó là XSL style sheet trong dạng text.
Attribute href cho biết tên của file dùng làm Style Sheet, path của tên file ấy có thể là tương
đối hay tuyệt đối. Ở đây filename của style sheet là Order.xsl, không có path, nên có nghĩa
là nó nằm trong cùng một folder với Order.xml.
Nếu ta dùng một chương trình trình duyệt như Internet Explorer 5.5 hay 6.0 nó sẽ tự động
load Style Sheet để thêm dáng điệu cho tài liệu XML.
Trong lúc Internet Explorer hiển thị kết quả, nếu bạn dùng Menu Command View | Source
của browser, bạn sẽ chỉ thấy code của XML, chớ không thấy code HTML như bạn đoán.
Muốn xem được code HTML, là kết quả của việc transform XML bằng cách áp dụng XSL
bạn cần tải về chương trình công cụ gọi là Internet Explorer XML/XSL Viewer Tools từ
Microsoft Downloads.
Sau khi Unzip file vừa tải về, bạn right click tên của hai files msxmlval.inf và msxmlvw.inf rồi
chọn install để cài chúng làm Add-ins (những thành phần thêm chức năng vào một chương
trình có sẵn) vào chương trình Internet Explorer.
Bây giờ muốn xem code HTML, bạn right click lên trang Web trong IE rồi chọn command
View XSLOutput từ PopUpMenu.
Dùng code để transform với XSL
Cách dùng một ngôn ngữ lập trình để bảo một XML parser chế biến một tài liệu XML sẽ tùy
thuộc vào hoàn cảnh. Nếu bạn dùng Microsoft XML parser, một component tên MSXML,
trong lập trình thì tài liệu XML sẽ được loaded vào trong một Document Object Model
(XMLDom) object. Kế đó bạn có thể gọi method transformNode để áp dụng một XSL style
sheet đã được loaded trước đó vào một XMLDom object khác để chế biến XML.
Như trong thí dụ dưới đây, ta dúng hai DOM, một cái để load file Order.xml, một cái khác để
load Order.xsl trong VBScript chạy trên Active Server Pages (ASP):
Dim objXML ' DOM for XML
Dim objXSL ' DOM for XSL
Dim strResult ' Resultant document
'Load the XML document.
Set objXML = CreateObject("Microsoft.XMLDom")
objXML.Async = False
objXML.Load "c:\Order.xml"
'Load the XSL style sheet.
Set objXSL = CreateObject("Microsoft.XMLDom")
objXSL.Async = False
objXSL.Load "c:\Order.xsl"
'Apply the style sheet to XML
strResult = objXML.transformNode(objXSL)
Sau khi chạy đoạn code trên, strResult sẽ chứa hồ sơ kết quả.
Ta cũng có thể code bằng JavaScript để chạy trong Browser, thay vì trong WebServer, như
cho thấy trong trang Web dưới đây. Nó cũng cho ra cùng một kết quả như khi dùng IE để
hiển thị XML trực tiếp.
sample
function init()
{
var srcDOM = new ActiveXObject("Msxml2.DOMDocument.4.0");
srcDOM.async=false;
srcDOM.load("order.xml");
var xsltDOM= new ActiveXObject("Msxml2.DOMDOCUMENT.4.0");
xsltDOM.async = false;
xsltDOM.load("order.xsl");
resDOM.innerHTML = srcDOM.transformNode(xsltDOM);
}
Có lẽ bạn hỏi tại sao ta không dùng thẳng XML như phía trên để hiển thị trang Web. Lưu ý
là ta có thể dùng kỹ thuật nầy để Transform một XML với XSL rồi hiển thị nó bên trong một
DIV, tức là một vùng giới hạn bên trong trang Web, chớ không chiếm cả trang Web. Tại đây
khi trang Web bắt đầu load (onload event), IE gọi function init() để transform XML rồi assign
kết quả vào property innerHTML của DIV resDOM.
Có một method khác ta cũng có thể dùng thay cho transformNode là
transformNodeToObject. Sự khác biệt chính giữa hai methods nầy là:
* transformNode: Kết quả của method nầy là một tree dưới dạng text string, điển hình là một
hồ sơ HTML. Ta có thể cho nó hiển thị trong một browser hay lưu trữ vào một file.
* transformNodeToObject: Kết quả của method nầy được để vào trong một object khác, rồi
chính object ấy có thể sẽ được chế biến thêm.
Khi ta dùng một trong hai method nói trên, thật ra object nguồn (source object) không cần
phải là một hồ sơ đầy đủ. Nó có thể chỉ là một Node của hồ sơ XML. Nếu nó chỉ là một
Node thì cái XSLT processor xem tập hợp Node ấy, và các Nodes con cháu của nó như một
hồ sơ đầy đủ. Tương tự như vậy, một object XSL có thể là một file XSL đầy đủ, hay chỉ là
một Node bên trong một file XSL.

File đính kèm:

  • pdfTài liệu XML căn bản.pdf