Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [xsl] Contatore

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    10

    [xsl] Contatore

    Salve a tutti ,
    Sto facendo un foglio di stile xsl con diversi template.
    Praticamente carico un file xml di dati e qualora l'utente volesse modificare qualche parametro, viene caricato un template che contiene una form. Per questo la form si trova all'interno di un ciclo for-each che carica tutti i valori del file xml. Il fastidio viene dato dall'input submit che viene ripetuto per ogni nodo. Io vorrei che ci fosse un unico tasto submit che invia tutta la form. Ho pensato di inserire un contatore visto che c'è un valore con cui fare il confronto all'interno dei nodi xml, ma come fare un contatore in xsl?
    Ho controllato anche in un'altra discussione c'era una soluzione:

    <xsl:variable name="a" select="cont(a)" />
    <xsl:variable name="b" select="cont(b)" />
    <xsl:value-of select="($a)*($b)"/>

    ma non mi funziona
    Grazie

  2. #2
    Non riesco a capire con precisione il tuo problema. Potresti inviare l'xml e l'xsl che stai utilizzando?

  3. #3
    mi sembra molto strano sono io che ho scritto quel codice prova così..

    file xml

    <?xml version="1.0"?>
    <html>
    <body>
    <img/>
    <img/>
    <img/>
    <img/>
    <img/>


















    </body>
    </html>


    file xsl

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="html">
    <xsl:variable name="a" select="count(body/img)"/>
    <xsl:variable name="b" select="count(body/p)"/>
    (<xsl:value-of select="$a"/>)
    [<xsl:value-of select="$b"/>]
    <xsl:value-of select="($a) * ($b)"/>
    </xsl:template>
    </xsl:stylesheet>

    output

    <?xml version="1.0" encoding="UTF-8"?>

    (5)
    [6]
    30

    funziona questo sicuro al 100%
    fammi sapere
    Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina.

    E’ diviso in varie sezioni che spaziano passando dalla gastronomia, al benessere, alla vita notturna ed ai vari negozi da visitare. Le diverse sezioni renderanno più semplice la consultazione ai visitatori.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    10

    [xsl] Contatore

    Forse non ho capito bene dove va applicato, magari non centra con il mio problema...
    Questo è l'xml che mi sono creata di prova ovviamente quello dell'applicazione avrà un numero di nodi maggiori...

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <dataroot>
    <tRigheOrd>
    <idcliente>0212</idcliente>
    <annoord>2004</annoord>
    <numord>22</numord>
    <numriga>1</numriga>
    <codart>art 2456</codart>
    <descrart>Molto Funzionale</descrart>
    <um>Cm</um>
    <Qta></Qta>
    <prezzo>5</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>0212</idcliente>
    <annoord>2004</annoord>
    <numord>22</numord>
    <numriga>2</numriga>
    <codart>art 2548</codart>
    <descrart>Molto Funzionale</descrart>
    <um>Cm</um>
    <Qta>10</Qta>
    <prezzo>5</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>0212</idcliente>
    <annoord>2001</annoord>
    <numord>1</numord>
    <numriga>1</numriga>
    <codart>art 32135</codart>
    <descrart>Molto Funzionale</descrart>
    <um>pz</um>
    <Qta>25</Qta>
    <prezzo>66</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>0212</idcliente>
    <annoord>2001</annoord>
    <numord>1</numord>
    <numriga>2</numriga>
    <codart>art 32132</codart>
    <descrart>Molto Funzionale</descrart>
    <um>pz</um>
    <Qta>254</Qta>
    <prezzo>66</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>0212</idcliente>
    <annoord>2001</annoord>
    <numord>1</numord>
    <numriga>3</numriga>
    <codart>art 32154</codart>
    <descrart>Molto Funzionale</descrart>
    <um>pz</um>
    <Qta>25</Qta>
    <prezzo>66</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>3568</idcliente>
    <annoord>2000</annoord>
    <numord>12</numord>
    <numriga>1</numriga>
    <codart>art 75837</codart>
    <descrart/>
    <um>Pz</um>
    <Qta>102</Qta>
    <prezzo>0</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>3568</idcliente>
    <annoord>2000</annoord>
    <numord>12</numord>
    <numriga>2</numriga>
    <codart>art 75837</codart>
    <descrart/>
    <um>Pz</um>
    <Qta>102</Qta>
    <prezzo>0</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>3568</idcliente>
    <annoord>2000</annoord>
    <numord>12</numord>
    <numriga>3</numriga>
    <codart>art 75837</codart>
    <descrart/>
    <um>Pz</um>
    <Qta>102</Qta>
    <prezzo>0</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>3568</idcliente>
    <annoord>2000</annoord>
    <numord>12</numord>
    <numriga>4</numriga>
    <codart>art 75837</codart>
    <descrart/>
    <um>Pz</um>
    <Qta>102</Qta>
    <prezzo>0</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>3568</idcliente>
    <annoord>2000</annoord>
    <numord>12</numord>
    <numriga>5</numriga>
    <codart>art 75837</codart>
    <descrart/>
    <um>Pz</um>
    <Qta>102</Qta>
    <prezzo>0</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>5478</idcliente>
    <annoord>2004</annoord>
    <numord>5</numord>
    <numriga>1</numriga>
    <codart>art 5667</codart>
    <descrart>Molto Funzionale</descrart>
    <um>pz</um>
    <Qta>3</Qta>
    <prezzo>35</prezzo>
    <dataconsri/>
    </tRigheOrd>
    <tRigheOrd>
    <idcliente>0212</idcliente>
    <annoord>2004</annoord>
    <numord>21</numord>
    <numriga>1</numriga>
    <codart>art 5667</codart>
    <descrart>Molto Funzionale</descrart>
    <um>Pz</um>
    <Qta>5</Qta>
    <prezzo>35</prezzo>
    <dataconsri/>
    </tRigheOrd>
    </dataroot>

    xsl associato è
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xslutput method="html" version="4.0" indent="yes" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
    <xsl:template match="//dataroot" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xslaram name="aord"></xslaram>
    <xslaram name="nord"></xslaram>
    <xslaram name="status"></xslaram>

    <html>
    <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"/>
    <title>Dettaglio Ordine</title>
    <style type="text/css"></style>
    </head>
    <body>


    <table border="2" cellspacing="2" cellpadding="2" id="CTRL1">
    <tbody>
    <tr>
    <td width="2 cm">

    ...............QUI C'è L'INTESTAZIONE DELLA TABELLA.........
    .................................................. .........
    ........QUI DI SEGUITO SI SCEGLIE IL TEMPLATE DA APPLICARE.....

    <xsl:variable name="stato" select="($status='vis')" />
    <xsl:variable name="anno" select="($aord)" />
    <xsl:variable name="numero" select="($nord)" />

    Modifica Ordine
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    <xsl:choose>
    <xsl:when test="($status='vis')">
    <xsl:apply-templates mode="vis"/></xsl:when>
    <xsl:when test="($status ='modif')">
    Conferma Modifica<hr/>

    <xsl:apply-templates mode="edit"/></xsl:when>
    </xsl:choose>
    </tbody>
    </table>
    </body>
    </html>
    </xsl:template>

    <xsl:template match="tRigheOrd" name="visualizza" mode="vis">
    <tr>
    <td ><xsl:value-of select="idcliente"/></td>
    <td><xsl:value-of select="annoord"/></td>
    <td><xsl:value-of select="numord"/></td>
    <td><xsl:value-of select="numriga"/></td>
    <td><xsl:value-of select="codart"/></td>
    <td><xsl:choose>
    <xsl:when test="um=''">
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    </xsl:when>
    <xsltherwise>
    <xsl:value-of select="um"/>
    </xsltherwise>
    </xsl:choose>
    </td>

    ...QUI CONTINUA IL CARICAMENTO DELLA TABELLA IN MODALITà VISUALIZZA...
    .................................................. ....................

    </xsl:template>

    <xsl:template match="tRigheOrd" name="modifica" mode="edit">
    <form method="post" action="redir/salva_mod.asp" name="modifica" > <tr>
    <td><xsl:value-of select="idcliente"/></td>
    <td><xsl:value-of select="annoord"/></td>
    <td><xsl:value-of select="numord"/></td>
    <td><xsl:value-of select="numriga"/></td>
    <td><xsl:value-of select="codart"/></td>
    <td>
    <xsl:choose>
    <xsl:when test="descrart=''">
    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></xsl:when>
    <xsltherwise>
    <xsl:value-of select="descrart"/>
    </xsltherwise>
    </xsl:choose>
    </td>
    <td>
    <input type="text" name="concat('qta_',numriga)" value="{Qta}" />
    </td>
    ..........ESATTAMENTE UGUALE ALLA MODALITà VISUALIZZA TRANNE PER LA FORM PRESENTE SOLO (PER IL MOMENTO) NELLA QUANTITA DEL PRODOTTO....

    <input type="submit" value="conferma modifiche"/>
    </form>
    </xsl:template>

    </xsl:stylesheet>


    PRATICAMENTE IL PROBLEMA STA NEL FATTO CHE MI COMPAIONO TANTI SUBMIT QUANTE SONO LE RIGHE DEL DETTAGLIO ARTICOLO MENTRE IO VORREI CHE CON UN UNICO SUBMIT RIUSCISSE AD INVIARE LA FORM DI TUTTE LE RIGHE.

    AVEVO PERCIò PENSATO DI INTRODURRE UN CONTATORE DA CONFRONTARE CON IL NUMRIGA.....

    DITEMI VOI

    GRAZIE
    e auguri per la futura (o già avvenuta) nascita

  5. #5
    l'esempio che ti ho fatto io era un semplice moltiplicazione.
    e dell'utilizzo del couunt.(un po quelloc che si paralava nell'altro topic)
    Sinceramente non ho capito bene cosa vuoi fare !!
    Se con un submit vuoi inviare piu form allora penso che devi usare javascript.
    Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina.

    E’ diviso in varie sezioni che spaziano passando dalla gastronomia, al benessere, alla vita notturna ed ai vari negozi da visitare. Le diverse sezioni renderanno più semplice la consultazione ai visitatori.

  6. #6
    Ciao

    Se con una sola form vuoi modificare piu' dati contemporaneamente ti consiglierei di fare cosi':


    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xslutput method="html" version="4.0" indent="yes" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
    <xsl:template match="//dataroot" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xslaram name="aord"></xslaram>
    <xslaram name="nord"></xslaram>
    <xslaram name="status">modif</xslaram>
    <html>
    <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"/>
    <title>Dettaglio Ordine</title>
    <style type="text/css"></style>
    </head>
    <body>


    <table border="2" cellspacing="2" cellpadding="2" id="CTRL1">
    <tbody>
    <tr>
    <td width="2 cm">
    <!--
    ...............QUI C'è L'INTESTAZIONE DELLA TABELLA.........
    .................................................. .........
    ........QUI DI SEGUITO SI SCEGLIE IL TEMPLATE DA APPLICARE.....-->
    <xsl:variable name="stato" select="($status='vis')" />
    <xsl:variable name="anno" select="($aord)" />
    <xsl:variable name="numero" select="($nord)" />


    Modifica Ordine
    <xsl:text disable-output-escaping="yes">&#160;</xsl:text>
    <xsl:text disable-output-escaping="yes">&#160;</xsl:text>
    <xsl:text disable-output-escaping="yes">&#160;</xsl:text>
    <xsl:text disable-output-escaping="yes">&#160;</xsl:text>
    <xsl:choose>
    <xsl:when test="($status='vis')">
    <xsl:apply-templates mode="vis"/>
    </xsl:when>
    <xsl:when test="($status ='modif')">
    Conferma Modifica
    <hr/>


    <form method="post" action="redir/salva_mod.asp" name="modifica" >
    <xsl:apply-templates mode="edit"/>
    <tr>
    <td>
    <input type="submit" value="conferma modifiche"/>
    </td>
    </tr>
    </form>
    </xsl:when>
    </xsl:choose>
    </td>
    </tr>
    </tbody>
    </table>
    </body>
    </html>
    </xsl:template>
    <xsl:template match="tRigheOrd" name="visualizza" mode="vis">
    <tr>
    <td >
    <xsl:value-of select="idcliente"/>
    </td>
    <td>
    <xsl:value-of select="annoord"/>
    </td>
    <td>
    <xsl:value-of select="numord"/>
    </td>
    <td>
    <xsl:value-of select="numriga"/>
    </td>
    <td>
    <xsl:value-of select="codart"/>
    </td>
    <td>
    <xsl:choose>
    <xsl:when test="um=''">
    <xsl:text disable-output-escaping="yes">&#160;</xsl:text>
    </xsl:when>
    <xsltherwise>
    <xsl:value-of select="um"/>
    </xsltherwise>
    </xsl:choose>
    </td>
    </tr>
    <!--
    ...QUI CONTINUA IL CARICAMENTO DELLA TABELLA IN MODALITà VISUALIZZA...
    .................................................. ....................
    -->
    </xsl:template>
    <xsl:template match="tRigheOrd" name="modifica" mode="edit">
    <tr>
    <td>
    <xsl:value-of select="idcliente"/>
    </td>
    <td>
    <xsl:value-of select="annoord"/>
    </td>
    <td>
    <xsl:value-of select="numord"/>
    </td>
    <td>
    <xsl:value-of select="numriga"/>
    </td>
    <td>
    <xsl:value-of select="codart"/>
    </td>
    <td>
    <xsl:choose>
    <xsl:when test="descrart=''">
    <xsl:text disable-output-escaping="yes">&#160;</xsl:text>
    </xsl:when>
    <xsltherwise>
    <xsl:value-of select="descrart"/>
    </xsltherwise>
    </xsl:choose>
    </td>
    <td>
    <input type="text" name="{concat('qta_',numriga)}" value="{Qta}" />
    </td>
    <!--..........ESATTAMENTE UGUALE ALLA MODALITà VISUALIZZA TRANNE PER LA FORM PRESENTE SOLO (PER IL MOMENTO) NELLA QUANTITA DEL PRODOTTO....
    -->
    </tr>
    </xsl:template>
    </xsl:stylesheet>


    Non ho fatto altro che spostare la definizione della form fuori dall'apply-templates. Attenta pero' che rispetto ai dati che hai pubblicato e a come assegni i nomi agli input [ name="{concat('qta_',numriga)}" ] alcuni oggetti si ripetono [ es. <input type="text" name="qta_2" value="102"> ].

    Ciao
    Lorenzo

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.