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:
| Nome Asse | Descrizione |
|---|---|
| ancestor | Seleziona tutti i nodi ascendenti del nodo corrente |
| ancestor-or-self | Seleziona tutti i nodi ascendenti del nodo corrente ed il nodo stesso |
| attribute | Seleziona gli attributi del nodo corrente |
| child | Seleziona tutti i nodi Figlio del nodo corrente |
| descendant | Seleziona tutti i nodi Discendenti del nodo corrente |
| descendant-or-self | Seleziona tutti i nodi discendenti del nodo corrente ed il nodo stesso |
| following | Seleziona tutti i nodi discendenti di tutti i nodi di pari livello successivi al nodo corrente |
| following-sibling | Seleziona tutti i nodi di pari livello successivi al nodo corrente |
| namespace | Seleziona tutti i namespace del nodo corrente |
| parent | Seleziona il nodo Padre del nodo corrente |
| preceding | Seleziona tutti i nodi discendenti di tutti i nodi di pari livello precedenti al nodo corrente |
| preceding-sibling | Seleziona tutti i nodi di pari livello precedenti al nodo corrente |
| self | Seleziona il nodo corrente |
Acuni esempi per semplificare l'argomento. Per gli esempi faccio riferimento al file serra.xml.
| Esempio | Descrizione |
|---|---|
| child::pianta | Seleziona 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::pianta | Seleziona tutti i nodi <pianta> discendenti del nodo corrente |
| ancestor::pianta | Seleziona tutti i nodi <pianta> ascendenti del nodo corrente |
| ancestor-or-self::pianta | Seleziona 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!