Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Eliminare nodi 'doppi'

  1. #1

    Eliminare nodi 'doppi'

    Ciao,

    dato un documento XML nel quale so che alcuni nodi hanno valori uguali vorrei riuscire a eliminare i doppioni dato il valore di un nodo figlio per ciascun nodo padre che compone il documento.

    Es:
    <nodo_padre id="1">
    <nodo_figlio>ABC</nodo_figlio>
    </nodo_padre>
    <nodo_padre id="2">
    <nodo_figlio>ABC</nodo_figlio>
    </nodo_padre>
    <nodo_padre id="3">
    <nodo_figlio>ABC</nodo_figlio>
    </nodo_padre>
    <nodo_padre id="4">
    <nodo_figlio>EFG</nodo_figlio>
    </nodo_padre>

    tramite XSLT vorrei per esempio trasformare il tutto in una lista (X)HTML

    tipo

    <ul>[*]ABC[*]EFG[/list]

    'filtrando' ed escludendo tutti i nodi_padre il cui nodo figlio sia uguale al precedente.

    Si può fare magari con xPath?

    Grazie.
    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

  2. #2
    codice:
    select="nodo_padre[nodo_figlio != preceding-sibling::nodo_figlio]"
    questo dovrebbe selezionarti tutti i nodi padre che hanno nodi figli diversi.
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  3. #3
    ciao, grazie, ma sono un po' tordo oggi..
    codice:
    select="nodo_padre[nodo_figlio != preceding-sibling::nodo_figlio]"
    dove lo devo cacciare?
    Che risltato mi restituisce?
    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

  4. #4
    posta il foglio XSLT che poi vediamo...
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  5. #5
    Ciao,
    grazie.. ti posto la parte che mi interessa.. in pratica vorrei salvare due variabili, una con il nodo corrente e l'altra con il nodo che lo precede.

    [CODE]
    <xsl:for-each select="/root/node_set/record">
    <xsl:variable name="record" select="current()"/>
    <xsl:variable name="p-n" select="$record:receding-sibling"/>
    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

  6. #6
    nel post precedente non si è salvato tutto..
    riposto



    [CODE]
    <xsl:for-each select="/root/node_set/record">
    <xsl:variable name="record" select="current()"/>
    <xsl:variable name="p-n" select="$record:receding-sibling"/>
    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

  7. #7
    da quanto ne so io non puoi usare le variabili davanti a "preceding-sibling". comunque per avere il valore del nodo precedente dovresti usare:
    preceding-sibling::nomenodo[position()-1]

    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  8. #8
    Tipo così?
    codice:
      <xsl:for-each select="/root/node_set/record"> 
                             <xsl:variable name="record" select="current()"/> 
                          <xsl:variable name="p-n" select="preceding-sibling::record[position() -1]"/>
    VVoVe:
    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

  9. #9
    Originariamente inviato da AnFrusch@pepp
    Tipo così?
    codice:
      <xsl:for-each select="/root/node_set/record"> 
                             <xsl:variable name="record" select="current()"/> 
                          <xsl:variable name="p-n" select="preceding-sibling::record[position() -1]"/>
    innanzitutto nell'espressione "preceding-sibling::record[position() -1]" record non si riferisce ad una variabile perchè manca il simbolo $, e comunque $ non puo' comparire dopo un identificatore di asse (sempre da quanto ne so io).
    inoltre non capisco in che modo usi le variabili, e soprattutto a cosa serve definire current() variabile quando il valore è agià accessibile con l'apposita funzione.
    tornando alla struttura iniziale:
    codice:
    <nodo_padre id="1"> 
    <nodo_figlio>ABC</nodo_figlio> 
    </nodo_padre> 
    <nodo_padre id="2"> 
    <nodo_figlio>ABC</nodo_figlio> 
    </nodo_padre> 
    <nodo_padre id="3"> 
    <nodo_figlio>ABC</nodo_figlio> 
    </nodo_padre> 
    <nodo_padre id="4"> 
    <nodo_figlio>EFG</nodo_figlio> 
    </nodo_padre>
    spiegami esattamente cosa vuoi ottenere. :master:
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  10. #10
    secondo me ci siamo capiti male...

    capisco il motivo, ho chiamato una variabile con lo stesso nome di un nodo (record) e quindi ciò può avere creato confusione.
    secondo poi, non sono esperto ma a volte ci arrivo alle cose..

    questa cosa non ha senso:
    <xsl:value-of select="/root/node_set/node[position() - 1]"/>
    poichè se non ho capito male, nelle parentesi quadre viene verificata una condizione.. ora come può una sottrazzione essere una condizione..

    questo ha senso
    <xsl:variable name="pre-position" select="position() - 1"/>
    <xsl:value-of select="/root/node_set/node[$pre-position]"/>

    e infatti così funziona, e così ho risolto.

    a parte questo, non riesco a capire come vadano usati gli 'assi'.. voglio dire, come va usato preceding-sibling o following-sibling visto che non sono riuscito ad implementare una soluzione con essi.

    Quanto all'uso della variabile.. mi faceva comodo.

    MR. PINK
    "Like a Virgin" is all about a girl who digs a guy with a big dick.
    The whole song is a metaphor for big dicks.

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.