Hướng dẫn XML

TRANG CHỦ XML Giới thiệu XML Cách sử dụng XML Cây XML Cú pháp XML Phần tử XML Thuộc tính XML Không gian tên XML Hiển thị XML HttpRequest XML Trình phân tích cú pháp XML DOM XML XPath XML XSLT XML XQuery XML XML XLink Trình xác thực XML DTD XML Lược đồ XML Máy chủ XML Ví dụ về XML Câu đố XML Chứng chỉ XML

XML AJAX

Giới thiệu AJAX AJAX XMLHttp Yêu cầu AJAX Phản hồi AJAX Tệp XML AJAX AJAX PHP AJAX ASP Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

DOM XML

Giới thiệu DOM Nút DOM Truy cập DOM Thông tin nút DOM Danh sách nút DOM DOM Traversing Điều hướng DOM DOM Nhận giá trị Nút thay đổi DOM DOM Xóa các nút Nút thay thế DOM DOM Tạo nút DOM Thêm nút Nút nhân bản DOM Ví dụ về DOM

Hướng dẫn XPath

Giới thiệu XPath Nút XPath Cú pháp XPath Trục XPath Toán tử XPath Ví dụ về XPath

Hướng dẫn XSLT

Giới thiệu XSLT Ngôn ngữ XSL Chuyển đổi XSLT XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sắp xếp> XSLT <if> XSLT <chọn> Áp dụng XSLT XSLT trên máy khách XSLT trên Máy chủ XSLT Chỉnh sửa XML Ví dụ về XSLT

Hướng dẫn XQuery

Giới thiệu XQuery Ví dụ về XQuery XQuery FLWOR HTML XQuery Điều khoản XQuery Cú pháp XQuery XQuery Thêm Chọn XQuery Hàm XQuery

DTD XML

Giới thiệu DTD Khối xây dựng DTD Phần tử DTD Các thuộc tính DTD Phần tử DTD so với Attr Thực thể DTD Ví dụ về DTD

Lược đồ XSD

Giới thiệu XSD XSD Cách thực hiện XSD <schema> Phần tử XSD Thuộc tính XSD Hạn chế XSD

XSD Complex

Phần tử XSD XSD trống Chỉ các phần tử XSD Chỉ văn bản XSD XSD hỗn hợp Chỉ báo XSD XSD <nhiều> XSD <anyAttribute> Thay thế XSD Ví dụ về XSD

Dữ liệu XSD

Chuỗi XSD Ngày XSD XSD Numeric XSD Misc Tham chiếu XSD

Dịch vụ web

Dịch vụ XML WSDL XML SOAP XML RDF XML RSS XML

Người giới thiệu

Các loại nút DOM Nút DOM DOM NodeList DOM NamedNodeMap Tài liệu DOM Phần tử DOM Thuộc tính DOM Văn bản DOM DOM CDATA Bình luận DOM DOM XMLHttpRequest Trình phân tích cú pháp DOM Phần tử XSLT Hàm XSLT / XPath

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>

Xem tệp XML .

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>

Xem tệp XSL .

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