Tự học XML - Bài 4: XSL Style Sheets (Phần I)

pdf 29 trang ngocly 1300
Bạn đang xem 20 trang mẫu của tài liệu "Tự học XML - Bài 4: XSL Style Sheets (Phần I)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftu_hoc_xml_bai_4_xsl_style_sheets_phan_i.pdf

Nội dung text: Tự học XML - Bài 4: XSL Style Sheets (Phần I)

  1. Bài 4 XSL Style Sheets (phần I) X ML là cách tuyêṭ diêụ cho ta sắp xếp dữ liêụ để trao đổi chúng giữa các tổ chứ c và giữa các chương triǹ h ứ ng duṇ g. Tuy nhiên, chẳng chóng thi ̀ châỳ , ta sẽ khám phá sư ̣ đa diêṇ của cơ sở dữ liêụ khắp nơi. Và ngay cả có chuẩn XML rồi, ta vâñ câǹ môṭ công cu ̣ hiêụ lưc̣ để triǹ h bày dữ liêụ trong nhiều kiểu khác nhau thích hơp̣ cho áp duṇ g chế biến ở môṭ nơi khác. XSL - eXtensible Style Sheet
  2. (những trang diêñ tả dáng điêụ ) là môṭ ngôn ngữ chuẩn giúp ta biến đổ i (transform) môṭ tài liêụ XML ra format khác, như HTML, Wireless (vô tuyến điêṇ ) Markup Language (WML), và ngay cả môṭ XML khác. Lúc nguyên thủy, XSL đươc̣ thiết kế để sanh ra nhiều HTML trong những daṇ g khác nhau tùy theo Style sheet. Tứ c là XSL thêm dáng điêụ cho XML, vi ̀ chính bản chất của XML chỉ là môṭ cấu trúc của những mảnh dữ liêụ . Thí du ̣ ta có hai Style sheet versions cho môṭ XML, môṭ cái dùng để taọ ra HTML cho trang Web thông thường trên computer, còn cái kia để taọ ra trang Web dùng cho Mobile Phone
  3. hay Pocket PC, những duṇ g cu ̣ có màn ảnh nhỏ. Cả hai trang Web đều chứ a cùng môṭ số dữ liêụ , có thể trên màn ảnh nhỏ thi ̀ giới haṇ những dữ liêụ quan troṇ g thôi, nhưng cách triǹ h bày có thể rất khác nhau. Tuy nhiên, sau đó không lâu, người ta thấy XML có thể đươc̣ XSL biến đổi ra bất cứ Output Format nào, ngay cả chính XML. Có môṭ version mới, rất hay của XSL vừa ra đời. Nó đươc̣ goị là XSL Transformations (XSLT). Chúng ta sẽ lâǹ lươṭ hoc̣ các cú pháp thông duṇ g của XSL. Tuy không nhiều, nhưng nó giúp baṇ có môṭ ý niêṃ căn bản về kỹ thuâṭ nâỳ để baṇ
  4. có thể bắt đâù dùng XSL style sheets biến chế dữ liêụ trong tài liêụ XML. Muốn có môṭ XSL reference đâỳ đủ , baṇ có thể thăm trang Nên nhớ là giống như XPath, XSL và XSLT chỉ là những tiêu chuẩn ấn điṇ h những gi ̀ ta đòi hỏi môṭ chương triǹ h áp duṇ g đươc̣ thưc̣ hiêṇ để hổ trợ chúng câǹ phải có. Tuy nhiên, ai triển khai chương triǹ h đó, và băǹ g ngôn ngữ lâp̣ triǹ h nào cũng đươc̣ . Thí dụ như Microsoft cho ta MSXML version 3 để dùng XSL và XSLT. Những trang XSL Style Sheet
  5. Những trang XSL điṇ h nghiã nhữ ng style sheets (trang dáng điêụ ) để ta có thể áp duṇ g vào những tài liêụ XML. Môṭ style sheet chứ a những chỉ dâñ (instructions) để bảo môṭ XML parser làm cách nào phát sinh (generate) ra môṭ tài liêụ triǹ h duyêṭ kết quả cho những dữ liêụ trong môṭ tài liêụ XML. Bản thân XSL style sheet cũng là môṭ XML well-formed nhưng nó chứ a những lêṇ h (commands) XSL và những câu HTML text dùng y nguyên cho output. Để XML parser nhâṇ diêṇ đươc̣ các lêṇ h trong môṭ XSL, baṇ phải khai báo (declare) môṭ namespace trong
  6. root element, thường thường với môṭ prefix xsl. Môṭ Style sheet thường thường chứ a môṭ trong hai namespaces: cái namespace XSL nguyên thủy ( hay cái namespace mới XSLT ( Microsoft XML parser (MSXML) từ version 3.0 trở lên đều hỗ trơ ̣ cả hai namespaces. Xin lưu ý là Internet Explorer version 5.x dùng MSXML 2.5, nên không hỗ trơ ̣ namespace XSLT. Muốn khắc phuc̣ trở ngaị ấy, hoăc̣ là baṇ cài đăṭ Internet Explorer version 6, hoăc̣ là baṇ cài MSXML3 trong Replace mode băǹ g cách dùng công
  7. cu ̣ tên Xmlinst.exe để thêm chứ c năng hỗ trơ ̣ namespace XSLT trong IE v5.x. Cái Root Element trong môṭ tài liêụ XSL document thường thường là môṭ Element stylesheet. Nó chứ a môṭ hay nhiều Element Template để được matched (căp̣ đôi vi ̀ giống nhau) với dữ liêụ trong tài liêụ XML, thí du ̣ như tài liêụ đăṭ hàng (order) dưới đây: 2002-03-26 John Costello Chair 6
  8. Desk 1 Vi ̀ chính XSL style sheet cũng là môṭ tài liêụ XML, nên nó phải tuân theo moị luâṭ về môṭ XML well- formed. Sau đây là môṭ XSL style sheet đơn giañ có thể đươc̣ áp duṇ g vào tài liêụ order: Northwind Home Page
  9. Customer Order Style sheet nâỳ dưạ trên namespace XSLT và chứ a vỏn veṇ môṭ template (bảng kẻm in) đươc̣ áp duṇ g vào Root (biểu hiêụ băǹ g dấu slash / là tri ̣số của Attribute match) của tài liệ ụ XML và moị Element bên trong của nó. Môṭ template thâṭ thi ̀ gồm có môṭ loaṭ Tags HTML sẽ hiêṇ ra trong hồ sơ kết quả, nhưng trong trường hơp̣ nâỳ cái Template không làm chuyêṇ gì hữu ích; nó chỉ output (cho ra) môṭ tài liêụ HTML y nguyên như năm̀ trong
  10. XSL và không có chứ a dữ liêụ gi ̀ từ hồ sơ input XML. Để merge (hòa đồng) các dữ liêụ trong XML vào XSL template, baṇ câǹ phải dùng môṭ ít lêṇ h (commands) XSL. Lêṇ h value-of XSL điṇ h nghiã môṭ số lêṇ h chế biến (processing commands) để trích dữ liêụ ra từ môṭ tài liêụ XML và hòa nó vào môṭ hồ sơ kết quả. Cái lêṇ h căn bản và hữu duṇ g nhất trong số nâỳ là lêṇ h value-of. Lêṇ h value-of choṇ tri ̣ số (value) của môṭ Element hay Attribute nào đó trong XML và hòa nó với hồ sơ output.
  11. Lêṇ h value-of có daṇ g môṭ XML Element trong XSL. Nó dùng môṭ Attribute tên select có value là môṭ XPath Location Path để trích ra môṭ Node. Kết quả là value củ a (value- of) Node ấy. Do đó, khá hơn lâǹ trước, bây giờ ta có thể triǹ h bày dữ liêụ của XML với lêṇ h value-of như sau: Northwind Home Page Customer Order Order No:
  12. Date: Customer: Cái Style sheet kỳ nâỳ trích ra Attribute OrderNo và tri ̣ số của các Elements OrderDate và Customer từ Element Order băǹ g cách dùng môṭ XPath location path. Lưu ý là các XPath expressions ở đây thi ̀ tương đối với context node chỉ điṇ h trong match parameter của Element template (trong trường hơp̣ nâỳ là
  13. Root Element, biểu hiêụ băǹ g dấu slash / ). Á p duṇ g Style sheet nâỳ vào hồ sơ đăṭ hàng (order) XML ta sẽ đươc̣ HTML sau đây: Northwind Home Page Customer Order Order No: 1047 Date: 2002-03-26 Customer: John Costello Lêṇ h for-each
  14. Trong môṭ tài liêụ XML, có thể có nhiều Elements mang cùng môṭ tên để nói đến môṭ danh sách những thứ tưong tư. Thí du ̣ trong tài liêụ đăṭ hàng có hai Element Item để diễn tả hai món hàng đươc̣ đăṭ. Hâù hết ngôn ngữ lâp̣ triǹ h cho ta phương tiêṇ để áp duṇ g cùng môṭ cách chế biến cho moị món trong nhóm. Như trong Visual Basic ta có FOR loop hay DO loop để iterate qua từng món trong bô.̣ Trong XSL cũng thế, baṇ có thể dùng lêṇ h for- each để đi lâǹ lươṭ qua từng Element trong nhóm, băǹ g cách dùng Attribute select để chỉ điṇ h những nodes mà baṇ muốn làm viêc̣ .
  15. Thí du ̣ ta có thể làm cho cái Style sheet hay hơn băǹ g cách liêṭ kê các Item trong Order thành môṭ table: Northwind Home Page Customer Order Order No: Date: Customer:
  16. ProductID Product Name Price Quantity Ordered
  17. Lâǹ nâỳ trong Style sheet, ta bảo parser đi qua từng Element Item để lấy ra Attributes ProductID và UnitPrice của Element Product , và values của Elements Product và Quantity, rồi cho vào table. Lưu ý ở đây các XPath expressions tương đối dùng cái Node chỉ điṇ h trong lêṇ h for-each làm context node. Trong trường hơp̣ nâỳ nó là Node Item. Cuối của for-each loop là closing Tag của Element for-each
  18. ( ) . Style sheet trên nâỳ khi áp duṇ g vào tài liêụ đăṭ hàng sẽ cho ra 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
  19. 70 6 2 Desk 250 1 Phần BODY của HTML trên hiển thi ̣ như sau: Customer Order Order No: 1047 Date: 2002-03-26 Customer: John Costello Product
  20. ProductID Name Price Ordered 1 Chair 70 2 Desk 250 Lêṇ h Attribute Đôi khi ta muốn taọ ra thêm môṭ Attribute trong hồ sơ output với môṭ tri ̣ số lấy từ tài liêụ XML input. Thí du ̣ như tương ứ ng với mỗi tên của môṭ Product, baṇ muốn taọ ra môṭ hyperlink để chuyển (pass) cái ProductID qua môṭ trang Web khác, nơi đó sẽ hiển thi ̣chi tiết về măṭ hàng nâỳ . Để taọ ra môṭ hyperlink trong môṭ hồ
  21. sơ HTML, baṇ câǹ taọ ra môṭ Element A (Anchor) với môṭ Attribute href. Baṇ có thể dùng lêṇ h Attribute của XSL để thưc̣ hiêṇ chuyêṇ ấy như minh hoạ trong Style sheet dưới đây: Northwind Home Page Customer Order Order No: Date:
  22. Customer: ProductID Product Name Price Quantity Ordered Products.asp?ProductID=
  23. Á p duṇ g Style sheet nâỳ vào tài liêụ đăṭ hàng XML, baṇ sẽ có hồ sơ HTML sau:
  24. Northwind Home Page Customer Order Order No: 1047 Date: 2002-03-26 Customer: John Costello ProductID Product Name Price Quantity Ordered 1 70 6
  25. 2 250 1 Phần BODY của HTML trên hiển thi ̣ như sau: Customer Order Order No: 1047 Date: 2002-03-26 Customer: John Costello
  26. ProductID Product Price Name Ordered 1 Chair 70 2 Desk 250 Baṇ có thể để Mouse cursor lên chữ Chair hay chữ Desk để thấy tên hyperlink của chúng hiển thi ̣ trong status bar của browser. (còn tiếp) Hoc̣ XML Vovisoft © 2000. All rights reserved. Last Updated: 23 Webmaster Dec 2003