一、<>的输出写法 <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>
|