xpath. cos’è xpath: xpath e’ una sintassi per selezionare frammenti di documenti xml xpath non...
TRANSCRIPT
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)
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
Percorso Assoluto o Relativo:Percorso Assoluto o Relativo:
Percorso relativo al nodo correntePercorso relativo al nodo corrente
Percorso dalla root “/espressione”Percorso dalla root “/espressione”
product/priceproduct/price
/catalog/product/price/catalog/product/price
/book/chapter[3]/para[1]/book/chapter[3]/para[1]
Costruzione Location Path
Passi di locazione
Valutati da sinistra verso destra
Ogni passo restituisce un insieme di nodida cui partire per filtraggi successivi
Ogni passo di locazione e’ costituito da 3 parti:
Esempio passo di locazione
/passo1/passo2/passo3…/passo1/passo2/passo3…
Asse::Nodo-test [predicato]Asse::Nodo-test [predicato]Asse::Nodo-test [predicato]Asse::Nodo-test [predicato]
child::product [price>35.89][3]child::product [price>35.89][3]child::product [price>35.89][3]child::product [price>35.89][3]
Elementi Location Paths:
ASSI:
Insieme di nodi (nodeset) che sono in una certa relazione col nodo corrente (contesto)
NODO TEST:
Filtro il nodeset ottenuto in base al nome o al tipo
PREDICATO:
Filtro il nodeset ottenuto in base a espressioni booleane
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 35child::product [price>35]child::product [price>35]child::product [price>35]child::product [price>35]
Assi:
Assi: Sintassi abbreviata
E’ possibile utilizzare la sintassi abbreviata per i Location paths
Usare Nodi Test:
priceprice @code@code
Selezionare i nodi in base al nome:
elemento attributo
Nome specifico
Tutti i nodi
Namespace
Tutti i nodi nel namespace
** @*@*
pre:pricepre:price @pre:code@pre:code
@pre:*@pre:*pre:*pre:*
Usare Nodi Test:
Selezionare i nodi in base al tipo:
Asse::funzioni Nodo-test
Tutti i nodi
Tutti i nodi di testo
Tutti i nodi commento
Tutti i nodi Istruzioni di elaborazione
Node()Node()
text()text()
Processing-istruction()Processing-istruction()
comment()comment()
Usare Predicati per filtrare nodi:
Un location Path può definire dei predicati nelle parentesi quadre:
Filtrare nodeset con i predicati
In base alla posizione
In base alla presenza
In base al contenuto
Predicati multipli:
Da sinistra a destra
//product[last()]//product[last()]
Asse::nodo-test[predicato]Asse::nodo-test[predicato]
//product[@code]//product[@code]
//product[@code=“123”]//product[@code=“123”]
//product[@code=“123”][3]//product[@code=“123”][3]
//product [3][@code=“123]//product [3][@code=“123]
Operatori XPath:
Confronto
Booleani
Numerici
Esempio:
> < == != > < == !=
and or and or
+ - * div mod + - * div mod
account[(balance mod 100) > 0]account[(balance mod 100) > 0]
Funzioni Node-Set:
Funzione Descrizione
position() Posizione del nodo (iniz 1)
last() Restituisce true se il nodo e’ l’ultimo nel nodeset
count() 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