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
Scarica

Usare XPATH