天天看點

XSLT - 轉換

執行個體研究:如何使用 XSLT 将 XML 轉換為 XHTML。

我們會在下一章對本執行個體的細節進行解釋。

把文檔聲明為 XSL 樣式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。

<b>注意:</b>&lt;xsl:stylesheet&gt; 和 &lt;xsl:transform&gt; 是完全同義的,均可被使用!

根據 W3C 的 XSLT 标準,聲明 XSL 樣式表的正确方法是:

&lt;xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;

或者:

&lt;xsl:transform version="1.0"

如需通路 XSLT 的元素、屬性以及特性,我們必須在文檔頂端聲明 XSLT 命名空間。

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 指向了官方的 W3C XSLT 命名空間。如果您使用此命名空間,就必須包含屬性 version="1.0"。

我們現在要把下面這個 XML 文檔("cdcatalog.xml")<b>轉換</b>為 XHTML:

&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;

&lt;catalog&gt;

&lt;cd&gt;

&lt;title&gt;Empire Burlesque&lt;/title&gt;

&lt;artist&gt;Bob Dylan&lt;/artist&gt;

&lt;country&gt;USA&lt;/country&gt;

&lt;company&gt;Columbia&lt;/company&gt;

&lt;price&gt;10.90&lt;/price&gt;

&lt;year&gt;1985&lt;/year&gt;

&lt;/cd&gt;

.

&lt;/catalog&gt;

<b>在 Firefox 和 Internet Explorer 中檢視 XML 檔案:</b>打開 XML 檔案(通常通過點選某個連結) - XML 文檔會以顔色化的代碼方式來顯示根元素及子元素。點選元素左側的加号(+)或減号(-)可展開或收縮元素的結構。如需檢視原始的 XML 源檔案(不帶有加号和減号),請在浏覽器菜單中選擇"檢視頁面源代碼"或"檢視源代碼"。

<b>在 Netscape 6 中檢視 XML 檔案:</b>打開 XML 檔案,然後在 XML 檔案中右擊,并選擇"檢視頁面源代碼"。XML 文檔會以顔色化的代碼方式來顯示根元素及子元素。

<b>在 Opera 7 中檢視 XML 檔案:</b>打開 XML 檔案,然後在 XML 檔案中右擊,選擇"架構"/"檢視源代碼"。XML 文檔将顯示為純文字。

檢視 "cdcatalog.xml"

然後建立一個帶有轉換模闆的 XSL 樣式表("cdcatalog.xsl"):

&lt;xsl:template match="/"&gt;

&lt;html&gt;

&lt;body&gt;

&lt;h2&gt;My CD Collection&lt;/h2&gt;

&lt;table border="1"&gt;

&lt;tr bgcolor="#9acd32"&gt;

&lt;th&gt;Title&lt;/th&gt;

&lt;th&gt;Artist&lt;/th&gt;

&lt;/tr&gt;

&lt;xsl:for-each select="catalog/cd"&gt;

&lt;tr&gt;

&lt;td&gt;&lt;xsl:value-of select="title"/&gt;&lt;/td&gt;

&lt;td&gt;&lt;xsl:value-of select="artist"/&gt;&lt;/td&gt;

&lt;/xsl:for-each&gt;

&lt;/table&gt;

&lt;/body&gt;

&lt;/html&gt;

&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;

檢視 "cdcatalog.xsl"

向 XML 文檔("cdcatalog.xml")添加 XSL 樣式表引用:

&lt;?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?&gt;

如果您使用的浏覽器相容 XSLT,它會很順利地把您的 XML <b>轉換</b>為 XHTML。

檢視結果

我們會在下一章對上面的例子中的細節進行解釋。