我想修改XSLT中的一些现有代码,以便能够迭代并显示计数器。
这是代码,其中“Rank”必须是计数器,我无法在其他地方实现,因为排序是在这里完成的!
我不知道我的问题是否清楚,但这里有一些代码:
<xsl:for-each select="Player">
<xsl:sort select="Points" order="descending" data-type="number"/>
<xsl:sort select="G" order="descending" data-type="number"/>
<xsl:sort select="A" order="descending" data-type="number"/>
<xsl:sort select="GP" order="ascending" data-type="number"/>
<tr bgcolor="#E2EFED" border="0">
<td align="center"><xsl:value-of select="Rank"/></td>
<td align="center"><xsl:value-of select="Name"/></td>
<td align="center"><xsl:value-of select="Team"/></td>
</tr>
</xsl:for-each>
答案 0 :(得分:4)
以下是如何执行此操作的完整示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:for-each select="*">
<xsl:value-of select="concat('
', position(), '. ', name())"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
将此转换应用于以下XML文档时:
<t>
<a/>
<b/>
<c/>
<d/>
<e/>
</t>
生成了想要的结果:
1. a
2. b
3. c
4. d
5. e
将代码修改为:
<xsl:for-each select="Player">
<xsl:sort select="Points" order="descending" data-type="number"/>
<xsl:sort select="G" order="descending" data-type="number"/>
<xsl:sort select="A" order="descending" data-type="number"/>
<xsl:sort select="GP" order="ascending" data-type="number"/>
<tr bgcolor="#E2EFED" border="0">
<td align="center">
<xsl:value-of select="position()"/>
</td>
<td align="center">
<xsl:value-of select="Name"/>
</td>
<td align="center">
<xsl:value-of select="Team"/>
</td>
</tr>
</xsl:for-each>
答案 1 :(得分:1)
您可以使用XPath position()函数。
http://www.w3.org/TR/xpath/#function-position
换句话说就是改变:
<td align="center"><xsl:value-of select="Rank"/></td>
到
<td align="center"><xsl:value-of select="position()"/></td>