XSLT - Trên máy khách
XSLT có thể được sử dụng để chuyển đổi tài liệu sang XHTML trong trình duyệt của bạn.
Giải pháp JavaScript
Trong các chương trước, chúng tôi đã giải thích cách sử dụng XSLT để chuyển đổi một tài liệu từ XML sang XHTML. Chúng tôi đã thực hiện điều này bằng cách thêm biểu định kiểu XSL vào tệp XML và để trình duyệt thực hiện chuyển đổi.Ngay cả khi điều này hoạt động tốt, không phải lúc nào bạn cũng mong muốn đưa tham chiếu biểu định kiểu vào tệp XML (ví dụ: nó sẽ không hoạt động trong trình duyệt không nhận biết XSLT.)
Một giải pháp linh hoạt hơn sẽ là sử dụng JavaScript để thực hiện chuyển đổi.
Bằng cách sử dụng JavaScript, chúng tôi có thể:
- thực hiện kiểm tra trình duyệt cụ thể
- sử dụng các biểu định kiểu khác nhau theo trình duyệt và nhu cầu của người dùng
Đó là cái hay của XSLT! Một trong những mục tiêu thiết kế cho XSLT là làm cho dữ liệu có thể chuyển đổi từ định dạng này sang định dạng khác, hỗ trợ các trình duyệt khác nhau và các nhu cầu khác nhau của người dùng.
Tệp XML và Tệp XSL
Nhìn vào tài liệu XML mà bạn đã thấy trong các chương trước:
<?xml version="1.0" encoding="UTF-8"?>
<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>
Và biểu định kiểu XSL đi kèm:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<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>
</table>
</xsl:template>
</xsl:stylesheet>
Lưu ý rằng tệp XML không có tham chiếu đến tệp XSL.
QUAN TRỌNG: Câu trên chỉ ra rằng một tệp XML có thể được chuyển đổi bằng cách sử dụng nhiều biểu định kiểu XSL khác nhau.
Chuyển đổi XML sang XHTML trong Trình duyệt
Đây là mã nguồn cần thiết để chuyển đổi tệp XML thành XHTML trên máy khách:
Thí dụ
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"}
catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject
|| xhttp.responseType == "msxml-document")
{
ex =
xml.transformNode(xsl);
document.getElementById("example").innerHTML
= ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation
&& document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument =
xsltProcessor.transformToFragment(xml, document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div
id="example" />
</body>
</html>
Mẹo: Nếu bạn không biết cách viết JavaScript, hãy nghiên cứu hướng dẫn JavaScript của chúng tôi .
Giải thích ví dụ:
Hàm loadXMLDoc () thực hiện những việc sau:
- Tạo một đối tượng XMLHttpRequest
- Sử dụng phương thức open () và send () của đối tượng XMLHttpRequest để gửi yêu cầu đến máy chủ
- Nhận dữ liệu phản hồi dưới dạng dữ liệu XML
Hàm displayResult () được sử dụng để hiển thị tệp XML được tạo kiểu bởi tệp XSL:
- Tải các tệp XML và XSL
- Kiểm tra xem người dùng có loại trình duyệt nào
- Nếu Internet Explorer:
- Sử dụng phương thức biến đổi () để áp dụng biểu định kiểu XSL cho tài liệu xml
- Đặt nội dung của tài liệu hiện tại (id = "example") để chứa tài liệu xml được tạo kiểu
- Nếu các trình duyệt khác:
- Tạo một đối tượng XSLTProcessor mới và nhập tệp XSL vào đó
- Sử dụng phương thức TransformToFragment () để áp dụng biểu định kiểu XSL cho tài liệu xml
- Đặt nội dung của tài liệu hiện tại (id = "example") để chứa tài liệu xml được tạo kiểu