2010-12-10 7 views
5

Mon XML a 100 AgentSales nœuds Je veux seulement montrer les 10 premiers jusqu'à présent j'aiXSL ne montrent que 10 boucles dans le 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> 

Nouveau sur le site, mais quand on utilise les supports de code non tout mon code montre? au moins pas dans l'aperçu ci-dessous.

+0

Bonne question, +1. Voir ma réponse pour deux solutions montrant comment éliminer toutes les instructions xslt conditionnelles. :) –

Répondre

6

Utilisation:

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

Mieux encore:

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

Essayez quelque chose comme:

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

Vous pouvez également l'utiliser directement dans l'expression XPath comme ceci: Fondamentalement la même chose cependant. – DanneManne

+0

Cela ne serait nécessaire que s'il y a un tri effectué. –

+0

Vous pouvez éviter l'échappement en échangeant: 'NewDataSet/AgentSales [10> = position()]' – CoDEmanX

Questions connexes