更新
我有一些庞大的数据,这些数据会变成一张大表,表示表格父
每个表格父的行将对应另一个表(下面给出的代码)说表格子所以当表格父中的任何特定列时单击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等......
答案 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