Transcript XSL

Chương 4: XSL và XSLT
-Extensible Stylesheet Language
-Extensible Stylesheet Language Transformations
1- Chức năng
2- Cú pháp
3- Sử dụng trong tệp XML
4- Sử dụng trong môi trường:
* JavaScript,
* Visual Basic.NET
* và ASP (sẽ trình bày trong chương 5)
Giảng viên: Ngô Đình Thưởng
Khoa Tin học, ĐHSP Đà Nẵng
http://ndtfit.brinkster.net
1
I- Chức năng
- XSL là ngôn ngữ định
kiểu mở rộng, tương tự
CSS, nó biến đổi dữ liệu
XML và hiển thi cho
người dùng cuối một tư
liệu đã định dạng theo
kiểu HTML
- Một nhánh của XSL là XSLT, có chức năng trích xuất
giá trị các phần tử XML theo điều kiện nào đó và đưa
vào khuôn dạng HTML
2
II- Cú pháp XSL
2.1. Cấu trúc tệp XSL
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!- - Các câu lệnh XSL, HTML khác - ->
</xsl:stylesheet>
xmlns, XML Name Space
3
2.2. Phần tử <xml:template match=”/”>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head> //khai báo CSS</head>
<body>
<table>
<tr><th>Họ tên </th><th>Lớp </th><th>Địa chỉ</th></tr>
<tr>
<td><xsl:value-of select="DCT/Student/FullName"/></td>
<!– Các thẻ TD khác, tương tự như trên -->
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
4
Minh họa
2.3.Phần tử <xsl:value-of select=“path"/>
Chức năng: trích xuất dữ liệu của một node được chỉ
định trong path
Ví dụ :
<xsl:value-of select=“DCT/Student/Fullname"/>
Trích dữ liệu trong node <Fullname> trong tệp
DCT.XML
5
2.4. Phần tử <xsl:for-each select=“path”/>
Chức năng: Duyệt qua các phần tử được chỉ định
trong path
Ví dụ : duyệt tất cả các node Student của tệp
DCT.XML, bản chất là một vòng lặp
<xsl:for-each select=“DCT/Student">
<tr>
<td><xsl:value-of select=“Fullname"/></td>
<td><xsl:value-of select=“Class"/></td>
<td><xsl:value-of select=“Address"/></td>
</tr>
</xsl:for-each>
6
Minh họa LOOP
2.5.Phần tử <xsl:sort select=“element” />
Chức năng: sắp xếp theo dữ liệu trong node có tên
element,kết quả trích xuất & trình bày dưới dạng HTML
Ví dụ : Sắp danh sách sinh viên theo họ
<xsl:for-each select=“DCT/Student">
<xsl:sort select=“FullName” />
<tr>
<td><xsl:value-of select=“Fullname"/></td>
<td><xsl:value-of select=“Class"/></td>
<td><xsl:value-of select=“Address"/></td>
</tr>
</xsl:for-each>
Minh họa SORT
7
2.6. Phần tử <xsl:if test=“Criteria”>
Chức năng: xác định điều kiện lọc dữ liệu theo điều kiện
đã mô tả trong Critera
Ví dụ : Hiển thị danh sách sinh viên lớp 08T2
<xsl:for-each select="DCT/Student">
<xsl:if test="Class='08T2'">
<tr>
<td><xsl:value-of select="FullName"/></td>
<td><xsl:value-of select="Class"/></td>
<td><xsl:value-of select="Address"/></td>
</tr>
</xsl:if>
</xsl:for-each>
8
Minh họa IF
2.7. Sử dụng các thực thể ký tự HTML
Khi sử dụng <xsl:if test=“criteria”/>
Trong đó Criteria được xây dựng từ biểu thức so
sánh, phải dùng thực thể ký tự HTML:
=
: bằng
!=
: khác
&gt;
: lớn hơn
&lt;
: nhỏ hơn
9
2.8. Phần tử <xsl:choose>
Chức năng: lựa chọn những node thỏa mãn điều kiện
xác định
Cú pháp :
<xsl:choose>
<xsl:when test="expression">
... some output ...
</xsl:when>
<xsl:otherwise>
... some output ....
</xsl:otherwise>
</xsl:choose>
Phần tử <xsl:choose> hoạt động như câu lệnh điều
khiển switch
10
<xsl:for-each select=“DCT/Student">
<tr>
<td><xsl:value-of select=“FullName"/></td>
<xsl:choose>
<xsl:when test=“Class=’08T1’">
<td bgcolor="#ff00ff">
<xsl:value-of select=“Class"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select=“Class"/></td>
</xsl:otherwise>
</xsl:choose>
<td><xsl:value-of select=“Address"/></td>
</tr>
</xsl:for-each>
Đây là phương pháp để định dạng những phần tử thỏa
điều kiện nào đó theo cách riêng biệt!
11
Bài thực hành
- Download tệp DCT.XML hoặc tự viết theo mẫu ở dưới
- Viết các tệp XSL cho các trường hợp khác nhau theo như
các ví dụ cho các phần tử XSL
- Lưu ý: tệp DCT.XML có cấu trúc đơn giản, trong phần sau ta
sẽ nghiên cứu cách truy cập phần tử theo thuộc tính của thẻ
--------------------------------------------------------------------<?xml version=“1.0” encoding=“UTF-8”?>
<?xml-stylesheet type="text/xsl" href="DCT.XSL"?>
<DCT>
<Student>
<Fullname> … </FullName>
<Class>…</Class>
</Address>…</Address>
</Student>
…
</DTC>
12
Buổi học sau:
-Bài tập : Viết tệp XSL cho ORDER.XML
-III. Áp dụng XSL cho Attribute của Node
-IV. Sử dụng XML, XSL trong môi trường VB.NET
(phương thức Transform)
13
Thank you!
http://ndtfit.brinkster.net
14