Chuyển đổi tài liệu XML sang các dạng khác sử dụng ngôn ngữ XSL
Đăng lúc: 08:12 AM - 11/01/2024 bởi Charles Chung - 848Trong bài viết này chúng ta sẽ tìm hiểu về ngôn ngữ XSL để chuyển đổi tài liệu XML thành các dạng khác như XML, HTML, Text
Giới thiệu
XSL là ngôn ngữ stylesheet mở rộng bao gồm một số thành phần
- XSL Transformations (XSLT): được sử dụng để chuyển đổi tài liệu XML.
- XML Path (XPATH): được sử dụng để duyệt, điều hướng trong tài liệu XML
- XSL Formatting Object (XSL-FO): được sử dụng để định dạng tài liệu XML
Mô hình xử lý của XSL
- XSL đọc tài liệu XML và xử lý nó thành một cấu trúc cây
- XSL sẽ thực hiện matching các mẫu trong stylesheet bắt đầu từ nút gốc
Các thành phần cơ bản của XSLT
- Templates (Mẫu): template là một thành phần quan trọng trong XSLT. Chúng được sử dụng để áp dụng các biến đổi lên các phần tử cụ thể trong tài liệu XML. Mỗi template xác định những gì sẽ xuất hiện trong đầu ra cuối cùng khi điều kiện của nó được đáp ứng. Template có thể được áp dụng theo thứ tự ưu tiên, cho phép bạn kiểm soát cách biến đổi được áp dụng.
- XPath (đường dẫn phẩn tử XML ): xpath là một ngôn ngữ truy vấn sử dụng để xác định vị trí của các phần tử và thuộc tính trong tài liệu XML. Nó cho phép bạn xác định những gì sẽ được biến đổi và nơi mà biến đổi sẽ được áp dụng. XPath cũng hỗ trợ các toán tử và hàm giúp bạn thao tác với dữ liệu XML một cách linh hoạt.
- Apply-templates (áp dụng mẫu): apply-templates được sử dụng để áp dụng mẫu cho các phần tử cụ thể trong tài liệu XML. Nó xác định cách XSLT sẽ tìm các phần tử thích hợp để áp dụng mẫu và thực hiện biến đổi.
- Choose-When, If: là các cấu trúc chọn cho phép bạn thực hiện biến đổi dựa trên điều kiện. Khi bạn muốn áp dụng một số biến đổi trong trường hợp này và một số biến đổi khác trong trường hợp khác, bạn có thể sử dụng cấu trúc chọn và khi.
- For-each: là cấu trúc lặp sử dụng để lập trên các tập phần tử trong tài liệu XML mà bạn muốn biến đổi.
- Sort: là cấu trúc sắp xếp tập dữ liệu đầu ra
Một số cấu trúc và cú pháp của XSLT
Tệp XSLT là một tài liệu có cấu trúc XML với các thẻ được quy định sẵn, tệp được lưu trữ với phần mở rộng .xsl hoặc .xslt
Cấu trúc tệp XSL (catelog.xslt)
1 2 3 4 5 6 |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <xsl:template match="/"> <!--Nội dung output--> </xsl:template> </xsl:stylesheet> |
Liên kết tệp XSL(catalog.xslt) với tệp XML
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="catalog.xslt"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> </catalog> |
Phần tử template: được sử dụng để định nghĩa một template mà có thể áp dụng cho một nút để sinh ra kết quả
- Cú pháp
<xsl:template match="Xpath">
………………
</xsl:template>
- Ví dụ
1 2 3 4 5 6 7 |
<xsl:template match="/">
<html>
<body>
<h1>Danh sách hàng hoá</h1>
</body>
</html>
</xsl:template>
|
Phần tử apply-template và value-of: apply-template được sử dụng để chọn ra một tập các nút sẽ được xử lý, value-of để trích rút giá trị của phần tử đầu tiên trong biểu thức xpath chỉ ra
- Cú pháp
xsl:apply-templates select="xpath"/>
<xsl:value-of select ="element"/>
<xsl:value-of select ="@attribue"/>
- Ví dụ
1 2 3 |
<xsl:apply-templates select="Danhsachhanghoa/Hanghoa"/> <xsl:value-of select ="Hanghoa"/> <xsl:value-of select ="@Maso"/> |
Phần tử foreach: được sử dụng để lập qua tập phần tử
- Cú pháp:
<xsl:for-each select="xpath">
………………
</xsl:for-each>
- Ví dụ
1 2 3 4 5 6 |
<xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> |
Phần tử if: sử dụng để đánh giá biểu thức điều kiện, kết quả biểu thức trả về 1 trong 2 giá trị true hoặc false.
- Cú pháp:
<xsl:if test="conditional">
……………
</xsl:if>
- Ví dụ:
1 2 3 4 5 6 7 8 9 |
<xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> <td><xsl:value-of select="price"/></td> </tr> </xsl:if> </xsl:for-each> |
Phần tử choose: là phần tử được sự dụng để tạo bộ lựa chọn khi có 2 hoặc nhiều trường hợp
- Cú pháp
<xsl:choose>
<xsl:when test="condition">
........
</xsl:when>
<xsl:when test="condition">
........
</xsl:when>
<xsl:otherwise>
.......
</xsl:otherwise>
</xsl:choose>
- Ví dụ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> |
Phần tử sort: sử dụng để sắp xếp dữ liệu
- Cú pháp
<xsl:sort data-type="number|text" select="element" order="ascending|descending"/>
- Ví dụ
1 2 3 4 5 6 7 |
<xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> |
Một số ví dụ về XSLT tải tại đây
Một số hàm trong XPath tham khảo từ https://developer.mozilla.org/en-US/docs/Web/XPath/Function
thay lời cảm ơn!
Các bài cũ hơn
- Thiết lập Encoding UTF-8 trong Eclipse để soạn thảo JSP-HTML-CSS (08:26 AM - 10/01/2024)
- Validation XML Data với XSD Schema (10:34 AM - 09/01/2024)
- Link bài tập môn kỹ năng mềm (02:59 PM - 01/01/2024)
- Chuẩn hóa chuỗi Họ Và Tên trong C# và Java (11:33 AM - 26/12/2023)
- Kết nối với SQL Server 2012 hoặc latest version [Java Core 8-17] (11:14 AM - 18/12/2023)