http://community.csdn.net/Expert/topic/3495/3495581.xml?temp=.1373102

解决方案 »

  1.   

    xsl的变量是不能更改的,所以要实现i++的功能,得结合template来做递归,形如:
    <xsl:variable name="varBegin" select="1" />
    <xsl:variable name="varStep" select="1" />
    <xsl:variable name="varEnd" select="10" /><xsl:call-template name="MyLoopFun">
        <xsl:with-param name="paramCounter" select="$varBegin" />
    </xsl:call-template><xsl:template name="MyLoopFun">
        <xsl:param name="paramCounter" />    <!-- doSth -->    <xsl:if test="$paramCounter &gt; $varEnd">
            <xsl:call-template name="MyLoopFun">
                <xsl:with-param name="paramCounter">
                    <xsl:value-of select="$paramCounter + $varStep" />
                </xsl:with-param>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
    请问上面这个例子应该用那个名字空间???
      

  2.   

    <?xml version='1.0'?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:variable name="i" select="1"/><xsl:template name="MyLoopFun" match="/">
            <xsl:param name="i" />
      <xsl:call-template name="MyLoopFun">
        <xsl:with-param name="i" select="1" />
      </xsl:call-template>
    <xsl:for-each select="swimtype-info/swimtype">
      <tr> 
        <td bgcolor="#005FA3">
          <div align="left">
            <xsl:value-of select="typename"/>
        </div>
        </td>
      </tr>  <xsl:if test="$i=3">
            <xsl:call-template name="MyLoopFun">
                <xsl:with-param name="i">aaaaa</xsl:with-param>
            </xsl:call-template>
      </xsl:if>
        
      </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>出现的错误是“XSL处理程序堆栈溢区,无限递归”,请问如何修改啊?谢谢。
      

  3.   

    你要的好像不是递增的i吧?
    看下面这个xsl能否解决你的问题<xsl:variable name="i" select="1"/><xsl:for-each select="swimtype-info/swimtype">
      <tr> 
        <td bgcolor="#005FA3">
          <div align="left">
            <xsl:value-of select="typename"/>
            </xsl:element>
        </div>
        </td>
      </tr>
     <xsl:if test="position() = 3">  //当i=3时显示才这个地方
      <tr> 
        <td bgcolor="#005FA3">aaaaaa</div></td>
      </tr>
     </xsl:if>
    </xsl:for-each>
      

  4.   

    谢谢,可以了,请问position() 是XML自带的函数吗?