xsl特殊符号输出总结 转

(47条消息) xsl特殊符号输出总结_书剑零落的博客-CSDN博客

一、<>的输出写法

<xsl:value-of disable-output-escaping="yes" select="concat('&lt;','' , '&gt;')" />

输出结果:<>

<br>的输出方法:

<xsl:text disable-output-escaping="yes">&lt;br&gt;</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 &lt; 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(' ')"/>

或者:

&#160;

八、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)&   &amp;
  (2)<   &lt;
  (3)>   &gt;
  (4)"   &quot;
  (5)'   &apos;

十一、参照网址:

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

原文地址:https://www.cnblogs.com/shuihaya/p/15556725.html