-->

[XML] Đổi định dạng dữ liệu XML bằng ngôn ngữ định dạng chuyển đổi mở rộng XSLT (Extensible Stylesheet Language Transformations)

Chuyển đổi định dạng dữ liệu rất quan trọng, nó chuyển từ dạng file XML sang các dạng khác một cách tự động, định dạng muốn chuyển đổi sang thường là một file xml hoặc không. Trong bài viết này sẽ hướng dẫn việc chuyển đổi từ định dạng XML sang định dạng file HTML.
Một số cú pháp XSLT thường dùng:


  •  <?xml version="1.0" encoding="UTF-8"?> bắt đầu một file xslt, file xslt được viết dựa trên XML.
  • <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  Khai báo file xslt
  • <xsl:template match="/"> bắt đầu một mẫu định dạng.
  • </xsl:template> kết thúc một mẫu định dạng
Một template html thường có cấu trúc sau: 
<xsl:stylesheet version="1.0"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    <xsl:template match="/">      
            <html>          ...       </html>    
            </xsl:template> </xsl:stylesheet>
  • <xsl:value-of select=Xpath /> Xpath là đường dẫn đến thẻ xml cần lấy giá trị ví dụ: "thongtin/sinhvien", dùng để truy vấn dữ liệu.
  • <xsl:for-each select=Xpath> để duyệt qua tất cả các thẻ nằm trong XPath
  •  <xsl:if test="điều kiện logic"> dùng để lọc các dữ liệu thỏa mãn.
  • <?xml-stylesheet type="text/xsl" href="đường dẫn đến file xsl"?> dùng để khai báo file xslt sẽ sử dụng.
Sau đâu là một ví dụ.
Có một file XML gồm các thông tin, họ và tên, ngày sinh, địa chỉ, điểm môn 1, điểm môn 2, điểm môn 3, sẽ áp dụng mẫu là một file html để hiển thị.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="2.xsl"?>
<thongtin>
<sinhvien>
<hoten>Nguyễn Phương Nam</hoten>
<ngaysinh>19/11/1991</ngaysinh>
<diachi>Đống Đa, Hà Nội</diachi>
<diem1>8</diem1>
<diem2>7</diem2>
<diem3>9</diem3>
</sinhvien>
<sinhvien>
<hoten>Trần Khắc Định</hoten>
<ngaysinh>21/02/1991</ngaysinh>
<diachi>Kim Động, Hưng Yên</diachi>
<diem1>7</diem1>
<diem2>8</diem2>
<diem3>9</diem3>
</sinhvien>
<sinhvien>
<hoten>Trịnh Thị Thu Phương</hoten>
<ngaysinh>13/09/1991</ngaysinh>
<diachi>Ba Vì, Hà Nội</diachi>
<diem1>6</diem1>
<diem2>7</diem2>
<diem3>9</diem3>
</sinhvien>
<sinhvien>
<hoten>Đoàn Tuấn Dũng</hoten>
<ngaysinh>12/04/1991</ngaysinh>
<diachi>Thanh Ba, Phú Thọ</diachi>
<diem1>5</diem1>
<diem2>8</diem2>
<diem3>6</diem3>
</sinhvien>
<sinhvien>
<hoten>Phương Thị Tuấn Linh</hoten>
<ngaysinh>12/04/1982</ngaysinh>
<diachi>Lục Nam, Bắc Giang</diachi>
<diem1>6</diem1>
<diem2>7</diem2>
<diem3>7</diem3>
</sinhvien>
<sinhvien>
<hoten>Bùi Hoàng Thiên</hoten>
<ngaysinh>12/04/1982</ngaysinh>
<diachi>Kim Bôi, Hòa Bình</diachi>
<diem1>4</diem1>
<diem2>7</diem2>
<diem3>7</diem3>
</sinhvien>
</thongtin>
và xsl sẽ có nội dung sau: 
<?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>
    <h2>KẾT QUẢ HỌC TẬP</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Họ và Tên</th>
        <th>Ngày sinh</th>
<th>Địa chỉ</th>
<th>Điểm môn 1</th>
<th>Điểm môn 2</th>
<th>Điểm môn 3</th>
      </tr>
      <xsl:for-each select="thongtin/sinhvien">
 <xsl:if test="diem1>=5">
      <tr>
        <td><xsl:value-of select="hoten" /></td>
        <td><xsl:value-of select="ngaysinh" /></td>
<td><xsl:value-of select="diachi" /></td>
<td><xsl:value-of select="diem1" /></td>
<td><xsl:value-of select="diem2" /></td>
<td><xsl:value-of select="diem3" /></td>
      </tr>
 </xsl:if>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
Kết quả ta được:
kết quả của định dạng xslt
Kết quả hiển thị dạng html


No comments :