gototopgototop
 
Sei in: Home Page Corso XSLT XPath

XPath

Si deve esprimere quale nodo, o quali nodi, devono corrispondere. Ecco che entra in gioco XPath. XPath è il linguaggio che serve a specificare il nodo sul quale vogliamo operare.

Selezionare gli elementi

Chi naviga spesso, per lavoro o per hobby, sul Web, le espressioni basilari di XPath non gli saranno molto ostiche da acquisire. Un sito web è una gerarchia di files così come un documento XML è una gerarchia di elementi. Visitando un sito web a cominciare dalla Home, si specifica nel browser la radice (il nome stesso del sito). Per esempio: http://www.miosito.com punta alla radice, o alla Home Page, del sito. Una scrittura più precisa è: http://www.miosito.com/. Qualsiasi nome di file interno, scritto dopo lo / finale, indica dove ci vogliamo portare nella struttura del sito. Immaginiamo di avere un sito che tratti di cucina. Se scrivessi: http://www.miosito.com/menu/aperitivi, stiamo "puntando" al file indice nella directory "aperitivi", figlio della directory "menu", a sua volta figlio della directory radice.
Il percorso /menu/aperitivi è molto importante: dichiara in maniera univoca una posizione all´interno di un sito web. A tal proposito osserviamo la figura di seguito:

Gerarchia di un sito web

Il percorso /menu/aperitivi individua in maniera univoca il nodo aperitivi nell´albero. Se volessimo selezionare il nodo dolci, dovremo scrivere: /menu/dolci.

Osserviamo il documento XML di esempio che illustra, alla stessa maniera del grafico, l´albero visto fino ad ora. Il listato ha la stessa ed identica struttura ad albero dell´immagine. Da qui si capisce che "puntare" ad un nodo, in un documento XML con XPath, risulta molto semplice. Associamo a questo documento, un foglio di stile XSLT e selezioniamo il nodo (con tutti i valori dei nodi figli) dell´elemento "primi piatti". Il codice sarà:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h1>I primi piatti di oggi:</h1>
<xsl:value-of select="/menu/primipiatti" />
</xsl:template>
</xsl:stylesheet >

Il file di output di esempio illustra cosa è avvenuto in questa trasformazione. Vediamo cosa è successo. Il codice mostra a video il valore di tutti i nodi figlio di primipiatti. XSLT si comporta in maniera corretta in quanto con il seguente codice:

<xsl:value-of select="/menu/primipiatti" />

punta il valore del nodo primipiatti. Esso contiene tutti i nodi discendenti. Apparentemente potrebbe sembrare un pò strano perchè il codice XSLT sembra chiedere tutti gli elementi figli del nodo primipiatti. Se questo nodo ha al suo interno valore di testo, abbiamo visto che questi, nel file XML, non vengono visualizzati. Se vogliamo vedere anche gli elementi piatto, dobbiamo aggiungere del codice al foglio di stile precedente.

<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="/menu/aperitivi" />

<xsl:template match="/menu/primipiatti">
<h1>I primi piatti di oggi:</h1>
<xsl:apply-templates />
</xsl:template>

<xsl:template match="/menu/dolci" />

<xsl:template match="piatto">
<xsl:value-of select="text()" /><br />
</xsl:template>

</xsl:stylesheet >

Il file di output ci mostra questo codice in azione.I nodi aperitivi e dolci non vengono presi in considerazione. Rispetto al file precedente ogni nodo piatto viene trattato separatamente su ogni rigo. Questo è possibile grazie al <br /> posto alla fine del codice:

<xsl:value-of select="text()" /><br />

© www.extrowebsite.com - Grafica, layout, articoli e guide sono di esclusiva proprietà del webmaster - Tutti i diritti riservati