2011-02-01 74 views
2

我想修改XSLT中的一些現有代碼以便能夠迭代和顯示計數器。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

好問題,+1。查看我的答案,獲取簡單,完整的示例和解決方案。 :) – 2011-02-01 19:38:56

回答

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('&#xA;', 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> 
+0

太簡單了!謝謝! – 2011-02-01 22:23:35

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

我的回答錯了嗎? – 2011-02-01 22:42:42