Share |

venerdì 19 febbraio 2010

XPath: La Ricerca per Assi

XPath ci fornisce una tecnica molto utile e potente per estrapolare informazioni da un documento XML qualsiasi: la ricerca per Assi.


Ma che cos'è un Asse?

Con il termine Asse si indica un NodeSet (in italiano: gruppo di nodi) relativamente al nodo corrente.

La sintassi XPath per eseguire una ricerca per Assi è:

asse::nomenodo[ predicatoXPath ]

Gli Assi sono:

Lista degli Assi
Nome Asse
Descrizione
ancestorSeleziona tutti i nodi ascendenti del nodo corrente
ancestor-or-selfSeleziona tutti i nodi ascendenti del nodo corrente ed il nodo stesso
attributeSeleziona gli attributi del nodo corrente
childSeleziona tutti i nodi Figlio del nodo corrente
descendantSeleziona tutti i nodi Discendenti del nodo corrente
descendant-or-selfSeleziona tutti i nodi discendenti del nodo corrente ed il nodo stesso
followingSeleziona tutti i nodi discendenti di tutti i nodi di pari livello successivi al nodo corrente
following-siblingSeleziona tutti i nodi di pari livello successivi al nodo corrente
namespaceSeleziona tutti i namespace del nodo corrente
parentSeleziona il nodo Padre del nodo corrente
precedingSeleziona tutti i nodi discendenti di tutti i nodi di pari livello precedenti al nodo corrente
preceding-siblingSeleziona tutti i nodi di pari livello precedenti al nodo corrente
selfSeleziona il nodo corrente

Acuni esempi per semplificare l'argomento. Per gli esempi faccio riferimento al file serra.xml.


Esempi di utilizzo degli Assi
EsempioDescrizione
child::piantaSeleziona tutti i nodi <pianta> figli del nodo corrente
attribute::id
Seleziona l'attributo 'id' del nodo corrente
child::*Seleziona tutti i nodi di tipo ELEMENT figli del nodo corrente
attribute::*Seleziona tutti gli attributi del nodo corrente
child::node()Seleziona tutti i nodi figli del nodo corrente
descendant::piantaSeleziona tutti i nodi <pianta> discendenti del nodo corrente
ancestor::piantaSeleziona tutti i nodi <pianta> ascendenti del nodo corrente
ancestor-or-self::piantaSeleziona tutti i nodi <pianta> ascendenti del nodo corrente compreso se stesso

Sicuramente prima o poi vi capiterà di dover attraversare un documento XML utilizzando queste soluzioni, vale la pena quindi provare ad utilizzare gli Assi fin da subito magari sforzandosi di rivoluzionare il modo di approcciare il solito problema.

Alla prossima,
MA.

0 commenti:

Posta un commento

Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)

..... e ricordati di firmarlo!