Xslt trong xml (Bài 6)
Xslt trong xml được dùng để phân tích và trích xuất thông tin của tập tin XML. XSL viết tắt EXtensible Stylesheet Language.
XSLT viết tắt XSL Transformations. Bên dưới là một ví dụ về kết quả phân tích và trích xuất thông tin từ tập tin XML và hiển thị sang HTML.
Xslt trong xml – Các bước thực hiện
Dựa vào cấu trúc tài liệu XML để tạo tài liệu XSLT và thực hiện các xử lý sau
- Duyệt tài liệu XML, tìm và so khớp các phần tử
- Trích xuất thông tin của thuộc tính, của các thẻ
- Hiển thị thông tin dưới dạng HTML
Ví dụ cdcatalog.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <body> <table> <xsl:for-each select="catalog/cd"> <tr><td><xsl:value-of select="title"/></td></tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Xslt trong xml – Thành phần <xsl:template>
Dùng để so khớp với các phần tử XML
Cú pháp – Tìm và so khớp với phần tử gốc (root)
<xsl:template match="/">
Cú pháp – Tìm và so khớp với các phần tử con
<xsl:template match="Tên phần tử">
Ví dụ – Tìm và so khớp phần tử Customer
<xsl:template match="Customer">
Xslt trong xml – Thành phần <xsl:value-of>
Dùng để trích xuất thông tin của một phần tử XML
Cú pháp:
<xsl:value-of select="Tên phần tử"/>
Ví dụ:
Ví dụ mẫu:
Tập tin XML
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> <catalog> <cd cd_id="01"> <title>Empire Burlesque</title> </cd> <cd cd_id="02"> <title>Hide your heart</title> </cd> </catalog>
Tập tin XSLT
<?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> <body> <xsl:value-of select="catalog/cd/title"/> </body> </html> </xsl:template> </xsl:stylesheet>
Xslt trong xml – Thành phần <xsl:for-each>
Vòng lặp
Cú pháp:
<xsl:for-each select="Tên phần tử">
Ví dụ:
Xslt trong xml – Thành phần <xsl:sort>
Sắp xếp theo phần tử được chỉ định
Cú pháp:
<xsl:sort select="Tên phần tử" order="ascending | descending"/>
Ví dụ:
<xsl:for-each select="catalog/cd"> <xsl:sort select="title"/> <xsl:value-of select="title"/> </xsl:for-each>
Xslt trong xml – Thành phần <xsl:if>
Kiểm tra dữ liệu thỏa mãn điều kiện nào đó.
Cú pháp:
<xsl:if test="expression">…</xsl:if>
Với các toán tử so sanh
= (equal) != (not equal) < less than (>) > greater than (<)
Ví dụ: Lập điều kiện với price > 10
<xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> </xsl:if> </xsl:for-each>
Xslt trong xml – Thành phần <xsl:choose>
Lọc dữ liệu với nhiều trường hợp
Cú pháp:
<xsl:choose> <xsl:when test="expression"> ... some output ... </xsl:when> <xsl:otherwise> ... some output .... </xsl:otherwise> </xsl:choose>
Ví dụ:
<xsl:choose> <xsl:when test="price > 10"> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose>
Xslt trong xml – Thuộc tính Select
In vị trí xuất hiện của một phần tử trong tài liệu.
Ví dụ:
<xsl:value-of select="position()"/>
XSLT trong XML – Bài tập thực hành
Bài thực hành số 1: Tạo tập tin LopHoc.xml. Truy vấn và hiển thị thông tin các lớp học
MaLop | TenLop |
CNTT14 | Công nghệ thông tin 2014 |
TCKT14 | Tài chính kế toán 2014 |
TKDH14 | Thiết kế đồ họa |
Bài thực hành số 2:
Tạo tập tin SinhVien.xml có định nghĩa kiểu dữ liệu sử dụng XML Schema.
- Giới tính chỉ nhập Nam hoặc Nữ
- Mã lớp nhập theo qui ước: 4 ký tự đầu là chữ cái, 2 ký tự kế tiếp là số
Truy vấn và hiển thị thông tin sinh viên tăng dần theo tên
STT | MaSv | TenSv | GioiTinh | NgaySinh | MaLop |
1 | sv01 | Phan Tuấn Cường | Nam | 03/03/1993 | CNTT14 |
2 | sv02 | Huỳnh Chí Tâm | Nam | 08/03/1993 | CNTT14 |
3 | sv03 | Vương Chí Dũng | Nam | 14/04/1991 | CNTT14 |
4 | sv04 | Phạm Đức Nguyên | Nam | 27/07/1993 | TCKT14 |
5 | sv05 | Trương Mỹ Yến Nhi | Nữ | 03/10/1993 | TCKT14 |
6 | sv06 | Hồ Võ Thanh Tùng | Nam | 06/09/1990 | TCKT14 |
Bài thực hành số 3:
Tạo tập tin MonHoc.xml có định nghĩa kiểu dữ liệu sử dụng XMLSchema với yêu cầu: Số giờ tối thiểu là 4, tối đa là 48.
Truy vấn và hiển thị các môn học có số giờ từ 40 trở lên
MaMh | TenMh | SoGio |
CSDL | Cơ sở dữ liệu | 30 |
MCB | Mạng căn bản | 30 |
THDC | Tin học đại cương | 45 |
THVP | Tin học văn phòng | 45 |
XLA | Xử lý ảnh | 45 |
Bài thực hành số 4:
Tạo tập tin KetQua.xml có định nghĩa kiểu dữ liệu sử dụng XMLSchema với Điểm thi >=0 và điểm thi <=10
Truy vấn và hiển thị điểm thi của những sinh viên học môn THVP và có điểm thi >= 5. Hiển thị giảm dần theo điểm thi.
MaSv | MaMh | DiemThi |
sv01 | THDC | 8 |
sv01 | THVP | 9.5 |
sv02 | THDC | 5.5 |
sv02 | THVP | 10 |
sv03 | THDC | 9 |
sv03 | THVP | 4.5 |