客戶端XSL
如果浏覽器支持XML,,就可以用XSL在浏覽器中將文檔轉換成Html。
一個Javascript的解決方法
在前文中,我們解釋了如何用XSL將一個文檔從XML轉換成Html。竅門就是向XML文件中增加一個XSL樣式表,然後讓浏覽器來進行轉換。即使這種方法能奏效,在XML文件中包含一個樣式表引用也並非令人滿意的方法,並且在不支持XSL的浏覽器上這種方法還不能奏效。
一個更通用的方法應該是用一個Javascript來進行從XML到Html的轉換。使用一個JavaScript,就更有以下可能性:
允許JavaScript進行浏覽器細節測試;
根據浏覽器和用戶需求使用不同的樣式表。
這就是XSL的美妙之處。XSL設計目的之一就是使數據從一個格式轉換成另一個格式成為可能,從而支持不同的浏覽器和不同的用戶需求。
客戶端XSL轉換將成為未來浏覽器工作任務的一個主要部分,我們還將看到專業化浏覽器市場的成長,比如Braille、 發聲網絡、網絡打印機、手持PC、移動電話等。
XML文件和XSL文件
現在重新來看看前面章節中的XML文檔:
<?XML version="1.0"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
.
.
.
還有附帶的XSL樣式表:
<?XML version='1.0'?>
<xsl:stylesheet XMLns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<Html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>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>
要確保XML文件沒有對XSL文件的引用,XSL文件也沒有對XML文件的引用。注意:上面的句子說明一個XML文件可以用許多不同的XSL文件進行轉換。
在浏覽器中將XML轉換到Html
以下是在客戶機上將XML文件轉換成Html所需要的源代碼,很簡單:
<Html>
<body>
<script language="Javascript">
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
XML.async = false
xml.load("cd_catalog.XML")
// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cd_catalog.xsl")
// Transform
document.write(XML.transformNode(xsl))
</script>
</body>
</Html>
如果使用的是Internet EXPlorer 5.0 或更高版本,請點擊這裡查看結果。
代碼的第一塊創建了Microsoft XML 解析器(XMLDOM)的一個例示,並將XML文檔加載到內存中。代碼的第二塊創建解析器的另一個例示,並將XSL文檔加載到內存中。代碼的最後一行用XSL文檔轉換XML文檔,將結果寫入Html 文檔中。
服務器端XSL
由於不是所有的浏覽器都支持XML和XSL,因此就有了一個在服務器上將XML轉換成Html的方法。
一個跨浏覽器的解決方法
在前面的章節中,我們解釋了如何用XSL在浏覽器中將XML文檔轉換成Html,竅門就是讓JavaScript使用一個XML解析器來進行轉換。但是當浏覽器不支持XML解析器時,這種方法是不奏效的。要使XML數據對所有浏覽器都可用,我們就必須在服務器上轉換XML文檔,並將它作為純Html發送到浏覽器。
這是XSL的另一個美妙之處。XSL的設計目的之一是使得在服務器上將數據從一種格式轉換成另一種格式成為可能,並將可讀數據返回到所有未來的浏覽器中。
在服務器上進行XSL轉換正在成為未來Internet信息服務器工作任務的一個主要部分,同時我們將看到專用浏覽器市場的發展,如:Braille、有聲網絡、網絡打印機、手持PC、移動電話等。