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