出处:http://soomy-com.iteye.com/blog/979551
一、样式表声明及引用:
声明:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
或
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
引用:
在xml文件里面写出样式表的路径和文件名
<?xml-stylesheet type="text/xsl" href="filename.xsl"?>
二、标签
1.<xsl:template math="/"></xsl:template>
元素定义了一个模板。而 math="/" 属性则把此模板与 xml 源文档的根相联系。
2.<xsl:value-of select="[xpath expression]" />
提取某个选定节点的值,并把值添加到转换的输出流中。[xpath expression]表示提取节点的xpath路径
3.<xsl:for-each select="[xpath expression]"></xsl:for-each>
用于选取指定的节点集中的每个 xml 元素
注:select可以使用设置过滤条件来进行查询:
> 大于
< 小于
= 等于
!= 不等于
例如:<xsl:for-each select="catalog/cd[price > 10]">...</xsl:for-each>
还可以使用xpath的模糊查询:
例如:
<xsl:for-each select="catalog/cd[contains(author='bob.dylan')]">...</xsl:for-each>
假如是属性内容,则用这样的表达式:
<xsl:for-each select="catalog/cd[contains(@author='bob.dylan')]">...</xsl:for-each>
3.1 <xsl:sort select="[xpath expression]" />
排序。对结果进行排序,只要简单地在 xsl 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素就可以了。
3.2 <xsl:if test="expression"></xsl:if>
在<xsl:for-each>内部添加,实现判定功能,test为条件表达式:
<xsl:for-each select="catalog/cd">
<xsl:if test="price < 20">...</xsl:if>
</xsl:for-each>
3.3 <xsl:choose>
包含在foreach循环中,多重条件判定语句。
格式如下:
<xsl:for-each select="catalog/cd">
<xsl:choose>
<xsl:when test="expression1">
.....
</xsl:when>
<xsl:when test="expression2">
.....
</xsl:when>
<xsl:otherwise>
.....
</xsl:otherwise>
</choose>
</xsl:for-each>
4.<xsl:apply-templates />
可把一个模板应用于当前的元素或者当前元素的子节点.
例如:
<html>
<body>
<h2>my cd list</h2>
<xsl:apply-templates />
</body>
</html>
<xsl:template match="cd">
<p>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/>
</p>
</xsl:template>
<xsl:template match="title">
title: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="artist">
artist: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>