如何增加XSL整数变量

时间:2011-10-31 10:41:09

标签: xslt

更新

我有一些庞大的数据,这些数据会变成一张大表,表示表格父

每个表格父的行将对应另一个表(下面给出的代码)说表格子所以当表格父中的任何特定列时单击strong>行(超链接)它将转到表 table child

的那一部分

所以我需要一个计数器来区分每个表孩子。请帮我弄清楚这个问题。感谢

<xsl:choose>
    <xsl:variable name="counter" as="xs:integer"/>
    $counter=0      <!--here i am assigning 0-->
    <xsl:when test="DBInfo/ORSDBInfo/ORSReposTableTypeInd1/ORSReposColumAllWithTableTypeInd1/@ColumnNm">
        <dd>
            <xsl:for-each select="DBInfo/ORSDBInfo/ORSReposTableTypeInd1">
                <div class="horz">
                <a name="_ORS$counter" href="#_top">ORSReposColumAllWithTableTypeInd1:<xsl:value-of select="$counter"/> </a>
                <table border="1">          <!--above I am using counter to print-->
                    <tbody>
                        <tr>
                            <th>Creator</th>
                            <th>LastUpdate</th>
                            <th>UpdatedBy</th>
                        </tr>
                <xsl:for-each select="ORSReposColumAllWithTableTypeInd1">
                    <tr>
                        <td><xsl:value-of select="@Creator"/></td>
                        <td><xsl:value-of select="@LastUpdate"/></td>
                        <td><xsl:value-of select="@UpdatedBy"/>
                    </tr>
                </xsl:for-each>
                    </tbody>
                </table>
            </div>
            $counter=$counter+1     <!--Counter is incremented-->
            <br/>
            </xsl:for-each>
        </dd>
    </xsl:when>
    <xsl:otherwise>
    </xsl:otherwise>
</xsl:choose>

更新更新

所以在提到威尔弗雷德的回答后,我想出了

<a name="_ORS" href="#_top">ORSReposColumAllWithTableTypeInd1_<xsl:number value="position()" format="1" /></a>

但现在如何在<a name="_ORS"内使用它,以便我得到_ORS1,_ORS2,_ORS3等......

4 个答案:

答案 0 :(得分:3)

使用position()。由于您每次为此增加一次,为什么不简单地使用position()

<a name="_ORS$counter" href="#_top">ORSReposColumAllWithTableTypeInd1:<xsl:value-of select="position()"/> </a>

答案 1 :(得分:2)

如何使用:

<xsl:number/>

请参阅http://www.w3.org/TR/xslt#number

有多种方法可以将其作为属性包含在锚标记中。

选项1:使用变量

<xsl:variable name="number">
  <xsl:number/>
</xsl:variable>
<a name="{$number}">blabla</a>

选项2:xsl:attribute

<a>
  <xsl:attribute name="name">
    <xsl:number/>
  </xsl:attribute>
</a>

答案 2 :(得分:1)

增量的概念对于XSLT来说是一种陌生的函数式语言。但是,您可以只计算前面元素的数量:

<xsl:value-of select="count(preceding-sibling::ORSReposTableTypeInd1)"/>

根据您的文档布局,这可能会变得更复杂,您的milage可能会有所不同。

答案 3 :(得分:0)

我有同样的问题,解决它的最简单的方法是使用Saxon。在这里,您可以找到我的解决方案Incrementing and checking the counter variable in XSLT