Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di allejo
    Registrato dal
    Jul 2001
    Messaggi
    747

    XSL incremento di una variabile

    Ciao a tutti.
    In XSL ho un ciclo e dentro il ciclo voglio incrementare una variabile.
    Posto l'esempio
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xslutput method="text"/>
    <xsl:variable name="a" select="1"/>
    <xsl:template match="/">
    <xsl:for-each select="AAA/BBB">
    <xsl:value-of select=" $a+1"/>
    </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>

    In questo caso mi dà sempre 2

    Posto l'xml

    <?xml version="1.0" encoding="UTF-8"?>
    <AAA>
    <BBB>bbb </BBB>
    <BBB>ccc </BBB>
    <BBB>ddd </BBB>
    <BBB>eee </BBB>
    <BBB>fff </BBB>
    </AAA>



    In questo caso mi deve dare 5 invece mi da sempre 2......
    perchè $a è sempre 1 invece voglio incrementare ma non so come si fà.....
    cioè voglio fare $a=$a+1

    Mi sapete aiutarmi?
    Allejo

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    106
    In xslt no si può incrementare una variabile. anche perchè avrai notato il ciclo for che fai non il classico ciclo for degli altri linguaggi. Quello che vorresti fare lo puoi fare quando uscirà XSLT 2.0 ma devi apsettare ancora un pò.

    Cezar

  3. #3
    Io ci sono riuscito con la ricorsione. Guarda, è molto semplice. Forse vi potrà essere utile.

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
    <html>

    <xsl:call-template name="increment">
    <xsl:with-param name="init" select="1"/>
    <xsl:with-param name="final" select="20"/>
    <xsl:with-param name="inc" select="1"/>
    </xsl:call-template>

    </html>
    </xsl:template>

    <xsl:template name="increment">
    <xslaram name="init"/>
    <xslaram name="final"/>
    <xslaram name="inc"/>
    <xsl:if test="$init &lt;= $final">
    <xsl:value-of select="$init"/>

    <xsl:call-template name="increment">
    <xsl:with-param name="init" select="$init+$inc"/>
    <xsl:with-param name="inc" select="$inc"/>
    <xsl:with-param name="final" select="$final"/>
    </xsl:call-template>
    </xsl:if>
    </xsl:template>

    </xsl:stylesheet>

  4. #4
    Più o meno ho anch'io lo stesso problema; devo aver una variabile all'interno del ciclo for.
    Il tuo codice funziona, ma come faccio a metterlo dentro al ciclo for? devo inserire solamente il call-template?

    ciao..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.