XSL(EXtensible Stylesheet Language)它是指可擴展樣式表語言。 XSL之於 XML 就像 CSS 之於 HTML。說白了就是將XML中的數據用指定的顯示格式輸出.XML不像Html,它不包含任何顯示格式的信息. XSL 包含兩個部分:
XSL 語法
任何 XSL 文檔的第一行實際上都是 XML 聲明:<?XML version="1.0" encoding="GB2312"?>
<xsl:stylesheet XMLns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
......
</xsl:stylesheet>
<xsl:template match="/">......</xsl:template>
模板的作用是用來承載XML文檔中的數據的,就像一個模具,如果這個模具是方形的,那麼用這個模具做出來的模型也一定是方形的,而XML文檔中的數據就是用來真充模具的原料。實際上在模板中可以嵌套子模板,但最上層模板必須將match設為"/"。<?XML version="1.0" encoding="GB2312"?>
<俱樂部>
<會員>
<姓名>cnbruce </姓名>
<年齡>10 </年齡>
<性別>男 </性別>
<描述>他是一個糟糕的家伙!</描述>
</會員>
<會員>
<姓名>yufuzi</姓名>
<年齡>80 </年齡>
<性別>男 </性別>
<描述>他是一個優秀的男人!</描述>
</會員>
<會員>
<姓名>xiaojin</姓名>
<年齡>20 </年齡>
<性別>男 </性別>
<描述>他人品有問題!</描述>
</會員>
</俱樂部>
<xsl:for-each select="...">......</xsl:for-each>
與典型的 for 循環作用相同。<?XML version="1.0" encoding="GB2312"?>
<xsl:stylesheet XMLns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table border="1">
<tr>
<th>姓名</th>
<th>年齡</th>
<th>性別</th>
<th>描述</th>
</tr>
<xsl:for-each select="俱樂部/會員">
<tr>
<!--表達式為何不需要包括父節點或從文檔根開始。這是因為這些元素的路徑是根據 <xsl:for-each> 構造中的 XPath 表達式來計算的-->
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="年齡"/></td>
<td><xsl:value-of select="性別"/></td>
<td><xsl:value-of select="描述"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
將old.xsl與happyold.xml放到同一文件夾下,然後在happyold.XML第二行插隊入
<?XML-stylesheet type="text/xsl" href="old.xsl"?>
然後在浏覽器中預覽一下顯示結果。
使用循環構造,還可以根據條件過濾輸出。假設只想顯示會員中年齡大於30的會員。
old30.xsl
<?XML version="1.0" encoding="GB2312"?>
<xsl:stylesheet XMLns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table border="1">
<tr>
<th>姓名</th>
<th>年齡</th>
<th>性別</th>
<th>描述</th>
</tr>
<xsl:for-each select="俱樂部/會員[年齡>30]">
<tr>
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="年齡"/></td>
<td><xsl:value-of select="性別"/></td>
<td><xsl:value-of select="描述"/></td>
等於 (=)
不等於 (!=)
小於 (<)
小於或等於 (<=)
大於 (>)
大於或等於 (>=)
<?XML version="1.0" encoding="GB2312"?>
<xsl:stylesheet XMLns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table border="1">
<tr>
<th>姓名</th>
<th>年齡</th>
<th>性別</th>
<th>描述</th>
</tr>
<xsl:for-each select="俱樂部/會員">
<xsl:sort select="年齡" order="descending"/>
<tr>
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="年齡"/></td>
<td><xsl:value-of select="性別"/></td>
<td><xsl:value-of select="描述"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
去掉order="descending"再看看顯示結果。
條件構造:
<xsl:choose>
<xsl:when test="表達式">
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
條件構造中可以有多個when,但只能有一個otherwise,用於處理未包括在初始測試條件中的所有其它情況.
old_choose.xsl
<?XML version="1.0" encoding="GB2312"?>
<xsl:stylesheet XMLns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table border="1">
<tr>
<th>姓名</th>
<th>年齡</th>
<th>性別</th>
<th>描述</th>
</tr>
<xsl:for-each select="俱樂部/會員">
<xsl:choose>
<xsl:when test="年齡 > 70">
<tr bgcolor="#66CCFF">
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="年齡"/></td>
<td><xsl:value-of select="性別"/></td>
<td><xsl:value-of select="描述"/></td>
</tr>
</xsl:when>
<xsl:when test="年齡=10">
<tr bgcolor="blue">
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="年齡"/></td>
<td><xsl:value-of select="性別"/></td>
<td><xsl:value-of select="描述"/></td>
</tr>
</xsl:when>
<xsl:otherwise>
<tr bgcolor="red">
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="年齡"/></td>
<td><xsl:value-of select="性別"/></td>
<td><xsl:value-of select="描述"/></td>
</tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>