一、<>的输出写法
<xsl:value-of disable-output-escaping="yes" select="concat('<','' , '>')" />
输出结果:<>
<br>的输出方法:
<xsl:text disable-output-escaping="yes"><br></xsl:text>
二、if写法
<xsl:if test="@Name='ID'">
[Column(ColumnName = "<xsl:value-of select="@Name" />", IsKey = true, Identity = true, UpdateDisabled = false)]</xsl:if>
条件为真的时候,输出if标签内的内容
三、<xsl:choose>写法
<xsl:choose>
<xsl:when test="id < 50">
<xsl:value-of select="id" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="id" />
</xsl:otherwise>
</xsl:choose>
四、定义变量
<xsl:param name="viewtype" select="'view'"/>
<xsl:variable name="URLVariable">
<xsl:choose>
<xsl:when test="contains($viewtype,'edit')">
<xsl:text>/flowEngine/page1.wml</xsl:text>
</xsl:when>
<xsl:when test="contains($viewtype,'view')">
<xsl:text>/flowEngine/page2.wml</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>/flowEngine/error.wml</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
使用:
<xsl:template match="/data">
<xsl:value-of select ="$URLVariable"/>
<a href="{$URLVariable}" > myURL</a>
...........在实例空间中都有效
</xsl:template>
</xsl:stylesheet >
获取表名:NIS_HLZK_ZKJH_MX
<xsl:variable name="TableVariable">
<xsl:apply-templates select="//TableName" />
</xsl:variable>
截取表名显示:
<xsl:value-of select="substring-after($TableVariable,'NIS_HLZK_')" />Obj
显示为:ZKJH_MXObj
五、定义自增变量
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="root/e">
第<xsl:value-of select="position()"/>个e元素:<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出结果如下所示。
第1个e元素:001
第2个e元素:002
第3个e元素:003
第4个e元素:004
第5个e元素:005
引用:
六、for循环
<xsl:for-each select="CATALOG/CD">
<tr>
<td><xsl:value-of select="TITLE"/></td>
<td><xsl:value-of select="ARTIST"/></td>
</tr>
</xsl:for-each>
注:
1、XSL中利用xsl:for-each时给每一项添加序号:
<xsl:number value="position()" />
2、判断是否是第一次循环的值:
<xsl:if test="position()=1">需要输出的值</xsl:if>
3、判断是否是循环的最后一个值:
<xsl:if test="position()=last()">需要输出的值</xsl:if>
4、判断不是循环的最后一个值:
<xsl:if test="position()!=last()">需要输出的值</xsl:if>
七、空格输出:
<xsl:value-of select="string(' ')"/>
或者:
八、xslt/xpath对不存在属性的判断问题
有xml片段如下
<test>
<mytag title="good" name="kankan"/>
<mytag name="xiangxiang"/>
</test>
写xsl片段如下
<xsl:for-each select="/test/mytag">
<xsl:if test="@title != 'bad'">
<xsl:value-of select="@name"/>
</xsl:if>
</xsl:for-each>
本意是查找所有属性title不等于bad的mytag,然后输出它的name。
原来以为会输出:
kankan
xiangxiang
结果只会输出
kankan
原因貌似xslt1.0中对于<xsl:if test="@title != 'bad'">,如果@title不存在,将直接认为判断失败而返回。哪怕交换顺序,写成test="'bad' != $title"也不行。
后来改成
<xsl:variable name="mytitle" select="concat('fake', @title)"/>
<xsl:if test="$mytitle != 'fakebad'">
即可
九、除法:
循环显示偶数行、基数行
<xsl:for-each select="FIELDS/FIELD">
<xsl:if test="position() mod 2 = 0">
偶数行
</xsl:if>
<xsl:if test="position() mod 2 = 1">
基数数行
</xsl:if>
</xsl:for-each>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |