2010-12-10 11 views
5

Mi XML tiene 100 AgentSales nodos sólo quiero mostrar los primeros 10 Hasta ahora heXSL sólo muestra 10 vueltas en el para-cada

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

Nuevo en el sitio, pero cuando uso los soportes de código no todo mi código muestra? al menos no en la vista previa a continuación.

+0

Buena pregunta, 1. Vea mi respuesta para dos soluciones que muestran cómo eliminar cualquier instrucción xslt condicional. :) –

Respuesta

6

Uso:

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

Aún mejor:

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

Pruebe algo como:

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

También puede usarlo directamente en la expresión XPath como esta: Básicamente es lo mismo. – DanneManne

+0

Esto sería necesario solo si se realiza una clasificación. –

+0

Puede evitar el escape cambiando: 'NewDataSet/AgentSales [10> = position()]' – CoDEmanX