2010-12-10 4 views
5

My XML 100 AgentSales Knoten hat Ich möchte nur die ersten 10 zeigen, so weit ich habeXSL zeigen nur 10 Schleifen in der 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> 

Neu auf der Website, aber wenn ich die Code-Klammern verwenden nicht alle meine Code-Shows? zumindest nicht in der Vorschau unten.

+0

Gute Frage, +1. Sehen Sie meine Antwort für zwei Lösungen, die zeigen, wie bedingte xslt-Anweisungen eliminiert werden. :) –

Antwort

6

Verwendung:

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

Noch besser:

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

Versuchen Sie so etwas wie:

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

Sie können es auch direkt im XPath-Ausdruck wie folgt verwenden: Grundsätzlich das Gleiche. – DanneManne

+0

Dies wird nur benötigt, wenn eine Sortierung durchgeführt wird. –

+0

Sie können die Auslagerung durch Austauschen vermeiden: 'NewDataSet/AgentSales [10> = position()]' – CoDEmanX

Verwandte Themen