Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39

    [XML] variabile d'appoggio

    Salve a tutti, avrei un problema...
    Devo svolgere una parte di un esercizio che mi chiede di visualizzare solamente i codici dei negozi concorrenti escluso me stesso.
    Come faccio a dirgli che "me stesso" non lo deve prendere per visualizzarlo?
    Mi è stato suggerito di utilizzare una variabile, solo che non so come si crea....

    <xsl:for-each select="//mercato/bancarelle">
    <xsl:if test="Tipologia/@tip='CASALINGHI'">
    <xsl:value-of select="Codice"/>
    </xsl:if>
    </xsl:for-each>

    Questo è quello che ho scritto, solo che stampa anche il codice della mia bancarella, mentre dovrebbe stampare solamente quello del mio concorrente...
    Qualcuno può aiutarmi??

    Grazie e ciao

  2. #2
    Ciao,
    <xsl:for-each select="//mercato/bancarelle">
    <xsl:choose>
    <xsl:when test="'='">

    </xsl:when>


    <xsltherwise>
    <xsl:if test="Tipologia/@tip='CASALINGHI'">
    <xsl:value-of select="Codice"/>
    </xsl:if>
    </xsltherwise>

    </xsl:choose>
    </xsl:for-each>

    In = dovresti mettere il nome della tua bancarella NOME_BANCARELLA='LA TUA BANCARELLA' , e se incontra la tua bancarella non stampa niente e quindi lo salta.

    Fammi sapere,
    Andrea

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Grazie mille!!!
    Oggi provo e ti faccio sapere.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Ho provato a fare come mi hai detto tu, solo che funziona solo in parte...
    Cioè il primo controllo lo fa bene (stampa solo i concorrenti escusi loro stessi), mentre quando deve andare a controllare l'altra bancarella dello stesso tipo (ad esempio mi è stato chiesto nell'esercizio di avere due bancarelle 'ABBIGLIAMENTO'), mi stampa il suo stesso codice e non quello del concorrente...
    Ad esempio questo è quello che dovrebbe stampare:
    nella prima colonna: codice A1 concorrente A4
    nella seconda colonna: codice A2 (non ci sono concorrenti e quindi non stampa niente)
    nella terza colonna: codice A3 (non ci sono concorrenti e quindi non stampa niente)
    nella quarta colonna: codice A4 concorrente A1


    Questo è quello che mi stampa facendo come mi hai detto tu:
    nella prima colonna: codice A1 concorrente A4
    nella seconda colonna: codice A2 (non ci sono concorrenti e quindi non stampa niente)
    nella terza colonna: codice A3 (non ci sono concorrenti e quindi non stampa niente)
    nella quarta colonna: codice A4 concorrente A4

    Mi è stato consigliato di utilizzare una variabile d'appoggio per memorizzare "me stesso"
    Ho creato la variabile con <var appoggio="codice">
    solo che non riesco a dirgli di andare a prendere l'altro codice...

    Sai darmi una soluzione che funzioni??
    Ancora grazie e

  5. #5
    Ciao,
    mi faresti vedere il tuo XML ?

    Altrimneti se sai scrivere Inglese prova a postare il problema qui

    http://www.dotdragnet.com/forum

    E' un forum dove ti aiutano molto.

    PS Sai come paginare un file XML del tipo 1 | 2| 3 ecc. ?

    Andrea

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    39
    Dicamo che adesso non ha più molta importanza la soluzione al problema...(l'esame è stato oggi ).
    Certo che se riesci a trovare la soluzione al mio problema, mi ritornerebbe cmq utile nella vita...
    Cmq grazie per l'interessamento...
    Ti posto tutto il codice, compreso il css.

    File XML

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="mercato.xsl"?>

    <!DOCTYPE mercato [
    <!ELEMENT mercato (nome, zona, bancarelle+)>
    <!ELEMENT nome (#PCDATA)>
    <!ELEMENT zona (#PCDATA)>
    <!ELEMENT bancarelle (NomeGestore, Posizione, Tipologia, Stabile, prodotti+)>
    <!ATTLIST bancarelle id ID #REQUIRED>
    <!ELEMENT NomeGestore (#PCDATA)>
    <!ELEMENT Posizione (#PCDATA)>
    <!ELEMENT Tipologia EMPTY>
    <!ATTLIST Tipologia tip (ALIMENTARI|ABBIGLIAMENTO|CASALINGHI) #REQUIRED>
    <!ELEMENT Stabile EMPTY>
    <!ATTLIST Stabile st (si|no) #REQUIRED>
    <!ELEMENT prodotti (NomeProdotto, Prezzo, Promo, Sconto)>
    <!ELEMENT NomeProdotto (#PCDATA)>
    <!ELEMENT Prezzo (#PCDATA)>
    <!ELEMENT Promo EMPTY>
    <!ATTLIST Promo pr (si|no) #REQUIRED>
    <!ELEMENT Sconto (#PCDATA)>
    ]>

    <mercato>
    <nome>Mercato Etneo</nome>
    <zona>Centro Storico</zona>

    <bancarelle id="A1">
    <NomeGestore>Piero</NomeGestore>
    <Posizione>1</Posizione>
    <Tipologia tip="ABBIGLIAMENTO"></Tipologia>
    <Stabile st="si"/>
    <prodotti>
    <NomeProdotto>Jeans</NomeProdotto>
    <Prezzo>100</Prezzo>
    <Promo pr="si"/>
    <Sconto>20</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Maglietta</NomeProdotto>
    <Prezzo>75</Prezzo>
    <Promo pr="si"/>
    <Sconto>10</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Camicia</NomeProdotto>
    <Prezzo>49</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Slip</NomeProdotto>
    <Prezzo>9</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    </bancarelle>

    <bancarelle id="A2">
    <NomeGestore>Marco</NomeGestore>
    <Posizione>2</Posizione>
    <Tipologia tip="ALIMENTARI"/>
    <Stabile st="no"/>
    <prodotti>
    <NomeProdotto>Insalata</NomeProdotto>
    <Prezzo>5</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Pomodori</NomeProdotto>
    <Prezzo>4</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Pane</NomeProdotto>
    <Prezzo>3.75</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Mozzarella</NomeProdotto>
    <Prezzo>6.75</Prezzo>
    <Promo pr="si"/>
    <Sconto>5</Sconto>
    </prodotti>
    </bancarelle>

    <bancarelle id="A3">
    <NomeGestore>Giovanni</NomeGestore>
    <Posizione>3</Posizione>
    <Tipologia tip="CASALINGHI"/>
    <Stabile st="si"/>
    <prodotti>
    <NomeProdotto>Detersivo Piatti</NomeProdotto>
    <Prezzo>2.5</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Detersivo Lavatrice</NomeProdotto>
    <Prezzo>15</Prezzo>
    <Promo pr="si"/>
    <Sconto>15</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Scopa</NomeProdotto>
    <Prezzo>0.99</Prezzo>
    <Promo pr="no"/>
    <Sconto>0 </Sconto>
    </prodotti>
    </bancarelle>

    <bancarelle id="A4">
    <NomeGestore>Luca</NomeGestore>
    <Posizione>4</Posizione>
    <Tipologia tip="ABBIGLIAMENTO"/>
    <Stabile st="no"/>
    <prodotti>
    <NomeProdotto>Giubotto</NomeProdotto>
    <Prezzo>445</Prezzo>
    <Promo pr="si"/>
    <Sconto>30</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Calzini</NomeProdotto>
    <Prezzo>15</Prezzo>
    <Promo pr="no"/>
    <Sconto>0</Sconto>
    </prodotti>
    <prodotti>
    <NomeProdotto>Scarpe</NomeProdotto>
    <Prezzo>199</Prezzo>
    <Promo pr="si"/>
    <Sconto>10</Sconto>
    </prodotti>
    </bancarelle>

    </mercato>


    File CSS

    h1
    {
    width:auto;
    color:black;
    text-align:left;
    }

    body
    {
    font-family:verdana;
    font-size:16px;
    font-style:bold;
    }

    td, th
    {
    width:auto;
    border:thin solid blue;
    }

    thead
    {
    width:auto;
    font-style:bold;
    font-size:16px;
    text-align:center;
    }

    tbody
    {
    width:auto;
    font-style:bold;
    font-size:16px;
    text-align:center;
    }

    File XSL

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/1999/xhtml">
    <xslutput method="xml"
    doctype-system="http://www.w3.org/1999/xhtmll/DTD/xhtmll-
    transitional.dtd"
    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
    <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it">
    <head>
    <link rel="stylesheet" type="text/css" href="mercato.css"/>
    <title>Mercato</title>
    </head>



    <body>
    <h1><xsl:value-of select="//mercato/nome"/></h1>
    <h1><xsl:value-of select="//mercato/zona"/></h1>
    <h1>Numero delle bancarelle presenti nel mercato: <xsl:value-of select="count(//mercato/bancarelle)"/></h1>



    <h1>Elenco Bancarelle</h1>
    <table>
    <thead>
    <tr>
    <th>Codice</th>
    <th>Nome Gestore</th>
    <th>Posizione</th>
    <th>Locazione</th>
    <th>Prodotti Venduti</th>
    <th>Concorrenza</th>
    </tr>
    </thead>

    <tbody>
    <xsl:for-each select="//mercato/bancarelle">

    <xsl:if test="Tipologia/@tip='ABBIGLIAMENTO'">
    <tr style="background:yellow">
    <td><xsl:value-of select="@id"/></td>
    <td><xsl:value-of select="NomeGestore"/></td>
    <td><xsl:value-of select="Posizione"/></td>
    <td><xsl:if test="Stabile/@st='si'">STABILE</xsl:if><xsl:if test="Stabile/@st='no'">AMBULANTE</xsl:if></td>
    <td><xsl:value-of select="count(prodotti)"/></td>

    <td>
    <xsl:for-each select="//mercato/bancarelle">
    <xsl:choose>
    <xsl:when test="@id='A1'">
    </xsl:when>
    <xsltherwise>
    <xsl:if test="Tipologia/@tip='ABBIGLIAMENTO'">
    <xsl:value-of select="@id"/>
    </xsl:if>
    </xsltherwise>
    </xsl:choose>
    </xsl:for-each>
    </td>

    </tr>
    </xsl:if>

    <xsl:if test="Tipologia/@tip='ALIMENTARI'">
    <tr style="background:green">
    <td><xsl:value-of select="@id"/></td>
    <td><xsl:value-of select="NomeGestore"/></td>
    <td><xsl:value-of select="Posizione"/></td>
    <td><xsl:if test="Stabile/@st='si'">STABILE</xsl:if><xsl:if test="Stabile/@st='no'">AMBULANTE</xsl:if></td>
    <td><xsl:value-of select="count(prodotti)"/></td>

    <td>
    <xsl:for-each select="//mercato/bancarelle">
    <xsl:choose>
    <xsl:when test="@id='A2'">
    </xsl:when>
    <xsltherwise>
    <xsl:if test="Tipologia/@tip='ALIMENTARI'">
    <xsl:value-of select="@id"/>
    </xsl:if>
    </xsltherwise>
    </xsl:choose>
    </xsl:for-each>
    </td>

    </tr>
    </xsl:if>

    <xsl:if test="Tipologia/@tip='CASALINGHI'">
    <tr style="background:red">
    <td><xsl:value-of select="@id"/></td>
    <td><xsl:value-of select="NomeGestore"/></td>
    <td><xsl:value-of select="Posizione"/></td>
    <td><xsl:if test="Stabile/@st='si'">STABILE</xsl:if><xsl:if test="Stabile/@st='no'">AMBULANTE</xsl:if></td>
    <td><xsl:value-of select="count(prodotti)"/></td>

    <td>
    <xsl:for-each select="//mercato/bancarelle">
    <var appoggio="'@id'"/>
    <xsl:choose>
    <xsl:when test="@id='A3'">
    </xsl:when>
    <xsltherwise>
    <xsl:if test="Tipologia/@tip='CASALINGHI'">
    <xsl:value-of select="@id"/>
    </xsl:if>
    </xsltherwise>
    </xsl:choose>
    </xsl:for-each>
    </td>

    </tr>
    </xsl:if>

    </xsl:for-each>
    </tbody>
    </table>



    <h1>Dettaglio Bancarelle:</h1>
    <xsl:for-each select="//mercato/bancarelle">
    <xsl:if test="Tipologia/@tip='ABBIGLIAMENTO'">
    <h1>Codice <xsl:value-of select="@id"/></h1>

    <table>
    <thead>
    <tr>
    <th>Nome Prodotto</th>
    <th>Prezzo</th>
    <th>Prezzo Scontato</th>
    </tr>
    </thead>

    <tbody>

    <h1><xsl:value-of select="Tipologia/@tip"/></h1>
    <xsl:for-each select="prodotti">
    <tr>
    <td><xsl:value-of select="NomeProdotto"/></td>
    <td><xsl:value-of select="Prezzo"/> euro</td>
    <td><xsl:if test="Promo/@pr='si'">Scontato a: <xsl:value-of select="Prezzo -((Prezzo*Sconto)div 100)"/> euro </xsl:if><xsl:if test="Promo/@pr='no'">Nessuno</xsl:if></td>
    </tr>

    </xsl:for-each>
    </tbody>
    </table>
    </xsl:if>
    </xsl:for-each>

    <xsl:for-each select="//mercato/bancarelle">
    <xsl:if test="Tipologia/@tip='CASALINGHI'">
    <h1>Codice <xsl:value-of select="@id"/></h1>

    <table>
    <thead>
    <tr>
    <th>Nome Prodotto</th>
    <th>Prezzo</th>
    <th>Prezzo Scontato</th>
    </tr>
    </thead>

    <tbody>

    <h1><xsl:value-of select="Tipologia/@tip"/></h1>
    <xsl:for-each select="prodotti">
    <tr>
    <td><xsl:value-of select="NomeProdotto"/></td>
    <td><xsl:value-of select="Prezzo"/> euro</td>
    <td><xsl:if test="Promo/@pr='si'">Scontato a: <xsl:value-of select="Prezzo -((Prezzo*Sconto)div 100)"/> euro </xsl:if><xsl:if test="Promo/@pr='no'">Nessuno</xsl:if></td>
    </tr>

    </xsl:for-each>
    </tbody>
    </table>
    </xsl:if>
    </xsl:for-each>

    <xsl:for-each select="//mercato/bancarelle">
    <xsl:if test="Tipologia/@tip='ALIMENTARI'">
    <h1>Codice <xsl:value-of select="@id"/></h1>

    <table>
    <thead>
    <tr>
    <th>Nome Prodotto</th>
    <th>Prezzo</th>
    <th>Prezzo Scontato</th>
    </tr>
    </thead>

    <tbody>

    <h1><xsl:value-of select="Tipologia/@tip"/></h1>
    <xsl:for-each select="prodotti">
    <tr>
    <td><xsl:value-of select="NomeProdotto"/></td>
    <td><xsl:value-of select="Prezzo"/> euro</td>
    <td><xsl:if test="Promo/@pr='si'">Scontato a: <xsl:value-of select="Prezzo -((Prezzo*Sconto)div 100)"/> euro </xsl:if><xsl:if test="Promo/@pr='no'">Nessuno</xsl:if></td>
    </tr>

    </xsl:for-each>
    </tbody>
    </table>
    </xsl:if>
    </xsl:for-each>

    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>


    Spero che riesci a capire dov'è il problema...
    Ancora grazie e

  7. #7
    Utente di HTML.it L'avatar di Polley
    Registrato dal
    Jan 2005
    Messaggi
    696
    non ho letto tutto quanto ma se ti serve memorizzare una un dato che varia a seconda di cosa stà guardando l'utente devi utilizzare un linguaggio lato server o js (dipende da cosa usi) che ti passa il parametro nell'xsl e poi lo elabori



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.