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 1

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

Xslt trong xml – 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>

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">

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ụ:

xslt trong xml 2

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>

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 3

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>

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)
&lt; less than (>)
&gt; greater than (<)

Ví dụ: Lập điều kiện với price > 10

<xsl:for-each select="catalog/cd">
  <xsl:if test="price &gt; 10">
         
  </xsl:if>
</xsl:for-each>

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 &gt; 10">       
  
  </xsl:when>        
  <xsl:otherwise>          
        
 </xsl:otherwise>
</xsl:choose>

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 4

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

Trả lời