首頁  >  文章  >  後端開發  >  如何透過XSLT轉換XML的範例程式碼

如何透過XSLT轉換XML的範例程式碼

黄舟
黄舟原創
2017-03-30 14:02:041567瀏覽

一介紹

XSLT是一種用來轉換XML文件結構的語言,它是EXtensible Style Language Extensions Trans formations的縮寫。

XSLT類似與HTML中的CSS,但比CSS的功能更強大。

根據W3C規格說明書的說明,最早設計XSLT是幫助將XML文件轉換為其他文件。

但隨著應用程式的深入,XSLT已不僅用於將XML轉換為HTML或其他文件格式,而是成為用來轉換XML文件結構的語言。

XSLT的元素和屬性提供了處理XML資料的聲明,可以使用XSLT詞彙來提取其他文件的內容,創建新的元素和屬性,並且在更多情況下是這兩種方式的有機結合。

XSLT 1.0轉換要求兩個操作檔案(XML來源文件和XSLT樣式表檔)來產生一個結果文件。

在新的XSLT 2.0標準中,允許將二者合一。

透過XSLT可以將每個元素及其屬性與HTML或XHTML進行匹配,從而實現文件內容的正確顯示和輸出。

一個XSLT樣式表是一個遵守XML規則格式的正確有效的XML文檔,其擴展名為.xsl。

在XML文件中使用XSLT樣式表的語法如下:

<?xml-stylesheet type="text/xsl" href="XSL样式表路径"?>

二透過XSLT轉換XML應用

本實例應用XSLT可擴充樣式,將XML檔轉換為其他格式的檔案後再輸出。

本實例透過XSLT轉換XML,輸出的是經由XSLT樣式轉換後的XML檔案中的資料。

先進行XML聲明,指定文件為XML文件。

注意XSLT樣式表本身就是一個XML文檔,因此它也符合XML文檔的規則。

然後宣告XSLT樣式表,並宣告XSLT名稱空間的前綴(xsl:stylesheet)。

XSLT名稱空間的前綴有兩種寫法:xsl:stylesheet和xsl:transform。

其意義和作用完全相同,只是前者比較常用。透過xmlns:xsl屬性指定XSLT名稱空間。

接著定義模板的規則,這裡使用xsl:template元素來封裝。 Math屬性指定一個模式,用來說明該規則符合什麼樣的輸入。

最後實作XML文件的轉換。

三程式碼

1、建立cdcatalog.xsl檔案的程式碼如下:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<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>

2、建立cdcatalog.xml程式碼如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
</catalog>

四運行結果

如何透過XSLT轉換XML的範例程式碼

以上是如何透過XSLT轉換XML的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn