2010-10-19 7 views
2

comment implémenter la fonctionnalité de type compteur dans xsltCompteurs XSLT

+1

Vous ne devriez pas. XSLT est pour les transformations XML, pas pour la logique. – driis

+1

Vous utiliserez généralement la récursivité. Donnez un exemple plus concret de ce que vous essayez de faire et nous verrons comment le résoudre. –

+1

en fait j'utilise XSLT dans sharepoint DVWP et ai groupé fait basé sur une colonne maintenant je veux garder la trace combien d'éléments j'ai dans chaque groupe. Je dois appliquer une image unique sur chacun des éléments du groupe sur la base d'une logique. donc je ne peux pas utiliser position() aussi bien –

Répondre

2

XSLT est basée sur la programmation fonctionnelle vous ne pouvez pas utiliser des compteurs, vous pouvez donc essayer récurrences si elle peut être de votre aide

0

Vous peut utiliser la récursivité pour simuler la fonctionnalité du compteur, mais vous n'avez spécifié aucun format d'entrée ou de sortie, fournissant ainsi du code général.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 
    <xsl:template match="/"> 
     <!-- TODO: Auto-generated template --> 
     <xsl:call-template name="counter"> 
      <xsl:with-param name="start" select="1" /> 
      <xsl:with-param name="stop" select="10" /> 
      <xsl:with-param name="increment" select="1" /> 
     </xsl:call-template> 
    </xsl:template> 
    <xsl:template name="counter"> 
     <xsl:param name="start" /> 
     <xsl:param name="stop" /> 
     <xsl:param name="increment" /> 
     Value:<xsl:value-of select="$increment"/> 
     <xsl:if test="$increment &lt; $stop"> 
       <xsl:call-template name="counter"> 
       <xsl:with-param name="start" select="$start" /> 
       <xsl:with-param name="stop" select="$stop" /> 
       <xsl:with-param name="increment" select="$increment+1" /> 
      </xsl:call-template> 
     </xsl:if> 

    </xsl:template> 
</xsl:stylesheet>