Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    un consiglio xml si xml no...



    Ho un piccolo dubbio che mi perseguita da un pò e vorrei un pò di consigli.
    Vi siete mai imbattuti in dati ricorsivi con struttura ad albero?
    Cioè dati contenuti all'interno di una tabella che fanno riferimento a altri dati presenti nella stessa tabella.
    Esempio:
    codice:
    ----------------------------
    | ID | ID_Padre | Voce
    ----------------------------
    |  1 | <null>   | File
    |  2 | 1        | Apri
    |  3 | 1        | Salva
    |  4 | <null>   | Modifica
    |  5 | 4        | Taglia
    |  6 | 4        | Copia
    |  7 | 4        | Incolla
    |  8 | <null>   | Strumenti
    |  9 | 8        | Catalogo
    | 10 | 9        | Privato
    | 11 | 9        | Pubblico
    | 12 | 8        | Attività
    ----------------------------
    Da questa struttura dati ne esce un albero di questo genere
    codice:
    root
      |-File
      |   |-Apri
      |   |_Salva
      |
      |-Modifca
      |   |-Taglia
      |   |-Copia
      |   |_Incolla
      |
      |_Strumenti
          |-Catalogo
          |    |-Privato
          |    |_Pubblico
          |
          |_Attività
    Ora come crearmi questa struttura l'unico modo è creare una funzione ricorsiva, cioè una funzione che continui a chiamare se stessa.
    (Serve un esempio?)

    Questo tipo di struttura delle informazioni la uso molto all'interno delle mie applicazioni (creazione del menù, un catalogo prodotti, elenco delle cartelle, etc...) e fin'ora ho dovuto crearmi delle funzioni apposite per ogni utilizzo.
    Ma il problema non è qui.
    Il fatto che mi scoccia di più è aver dovuto aggiungere il codice HTML all'interno delle funzioni e ogni volta che devo cambiare un qualcosa nell'impaginazione, del layout, richiamare un jscript devo mettere mano alla funzione.
    Lo so potrei risolvere con dei css... ma non risolvono appieno il mio problema.
    Vorrei proprio tener distinti il codice da quello che è l'aspetto grafico.
    Per questo stavo pensando di utilizzare un file xml generato "al volo" e formattarlo in qualche modo.
    Il problema è che non so proprio come formattarlo... :-\
    Se usare i css, xsl, ...
    Anticipo che di xsl ne so poco però forse mi aiutano.

    Avevo anche pensato di passare come parametro della mia funzione che genera l'albero il codice html indicando con dei "breakpoint" i punti in cui inserire i valori che mi servono, però rimane sempre un pasticcio.

    L'esigenza vera e propria è quella di tener molto distinto il codice dall'html in modo da poter passare la pagina a "un grafico" in modo che possa "manipolarla" senza far troppi danni.

    Per questo ho pensato di postare qui in modo da trovare un confronto con le varie esperienze di voi senatori di html.it

    Grazie per l'attenzione!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    quanti dati hai? che database usi?

    se ne hai tanti è dura estrarre sempre tutto
    se non cambiano puoi effettivamente staticizzare l'albero senza doverlo ricreare sempre.
    Tutti vogliono parlare, nessuno sa ascoltare.

  4. #4
    Il DB potrebbe essere indifferente sia Access che SQL Server.

    L'albero potrebbe essere piuttosto semplice, poche diramazioni, come divenire molto "spesso"

    Il problema non è tanto nei dati ma nella loro visualizzazione.
    Non nella scelta di funzioni ricorsive (unico modo per estrarre questo tipo di dati) ma nel dover inserire per forza in queste il codice HTML per visuallizare i dati.

    Riesco anche a crearmi un file xml (corretto e anche carino) dei dati in questione. Purtroppo non saprei molto cosa farne...
    A meno che non esista un modo per ciclare tutti i nodi del file senza conoscerne struttura e profondità.
    Tipo un FOR EACH ITEM IN ... bla... bla...

    Vorrei proprio separare meglio quelle che sono le funzioni per l'estrazione dei dati e la visualizzazione di questi in HTML.
    Capito?

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.