XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non...

18
XPATH

Transcript of XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non...

Page 1: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

XPATH

Page 2: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Cos’è XPATH:

XPath e’ una sintassi per selezionare frammenti di documenti XML

XPath non e’ un linguaggio XML

XPath e’ standardizzato dal W3C

Page 3: 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

Page 4: 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:

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

Page 5: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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)

Page 6: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Navigare tra I nodi:

Page 7: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Navigare tra I nodi:

Xpath permette la navigazione tra I nodi:

Attraverso Location Paths:

Attraverso filtri con l’utilizzo di funzioni ed operatori

Page 8: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Tipi di nodi

Page 9: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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]

Page 10: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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]

Page 11: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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]

Page 12: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Assi:

Page 13: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Assi: Sintassi abbreviata

E’ possibile utilizzare la sintassi abbreviata per i Location paths

Page 14: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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:*

Page 15: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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()

Page 16: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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]

Page 17: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

Operatori XPath:

Confronto

Booleani

Numerici

Esempio:

> < == != > < == !=

and or and or

+ - * div mod + - * div mod

account[(balance mod 100) > 0]account[(balance mod 100) > 0]

Page 18: XPATH. Cos’è XPATH: XPath e’ una sintassi per selezionare frammenti di documenti XML XPath non e’ un linguaggio XML XPath e’ standardizzato dal W3C.

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