Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    3

    Problema raggruppamento dati

    Ciao a tutti,
    sono in cerca di idee per risolvere un problema.

    Se per esempio ho un xml di questo tipo:

    <nazione>
    <regione name="emilia" citta="parma" />
    <regione name="toscana" citta="firenze" />
    <regione name="veneto" citta="venezia" />
    <regione name="emilia" citta="modena" />
    <regione name="toscana" citta="arezzo" />
    <regione name="veneto" citta="treviso" />
    <regione name="emilia" citta="bologna" />
    <regione name="emilia" citta="ferrara" />
    <regione name="toscana" citta="lucca" />
    </nazione>

    e voglio ottenere un output di questo tipo:

    emilia
    ---bologna
    ---ferrara
    ---modena
    ---parma
    toscana
    ---arezzo
    ---firenze
    ---lucca
    veneto
    ---venezia
    ---treviso

    Come posso realizzare l'xsl? Ho provato cercando varie soluzioni con for-each, preceding-sibling, ecc.. ma non sono riuscito a fare in modo che il nome della regione si ripeta una volta sola.

    Avete qualche idea??

    Grazie a tutti.

  2. #2
    Ma se fai..
    Codice PHP:
    <nazione>
      <
    regione name="emilia">
        <
    citta>Parma</citta>
        <
    citta>Ferrara</citta>
        <
    citta>Modena</citta>
        <
    citta>Bologna</citta>
      </
    regione>
      <
    regione name="veneto">
        <
    citta>Vicenza</citta>
        <
    citta>Venezia</citta>
        <
    citta>Treviso</citta>
        <
    citta>Verona</citta>
      </
    regione>
    </
    nazione
    Penso sia la soluzione migliore.. altrimenti se usi for-each ovviamente ti moltiplica i risultati per tante volte quanti sono gl elementi "regione"..

    Oppure se proprio non puoi modificare lo schema:
    Codice PHP:
    <xsl:for-each select="/regione" />
    <
    xsl:sort select="name" />
    <
    xsl:for-each select="/regione/citta" />
    <
    xsl:value-of select="citta" /> 
    Non ti assicuro nulla anche perche mi stò addentrando da poco in questo mondo..
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    3
    Purtroppo non posso modificare lo schema xml e quindi devo riuscire a fare il raggruppamento via xsl sull'xml così come viene generato.

  4. #4
    Hai provato con:
    Codice PHP:
    <xsl:for-each select="/regione" />
    <
    xsl:sort select="name" />
    <
    xsl:for-each select="/regione/citta" />
    <
    xsl:value-of select="citta" />
    <
    xsl:for-each>
    <
    xsl:sort>
    <
    xsl:for-each
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    3
    Ma citta è un attibuto non un nodo, non posso utilizzare

    <xsl:for-each select="/regione/citta" />
    In ogni caso il codice che hai scritto mi genererebbe solo l'elenco delle città, il problema è far venire una volta sola il nome della regione prima di ogni raggruppamento.

    Comunque ho visto che in xslt 2.0 esiste il for-each-group che forse fa proprio quello che serve a me.

    Adesso vedo se riesco a farmi aggiornare la versione xslt sul server e poi faccio qualche prova.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    10
    altrimenti usi il metodo muenchian senza dover aggiornare a xslt 2.0

    lo so che e' passato un po di tempo ma adesso non ho un cazzo da fare........

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 © 2026 vBulletin Solutions, Inc. All rights reserved.