Home > Guide pratiche > Xml > Xpath

Novità Web

Valutazione accessibilità di
Paolobarbaglia.com in corso

 

Aggiornamenti Guide

Xpath
Xpath PDF Stampa E-mail
Scritto da Paolo Barbaglia   

Utilizzando Xsl nelle lezioni precedenti, abbiamo avuto la necessità di selezionare all'interno di un documento Xml, alcuni elementi chiave su cui operare. Questo compito viene svolto, all'interno della sintassi Xsl, da alcune espressioni scritte in un particolare linguaggio di selezione denominato Xpath.

Si tratta di un linguaggio potente e flessibile che consente di creare espressioni anche complesse denominate Pattern, attraverso le quali è possibile individuare i vari nodi dell'albero di un documento Xml.

Riprendete il solito esempio di documento Xml già visto nelle scorse lezioni:

Una delle prime modifiche che avevamo compiuto su questo documento era la trasformazione in Html, utilizzando un foglio di stile xsl. Il risultato ottenuto era un documento contenente una lista organizzata di dati.

Per ottenere questo risultato sono stati inseriti nel documento di trasformazione alcuni specifici marcatori:

<xsl:template match="/">
<xsl:for-each select="clienti/cliente">

Questi elementi contengono precise istruzioni di elaborazione, come già detto, ma quello che interessa a noi ora sono gli elementi sottolineati. Si tratta di attributi contenenti le istruzioni di posizionamento e di ricerca all'interno del documento Xml; in particolare match indica che è necessario posizionarsi all'altezza dell'elemento radice (/), mentre select indica che in quel contesto devono essere selezionati esclusivamente gli elementi <cliente> figli dell'elemento <clienti>.

Il pattern per l'attributo match

L'attributo match è tipico di <xsl:template> e viene utilizzato per posizionare l'elaborazione Xsl in un determinato punto del documento Xml; i pattern da utilizzare dovra essere in grado di rilevare esattamente un elemento o una collezione di elementi.

P.S. La gerarchia Xml può essere paragonata al file system di Unix/Linux, dove "/" è appunto la radice della gerarchia.

Per selezionare un elemento possiamo anche servirci di caratteri jolly tipo "*", oppure invece di individuare un elemento in base al nome che ha nel documento Xml, possiamo individuarlo anche in base al valore del suo attributo in questo modo:

<xsl:template match="url[@protocol='mailto']">

Questo pattern consente di identificare tutti gli elementi <url> che hanno un attributo protocol valorizzato a "mailto".

Il pattern per l'attributo select

L'attributo select è tipico di tutti gli elementi Xsl che devono compiere operazioni di estrazione dei dati da particolari elementi Xml, in particolare gli elementi che utilizzano l'attributo select cono: <xsl:apply-template>, <xsl:value-of>, <xsl:for-each>, <xsl:copy-of> e <xsl:sort>.

Vediamo un esempio:

<xsl:value-of select="/clienti/cliente[position()=2]/url/text()">

In questo caso è stato selezionato e estratto il valore dell'elemento <url> del secondo elemento <cliente> che viene incontrato all'interno dell'elemnto radice <clienti>.

Alcune delle espressioni che si possono utilizzare:

  • position(): indica la posizione del nodo corrente
  • test(): indica il contenuto dell'elemento corrente
  • last(): indica la posizione dell'ultimo nodo
  • count(): indica il numero di nodi
  • not(): nega l'argomento
  • contains(): restituisce true se il primo argomento contiene il secondo
  • start-with(): restituisce true se il primo argomento inizia con il secondo
Trackback(0)
Commenti (0)Add Comment

Scrivi commento
smaller | bigger

security code
Scrivi i caratteri mostrati


busy
 
Valid xhtml
Valid css
Valid rss
PB Blog
PB Guide
ItaliaWebstar