Share |

domenica 30 maggio 2010

XPath: Utilizzo delle Funzioni

Il linguaggio XPath, utile per navigare un documento XML, fornisce un ampio set di funzioni per potenziare l'estrazione dei dati XML, rendendo questa fase più flessibile e precisa.

Le funzioni XPath sono raggruppate in tre categorie:

  • Node-Set: accettano un node-set come argomento e restituiscono node-set o informazioni su un particolare nodo di esso;
  • String: eseguono valutazioni, formattazioni e manipolazioni su stringhe;
  • Boolean: valutano l'espressione passata come argomento e restituiscono un risultato booleano true o false, vero o falso;
  • Number: valutano l'espressione passata come argomento e restituiscono un risultato numerico;

Tutte le funzioni hanno questa sintassi:
nomeFunzione( [ espressione ] ).

Come si nota, l'espressione può essere facoltativa.

Gli esempi che seguono le spiegazioni sono stati creati utilizzando il documento XML serra.xml

Funzioni della categoria Node-Set

Funzioni Node-Set
FunzioneDescrizioneEsempioRisultato
count(espressione)Restituisce il conteggio dei nodi individuati dall'espressionecount(//pianta)4
position()Restituisce la posizione del nodo corrente relativamente alla lista di nodi in cui si trova.
last()Restituisce il numero di posizione dell'ultimo nodo di una lista//pianta[last()]4
name()Se usato nella forma name(node-set) restituisce il nome del nodo passato come argomento, se invece è utilizzato semplicemente nella forma name() restituisce il nome del nodo corrente
local-name()Resituisce il nome locale di un nodo senza il prefisso di namespace. L'utilizzo è identico a name().
namespace-uri()Restituisce l'URI del namespace di un nodo. L'utilizzo è identico a name().

Funzioni della categoria String












Funzioni String
FunzioneDescrizioneEsempioRisultato
concat()Concatena due o più stringhe passate come argomenticoncat('rosa', 'canina')rosacanina
contains()Determina se la prima stringa passata come parametro contiene la seconda stringa, passata anch'essa come parametro. Se i parametri passati sono dei riferimenti a nodi, di essi viene preso il valore ed interpretato come stringacontains('tulipano','pan')true
normalize-space()Elimina gli spazi spazi bianchi in eccesso da una stringa o dal valore di un nodo interpretato come stringanormalize-space(' rosa canina ')rosa canina
starts-with()Valuta se la stringa passata come primo argomento inizia con la stringa passata come secondo argomento. Restituisce true o falsestarts-with('tulipano','pan')false
string()Converte un oggetto in una stringastring(count(//pianta))"4"
string-length()Restituisce il numero di caratteri presenti nella stringa passata come parametro.string-length('felce')5
substring()Restituisce la sotto-stringa presente nella stringa passata come primo parametro ricavandola partendo dalla posizione passata come secondo argomento per una lunghezza pari al valore del terzo parametro.substring('soqquadro',4,6)quadro
substring-after()Restituisce la sotto-stringa presente nella stringa passata come primo parametro successiva alla stringa passata come secondo parametro.substring('tips.tricks@gmail.com','@')gmail.com
substring-before()Restituisce la sotto-stringa presente nella stringa passata come primo parametro precedente alla stringa passata come secondo parametro.substring('tips.tricks@gmail.com','@');tips.tricks
translate()Restituisce la stringa passata come primo parametro sostituendo i caratteri passati come secondo parametro con quelli contenuti nel terzo parametro.translate('mirko','m','M')Mirko

Funzioni della categoria Boolean

Funzioni Boolean
FunzioneDescrizioneEsempioRisultato
boolean()Converte l'espressione passata come parametro in un valore booleano. Se l'argomento è un numero, la funzione restituirà true nel caso il parametro fosse diverso da zero, altrimenti false. Se l'argomento è una stringa, la funzione restituirà true se questa non è vuota, altrimenti false. Se l'argomento è un riferimento ad un node-set, la funzione restituirà true se questo non è vuoto, altrimenti false.boolean(//serra)true
not()Restituisce true se l'argomento è una affermazione falsa, e viceversanot(contains('tulipano','pan'))false
false() e true()Restituiscono sempre false e true
lang()Restituisce true o false a seconda che l'attributo xml:lang del nodo corrente corrisponda a quello passato alla funzione come parametro.lang('it')true/false

E' da notare che la sintassi_XPath supporta le funzioni su numeri anche se utilizzate con gli operatori_XPath di confronto nelle espressioni filtro.

Funzioni della categoria Number

Funzioni Number
FunzioneDescrizioneEsempioRisultato
number()Converte l'argomento passato alla funzione in numero, se non è possibile convertire restituisce NaN (not a number).number('22342.3456'), number('rosa')22342.3456, NaN
ceiling()Arrotonda un numero decimale all'intero superiore.ceiling(0.5)1
floor()Arrotonda un numero decimale all'intero inferiore.floor(0.5)0
round()Arrotonda un numero decimale all'intero superiore o inferiore più prossimo.round(0.6), round(0.5), round(0.4)1, 1, 0
sum()Converte i valori del node-set passato come argomento in numeri e restituisce la loro somma.sum(//pianta/@prezzo)Restituisce la somma di tutti gli attributi prezzo dei nodi <pianta>

Come da premessa, la tecnologia XPath fornisce un ricco toolset per la selezione dei dati XML e l'elaborazione di condizioni e nodi contenuti in un documento XML: essa infatti è ampiamente utilizzata nei parsers come sistema di ricerca dei nodi.

Alla prossima, MA.

0 commenti:

Posta un commento

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

..... e ricordati di firmarlo!