XSLT初學最簡單例子
最近了解了下XSLT,寫了個簡單的例子,很簡單,不過對從來沒接觸過XSL的新手來說,足夠了。
一共三個文件:xsl,xml,html,放在同一目錄下就可以了。
用瀏覽器打開xml文件和html文件,效果是一樣的。(IE 6.0+)
------------------ test.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>
<head>
<title>First XSLT example</title>
</head>
<body>
<table border="1" width="300" align="center">
?? ?<tr>
?? ??? ?<th>ID</th>
?? ??? ?<th>Name</th>
?? ??? ?<th>Age</th>
?? ?</tr>
?? ?<xsl:for-each select="test/people">?? ?
?? ??? ?<xsl:sort select="id"/>
?? ??? ??? ?<xsl:if test="age!=0">
?? ??? ??? ??? ?<xsl:choose >
?? ??? ??? ??? ??? ?<xsl:when test="age>20">
?? ??? ??? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ??? ??? ?<td><xsl:value-of select="id"/></td>
?? ??? ??? ??? ??? ??? ??? ?<td><xsl:value-of select="name"/></td>
?? ??? ??? ??? ??? ??? ??? ?<td><xsl:value-of select="age"/></td>
?? ??? ??? ??? ??? ??? ?</tr>
?? ??? ??? ??? ??? ?</xsl:when>
?? ?
?? ??? ??? ??? ??? ?<xsl:otherwise>
?? ??? ??? ??? ??? ??? ?<tr bgcolor="red">
?? ??? ??? ??? ??? ??? ??? ?<td><xsl:value-of select="id"/></td>
?? ??? ??? ??? ??? ??? ??? ?<td><xsl:value-of select="name"/></td>
?? ??? ??? ??? ??? ??? ??? ?<td><xsl:value-of select="age"/></td>
?? ??? ??? ??? ??? ??? ?</tr>
?? ??? ??? ??? ??? ?</xsl:otherwise>
?? ??? ??? ??? ?</xsl:choose>
?? ??? ??? ?</xsl:if>?? ?
?? ?</xsl:for-each>
</table>
<br/>
<table border="3" width="300" align="center">
?? ?<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="people">
?? ??? ?<tr align="center">
?? ??? ??? ?<td style="color:green">
?? ??? ??? ??? ?<xsl:apply-templates select="id"/>
?? ??? ??? ?</td>
?? ??? ??? ?<td style="color:violet">
?? ??? ??? ??? ?<xsl:apply-templates select="name"/>
?? ??? ??? ?</td>
?? ??? ??? ?<td style="color:blue">
?? ??? ??? ??? ?<xsl:apply-templates select="age"/>
?? ??? ??? ?</td>
?? ??? ?</tr>
</xsl:template>
<xsl:template match="id">
?? ?<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="name">?? ?
?? ?<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="age">?? ?
?? ?<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
---------------------- test.xml -----------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<test>
?? ?<people>
?? ??? ?<id>1</id>
?? ??? ?<name>lexy</name>
?? ??? ?<age>23</age>
?? ?</people>
?? ?<people>
?? ??? ?<id>3</id>
?? ??? ?<name>some 3</name>
?? ??? ?<age>20</age>
?? ?</people>
?? ?<people>
?? ??? ?<id>2</id>
?? ??? ?<name>some</name>
?? ??? ?<age>18</age>
?? ?</people>?? ??? ?
?? ?<people>
?? ??? ?<id>5</id>
?? ??? ?<name>some 5</name>
?? ??? ?<age>0</age>
?? ?</people>
?? ?<people>
?? ??? ?<id>4</id>
?? ??? ?<name>some 4</name>
?? ??? ?<age>25</age>
?? ?</people>
?? ?<people>
?? ??? ?<id>6</id>
?? ??? ?<name>some 6</name>
?? ??? ?<age>24</age>
?? ?</people>
?? ?
</test>
-------------------------- test.html ------------------------------------
<html>
<body>
<script type="text/javascript">
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("test.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("test.xsl")
// Transform
document.write(xml.transformNode(xsl))
document.write('Transform XML by javascript!');
</script>
</body>
</html>
參考:
?? ?http://www.w3school.com.cn/xsl/index.asp