Latest web development tutorials

XSLT 在服務器端

由於並非所有的瀏覽器都支持XSLT,另一種解決方案是在服務器上完成XML 至XHTML 的轉化。


跨瀏覽器解決方案

在前面的章節,我們講解過如何在瀏覽器中使用XSLT 來完成XML 到XHTML 的轉化。 我們創建了一段使用XML 解析器來進行轉換的JavaScript。 JavaScript 解決方案無法工作於沒有XML 解析器的瀏覽器。

為了讓XML 數據適用於任何類型的瀏覽器,我們必須在服務器上對XML 文檔進行轉換,然後將其作為XHMTL 發送回瀏覽器。

這是XSLT 的另一個優點。 XSLT 的設計目標之一是使數據在服務器上從一種格式轉換到另一種格式成為可能,並向所有類型的瀏覽器返回可讀的數據。


XML 文件和XSLT 文件

請看這個在前面的章節已展示過的XML 文檔:

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>

查看XML文件

以及附隨的XSL 樣式表:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Title</th>
<th 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>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

查看XSL文件

請注意,這個XML文件沒有包含對XSL文件的引用。

重要事項:上面這句話意味著,XML文件可使用多個不同的XSL樣式表來進行轉換。


在服務器把XML 轉換為XHTML

這是用於在服務器上把XML 文件轉換為XHTML 的源代碼:

<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))

'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))

'Transform file
Response.Write(xml.transformNode(xsl))
%>

提示:假如您不了解如何編寫ASP,您可以學習我們的ASP教程

第一段代碼創建了微軟的XML 解析器(XMLDOM)的一個實例,並把XML 文件載入了內存。 第二段代碼創建了解析器的另一個實例,並把這個XSL 文件載入了內存。 最後一行代碼使用XSL 文檔轉換了XML 文檔,並把結果作為XHTML 發送到您的瀏覽器。 太好了!

它是如何工作的