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 Percorso Assoluto o Relativo: Percorso relativo al nodo corrente Percorso dalla root “/espressione” /book/chapter[3]/para[1] product/price /catalog/product/price
Costruzione Location Path Passi di locazione Valutati da sinistra verso destra Ogni passo restituisce un insieme di nodi da cui partire per filtraggi successivi Ogni passo di locazione e’ costituito da 3 parti: Esempio passo di locazione /passo1/passo2/passo3… Asse::Nodo-test [predicato] 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 35 child::product [price>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 Tutti i nodi Namespace Tutti i nodi nel namespace price @code * @* pre:price @pre:code 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() text() comment() Processing-istruction()
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 Asse::nodo-test[predicato] //product[last()] //product[@code] //product[@code=“123”] //product[@code=“123”][3] //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() 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