• XSLT eXtensible Style Sheet Transformations là một ngôn ngữ dựa trên XML dùng để biến đổi các tài liệu XML thành tài liệu khác như: HTML, WML, XML khác, PDF, … • Một trang XSL: chứa n
Trang 1• XSLT (eXtensible Style Sheet Transformations)
là một ngôn ngữ dựa trên XML dùng để biến đổi các tài liệu XML thành tài liệu khác như: HTML,
WML, XML khác, PDF, …
• Một trang XSL: chứa những chỉ dẫn để bảo một XML parser làm cách nào phát sinh ra một tài liệu khác từ những dữ liệu trong một tài liệu XML
• Bản thân XSL style sheet cũng là một XML well-formed nhưng nó chứa những lệnh XSL và những thẻ HTML, text dùng y nguyên cho output
Trang 2Ví dụ
File dữ liệu XML f.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
<page>
4
</page>
<books>
<book>
<bookid>t01</bookid>
<name>Toán </name>
<price>10</price>
<active>1</active>
</book>
<book>
<bookid>t02</bookid>
<name>Tin</name>
<price>15</price>
<active>0</active>
Trang 3Ví dụ
File chuyển đổi xsl: f.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/data">
<html>
<body>
<xsl:value-of select="page"></xsl:value-of>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Thêm dòng chỉ thị vào sau dòng khai báo xml của file xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href=“f.xsl"?>
Chạy file xml trên trình duyệt web Kết quả hiển thị là html.
(Hãy viết kết quả kết xuất file html tương ứng khi chạy file xml)
Trang 4Cấu trúc một file xsl
Tên file: xsl
Nội dung:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
Các thẻ HTML,
Các lệnh ngôn ngữ xslt
</xsl:template>
</xsl:stylesheet>
Trang 5Cấu trúc một file xsl
Dòng lệnh đầu: Khai báo một file xml
<xsl:stylesheet version="1.0“ …>: Thẻ gốc, Khai báo
không gian tên để XML parser nhận diện được các lệnh trong một XSL Có 2 giá trị (có thể chọn một trong 2):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> (Mới)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/TR/WD-xsl> (Cũ)
<xsl:template match="/">: Mẫu xác định vùng nội dung trình chuyển đổi cần lấy data xác định trong thuộc tính match từ tài liệu XML(“/”: lấy data được xác định từ thư mục gốc của file xml).
Trang 6Các mẫu template trong xsl
Một template: Tập các Tags HTML sẽ hiện ra
trong hồ sơ kết quả kết hợp các dữ liệu trong
XML và một số câu lệnh truy xuât data trong
XML
Một template có thể chia thành nhiều thành phần template nhỏ và có chức năng giống như một
hàm trong các ngôn ngữ lập trình thông dụng
Trang 7Tạo và Gọi một sub template
Tạo một subtemplate: Đặt sau tag đóng
</xsl:template> của template chính
<xsl:template name=“name_subtem">
Nội dung
</xsl:template>
Gọi một template đã tạo:
<xsl:call-template name=“name_subtem”>
</ xsl:call-template>
Trang 8Một số lệnh trong xsl
Cú pháp một câu lệnh: <xsl:lệnh …></xsl:lệnh>
Lệnh value-of: Sử dụng thuộc tính select để trích ra một node từ đường dẫn đã cho.
• Select=“Path”: Trích ra giá trị của node
• Select =“Path/@attr”: Lấy ra giá trị của thuộc tính attr
trong path.
• Cú pháp:<xsl:value-of select=“…”></xsl:value-of>
for-each: Lệnh lặp, sử dụng để duyệt qua
từng Element trong nhóm được xác định bởi thuộc tính select.
Cú pháp:<xsl:for-each select=“path”> …</xsl:for-each>
Trang 9Một số lệnh trong xsl
Lệnh Attribute: Thêm một thuộc tính cho tag html trước lệnh Lệnh này thường kết hợp với các lệnh khác để có thể lấy ra các giá trị
từ file xml hoặc theo một điều kiện cho
trước.
• Cú pháp:
<html_tag>
<xsl:attribute name=“html_attribute”>
value for attribute
</xsl:attribute>
Trang 10Các lệnh điều kiện (lựa chọn)
Lệnh if: Chọn xử lý kết quả giống như cấu
trúc if (not else) trong các ngôn ngữ lập
trình.
– Cú pháp:
<xsl:if test=“biểu thức”> </xsl:if>
– Biểu thức: Kết quả trả về cho thuộc tính test Nếu
test = true, nội dung giữa tag mở và đóng <xsl:if> được thi hành Biểu thức là một:phép so sánh, biểu thức Xpath Kết quả true trả về khi kêt quả biểu thức là: khác 0, có các node, một chuỗi khác
Trang 11Các lệnh điều kiện
Lệnh xsl:choose, xsl:when, và xsl:otherwise:
Có ý nghĩa giống switch trong ngôn ngữ lập trình C.
• Cú Pháp:
<xsl:choose>
<xsl:when test=“biểu thức 1”> s1</xsl:when>
<xsl:when test=“biểu thức 2”> s2</xsl:when>
…
<xsl:otherwise > S</xsl:otherwise >
</xsl:choose>
Trang 12XPath (XML Path)
• XPath là gì? Ngôn ngữ truy vấn để duyệt qua một tài liệu XML Ngoài ra, XPath có thể được
sử dụng để tính toán các giá trị từ nội dung của một tài liệu XML
• XPath đã được xác định bởi World Wide Web Consortium (W3C)
• Một biểu thức XPath có thể chọn: Một node, tập hợp các node, một giá trị dữ liệu dựa trên một hoặc nhiều node trong tài liệu xml