XSLT全称eXtended Stylesheet Language Transformation
xslt文件头
重要标签解析
<xsl:template match="xpath"> 该标签用于定义模版,同时分配给指定结点
<xsl:apply-templates select="xpath"> 该标签用于指定要应用模版的结点
提示: xsl:template中可以再次使用xsl:apply-templates,用于样式的多级嵌套
实例1:
planets.xml
<xsl:attribute> 可为html标签添加属性
实例2:<a><xsl:attribute name="href" select="http://www.cnblogs.com"></a>该语句生成的结果为<a href=""></a>
<xsl:value-of select="xpath"> 获得结点的值
语法结构的使用
1. 类似于if(){...}else{}的语法
对于模版函数中的参数可以用$variable来引用
实例3
在IE中使用xslt的注意点
如果要在<script language="javascript"></script>中添加代码,必须使用<![CDATA[...]]>,因为添加的代码没有人任何标记,会使xslt文件不符合xml格式规范
xslt文件头
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
重要标签解析
<xsl:template match="xpath"> 该标签用于定义模版,同时分配给指定结点
<xsl:apply-templates select="xpath"> 该标签用于指定要应用模版的结点
提示: xsl:template中可以再次使用xsl:apply-templates,用于样式的多级嵌套
实例1:
planets.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="planets.xslt"?>
<planets>
<planet color="red">
<name>Mercury</name>
<mass units="(Earth=1)">.0553</mass>
<day units="days">58.65</day>
<radius units="miles">1516</radius>
<density units="(Earth=1)">.983</density>
<distance units="million miles">43.4</distance>
</planet>
<planet color="yellow">
<name>Venus</name>
<mass units="(Earth=1)">.815</mass>
<day units="days">116.75</day>
<radius units="miles">3716</radius>
<density units="(Earth=1)">.943</density>
<distance units="million miles">66.8</distance>
</planet>
</planets>
planets.xslt<?xml-stylesheet type="text/xsl" href="planets.xslt"?>
<planets>
<planet color="red">
<name>Mercury</name>
<mass units="(Earth=1)">.0553</mass>
<day units="days">58.65</day>
<radius units="miles">1516</radius>
<density units="(Earth=1)">.983</density>
<distance units="million miles">43.4</distance>
</planet>
<planet color="yellow">
<name>Venus</name>
<mass units="(Earth=1)">.815</mass>
<day units="days">116.75</day>
<radius units="miles">3716</radius>
<density units="(Earth=1)">.943</density>
<distance units="million miles">66.8</distance>
</planet>
</planets>
<?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>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="planet">
<p><xsl:value-of select="name"/></p>
</xsl:template>
以上例子中,先对所有结点使用<xsl:apply-templates>,然后再使用<xsl:template>对planet结点作处理<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="planet">
<p><xsl:value-of select="name"/></p>
</xsl:template>
<xsl:attribute> 可为html标签添加属性
实例2:<a><xsl:attribute name="href" select="http://www.cnblogs.com"></a>该语句生成的结果为<a href=""></a>
<xsl:value-of select="xpath"> 获得结点的值
语法结构的使用
1. 类似于if(){...}else{}的语法
<xsl:if test="expression/condition">
</xsl:if>
</xsl:if>
<xsl:choose>
<xsl:when test="condition"></xsl:when>
<xsl:when test="condition"></xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
3.foreach语法<xsl:when test="condition"></xsl:when>
<xsl:when test="condition"></xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
<xsl:for-each select="node1">
</xsl:for-each>
4.模版函数定义</xsl:for-each>
<xsl:template name=”template name”>
<xsl:param name=”parameter1”/>
<xsl:param name="parameter2" select="defaultvalue"/>
</xsl:template>
其中,parameter2使用select属性指定了默认值defaultvalue。<xsl:param name=”parameter1”/>
<xsl:param name="parameter2" select="defaultvalue"/>
</xsl:template>
对于模版函数中的参数可以用$variable来引用
实例3
<xsl:call-template name="template1">
<xsl:with-param name="parameter1"/>
<xsl:value-of select="$parameter1"/>
</xsl:call-template>
5.模版函数调用<xsl:with-param name="parameter1"/>
<xsl:value-of select="$parameter1"/>
</xsl:call-template>
<xsl:call-template name="template name">
<xsl:with-param name="parameter1" select="parameter value"/>
...
</xsl:call-template>
<xsl:with-param name="parameter1" select="parameter value"/>
...
</xsl:call-template>
在IE中使用xslt的注意点
- 在xml中引用xslt时,必须把type=”text/xml”改为type=”text/xsl”
- 必须先匹配根结点后,再匹配其他结点,否则可能无法显示,即match=”/”
- IE浏览器不支持任何XSLT默认规则,因此必须自己写
如果要在<script language="javascript"></script>中添加代码,必须使用<![CDATA[...]]>,因为添加的代码没有人任何标记,会使xslt文件不符合xml格式规范