2010-12-10 33 views
5

我的XML有100個AgentSales節點我只是想顯示前10到目前爲止,我XSL只顯示10個循環中的for-each

<xsl:for-each select="NewDataSet/AgentSales"> 
    <tr> 
     <xsl:if test="(position() mod 2 = 1)"> 
      <xsl:attribute name="bgcolor">#cccccc</xsl:attribute> 
     </xsl:if> 
     <td> 
      <span style="font:20px arial; font-weight:bold;"> 
       <xsl:value-of select="AgentName"/> 
      </span> 
     </td> 
     <td> 
      <span style="font:20px arial; font-weight:bold;"> 
       <xsl:value-of select="State"/> 
      </span> 
     </td> 
     <td> 
      <span style="font:20px arial; font-weight:bold;"> 
       <xsl:value-of select="time"/> 
      </span> 
     </td> 
    </tr> 
</xsl:for-each> 

新的網站,但是當我使用的代碼括號不我的所有代碼都顯示了嗎?至少不在下面的預覽中。

+0

問得好,+1。查看我的答案,瞭解如何消除任何有條件的xslt指令。 :) – 2010-12-10 06:14:58

回答

6

使用

<xsl:for-each select="NewDataSet/AgentSales[not(position() >10)]"> 
    <!-- Process each node from the node-list --> 
</xsl:for-each> 

更妙

<xsl:apply-templates select="NewDataSet/AgentSales[not(position() >10)]"/> 
2

試着這麼做:

<xsl:for-each select="NewDataSet/AgentSales"> 
    <xsl:if test="position() &lt;= 10"> 
     ... 
    </xsl:if> 
</xsl:for-each> 
+2

您也可以直接在XPath表達式中使用它,像這樣:基本上是同樣的事情。 – DanneManne 2010-12-10 03:18:14