(47条消息) xsl特殊符号输出总结_书剑零落的博客-CSDN博客
一、<>的输出写法
<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>
5、循环中添加筛选条件
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
参照网址:http://www.w3school.com.cn/xsl/xsl_for_each.asp
输出结果:输出artist字段包含“Bob Dylan”的记录
如:返回指定的第几行或者第几行之前或者之后
显示一条记录:
<xsl:for-each select="FIELDS/FIELD[position()=1]">
<xsl:apply-templates select="@Name" />
</xsl:for-each>
显示第五条记录之后的记录:
<xsl:for-each select="FIELDS/FIELD[position()>5]">
<xsl:apply-templates select="@Name" />
</xsl:for-each>
6、不用for-each循环,直接输出:则只显示第一条记录
<xsl:value-of select="FIELDS/FIELD/@Name"/>
只显示第一条记录的name字段
七、空格输出:
<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>
十、转义字符
在XML中,需要转义的字符有:
(1)& &
(2)< <
(3)> >
(4)" "
(5)' '
十一、参照网址:
https://blog.csdn.net/z69183787/article/details/26448337
https://www.cnblogs.com/demonxian3/p/9151945.html
https://blog.csdn.net/dragoo1/article/details/46681579
http://wangpj.iteye.com/blog/830315
https://blog.csdn.net/yintianqin/article/details/72976278
————————————————
版权声明:本文为CSDN博主「书剑零落」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shunhua19881987/article/details/81111185