A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、<>的输出写法

<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>

七、空格输出:

<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>   


4 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
优秀,奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马