0.简单实例
1.节点选择
2.<xsl:value-of select="">
3.<xsl:for-each select="">
4.<xsl:sort select="">
5.<xsl:if test="">
6.<xsl:choose >
7.补充
简单实例:
文件名:xx.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="xx.xsl"?>
<welcome>
<mytitle>my title</mytitle>
<content>my content</content>
</welcome>
文件名xx.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="welcome" >
<head><title>
<xsl:value-of select="mytitle"/>
</title></head>
<body>
<xsl:value-of select="content"/>
</body>
</xsl:template>
</xsl:stylesheet>
模板(template)由两部分组成:匹配模式(match pattern)和执行。
匹配模式定义XML源文档中哪一个节点将被模板处理,执行则定义输出的是什么格式。
两部分对应的语法为xsl:template和xsl:apply-templates。
1.节点选择
<xsl:apply-templates/>元素表示匹配根节点(这里的 根节点是welcome)
<xsl:apply-templates select="mytitle"/> 如果改成这个,那么表示根元素下只匹配mytitle节点
2.<xsl:value-of select=""> 提取某节点的值
<xsl:value-of select="mytitle"> 表示为 节点mytitle的值
3.<xsl:for-each select="">
没有使用的情况:
simpleInstance.xml
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="simpleInstance.xsl" ?>
<students>
<student>
<name>IMA</name>
<sex>male</sex>
<age>10</age>
</student>
<student>
<name>IMB</name>
<sex>female</sex>
<age>13</age>
</student>
<student>
<name>IMC</name>
<sex>female</sex>
<age>22</age>
</student>
<student>
<name>IMD</name>
<sex>male</sex>
<age>15</age>
</student>
</students>
simpleInstance.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head><title>simple instance</title></head>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="students">
<body>
<table border="1" width="80%" align="center" >
<th>name</th>
<th>sex</th>
<th>age</th>
<xsl:apply-templates/>
</table>
</body>
</xsl:template>
<xsl:template match="student">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="sex"/></td>
<td><xsl:value-of select="age"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
使用for-each的情况:
foreach.xml:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="foreach.xsl" ?>
<students>
<student>
<name>IMA</name>
<sex>male</sex>
<age>10</age>
</student>
<student>
<name>IMB</name>
<sex>female</sex>
<age>13</age>
</student>
<student>
<name>IMC</name>
<sex>female</sex>
<age>22</age>
</student>
<student>
<name>IMD</name>
<sex>male</sex>
<age>15</age>
</student>
</students>
foreach.xsl:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1" width="80%" align="center">
<tr>
<th>name</th>
<th>sex</th>
<th>age</th>
</tr>
<xsl:for-each select="students/student">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="sex" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
4.xsl:sort 的使用
<xsl:for-each select="students/student">
<xsl:sort select="age">
5.<xsl:if test="">的使用(记得</xsl:if>)
<xsl:for-each select="students/student">
<xsl:if test="age > 20">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="sex" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:if>
</xsl:for-each>
6.<xsl:choose>
<xsl:when >
<xsl:otherwise>
<xsl:for-each select="students/student">
<xsl:sort select="age" />
<xsl:choose>
<xsl:when test="age > 20">
<tr >
<td bgcolor="#1230ff"><xsl:value-of select="name" /></td>
<td><xsl:value-of select="sex" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:when>
<xsl:when test="age < 13">
<tr >
<td bgcolor="#2340ff"><xsl:value-of select="name" /></td>
<td><xsl:value-of select="sex" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:when>
<xsl:otherwise>
<tr >
<td bgcolor="#ff0000"><xsl:value-of select="name" /></td>
<td><xsl:value-of select="sex" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
7.补充
xsl:stylesheet 样式表声明
xsl:template 定义模板,相当于函数
xsl:template match=“” 相当于函数调用,去匹配引号中指定的节点
xsl:apply-templates 应用模板
xsl:apple-templates select=“” 应用模板于指定节点
xsl:for-each select=“” 循环遍历所指的节点
xsl:value-of select=“” 取值语句,取出所指定的值