XPATH
Cos’è XPATH:
XPath e’ una sintassi per selezionare frammenti di
documenti XML
XPath non e’ un linguaggio XML
XPath e’ standardizzato dal W3C
A cosa serve XPATH
A cosa serve XPATH:
Eseguire ricerche in documenti XML, attraverso la
navigazione della struttura ad albero
XPath e’ alla base della selezione dei nodi in
trasformazioni XSLT
XPath e’ utilizzato per collegare documenti XML
attraverso XPointer
Usare XPATH: in Jscript
document = new ActiveXObject ("MSXML2.DOMDocument.3.0")
document.setProperty ("SelectionLanguage", "XPath")
document.async = false
document.load("Catalog.xml")
NodoRisultato = document.selectSingleNode(expression)
NodiRisultato = document.selectNodes(expression)
Navigare tra I nodi:
Navigare tra I nodi:
Xpath permette la navigazione tra I nodi:
Attraverso Location Paths:
Attraverso filtri con l’utilizzo di funzioni ed
operatori
Tipi di nodi
Location Path: cosa sono
Un Location Path e’ un’espressione per localizzare
nodi su un documento XML
/book/chapter[3]/para[1]
Percorso Assoluto o Relativo:
Percorso relativo al nodo corrente
product/price
Percorso dalla root “/espressione”
/catalog/product/price
Costruzione Location Path
Passi di locazione
Valutati da sinistra verso destra
/passo1/passo2/passo3…
Ogni passo restituisce un insieme di nodi
da cui partire per filtraggi successivi
Ogni passo di locazione e’ costituito da 3 parti:
Asse::Nodo-test [predicato]
Esempio passo di locazione
child::product [price>35.89][3]
Elementi Location Paths:
ASSI:
NODO TEST:
Insieme di nodi (nodeset) che sono in una certa relazione col nodo
corrente (contesto)
Filtro il nodeset ottenuto in base al nome o al tipo
PREDICATO:
Filtro il nodeset ottenuto in base a espressioni booleane
child::product [price>35]
Tra tutti I figli del nodo corrente seleziono solo quelli che si chiamano
Product, e tra questi solo quelli il cui prezzo e’ superiore a 35
Assi:
Assi: Sintassi abbreviata
E’ possibile utilizzare la sintassi abbreviata per i
Location paths
Usare Nodi Test:
Selezionare i nodi in base al nome:
elemento
attributo
Nome specifico
price
@code
Tutti i nodi
*
@*
Namespace
pre:price
@pre:code
Tutti i nodi nel namespace
pre:*
@pre:*
Usare Nodi Test:
Selezionare i nodi in base al tipo:
Asse::funzioni Nodo-test
Tutti i nodi
Node()
text()
Tutti i nodi di testo
Tutti i nodi commento
Tutti i nodi Istruzioni di elaborazione
comment()
Processing-istruction()
Usare Predicati per filtrare nodi:
Un location Path può definire dei predicati nelle
parentesi quadre:
Asse::nodo-test[predicato]
Filtrare nodeset con i predicati
In base alla posizione
//product[last()]
In base alla presenza
//product[@code]
In base al contenuto
//product[@code=“123”]
Predicati multipli:
//product[@code=“123”][3]
Da sinistra a destra
//product [3][@code=“123]
Operatori XPath:
Confronto
Booleani
Numerici
Esempio:
> < == !=
and or
+ - * div mod
account[(balance mod 100) > 0]
Funzioni Node-Set:
Funzione
Descrizione
position()
Posizione del nodo (iniz 1)
last()
count()
Restituisce true se il nodo e’
l’ultimo nel nodeset
Numero nodi nel nodeset
id(“valore”)
Elemento con Id=valore
local-name()
Il nome locale senza prefisso
name()
Il nome del prefisso
namespace-uri()
L’URI del namespace