gototopgototop
 
Sei in: Home Page Corso XSLT Usare i modelli in XSLT

Cosa sono i modelli in XSLT

Un modello contiene un insieme di istruzioni che vengono eseguite quando lo stesso viene "invocato". Queste istruzioni sono elementi XSLT. Un modello può essere chiamato in maniera esplicita o può essere messo in corrispondenza, in base ad una regola, con un nodo dell´albero XML durante la fase di elaborazione. Inoltre un modello viene chiamato in base ad un nodo che corrisponde nell´albero XML, se contiene l´attributo match. Il valore di questo attributo è una espressione XPath che dichiara a quali nodi nell´albero del documento XML si applica il modello. Quando un nodo viene messo in corrispondenza, viene elaborato man mano che il processore lo incontra (nel sorgente XML). Questo vuol dire che se due nodi dallo stesso modello non si trovano in sequenza, non vengono elaborati in sequenza. Se ci sono altri nodi frapposti, messi in corrispondenza con un altro modello, vendono elaborati uno di seguito all´altro. Per spiegare meglio questo passaggio, vediamo il seguente codice XML e la figura che rappresenta lo stesso albero:

<elemento_radice>

<primo_nodo>1</primo_nodo>
<secondo_nodo>3</secondo_nodo>
<primo_nodo>2</primo_nodo>

</elemento_radice>

Il codice appena scritto potrebbe essere rappresentato dal seguente grafico:

Rappresentazione ad albero di un documento XML

È un documento molto semplice ma ci aiuterà a capire quello che stiamo dicendo. Esso contiene in totale 3 nodi: due con lo stesso nome, <primo_nodo>, ed uno che si chiama <secondo_nodo> e che si trova in mezzo agli altri 2. L´output possiamo vederlo dal file di esempio. Abbiamo avuto esattamente la stessa sequenza del file XML. In questa trasformazione viene messo in corrispondenza il primo modello, poi il secondo e poi ancora il primo. Una cosa importante è che i modelli vengono eseguiti nell´ordine in cui appaiono nel sorgente XML e non nel file del foglio di stile. La funzione dei modelli è quella di formattare i dati in modo che possano essere presentati in maniera più gradevole, rispetto al documento XML, o essere trasformati in un altro formato.

Collegare più documenti XML con un solo foglio di stile

Con XSLT possiamo creare un solo documento di stile che può essere collegato a 2 sorgenti XML, con strutture diverse. I nodi uguali, di nome e struttura, risulteranno uguali per ogni documento di outpout. Cominciamo a vedere il primo file sorgente di esempio XML ed il secondo documento sorgente XML. Vediamo adesso il foglio di stile XSLT che assoceremo al documento XML.
Dopo che il modello ha trovato corrispondenza con la radice del documento sorgente, continua la sua elaborazione affinchè altri modelli ne trovino altre.
Con il codice:

<xsl:template match="impiegati">

viene trovata una corrispondenza con ogni elemento "impiegati"; manda in output il valore al rigo successivo e chiama i modelli per eventuali altri elementi figli. Il modello, al rigo di codice:

<xsl:template match="auto">

che trova corrispondenza con gli elementi "auto", è simile al precedente; stampa a video i valori degli attributi. L´elaborazione continua con il codice:

<xsl:apply-templates />

L´ultimo modello

<xsl:template match="parcheggio">

punta il valore dell´attributo "numero". Il file di esempio XML di questa trasformazione ci mostra il risultato. Da quanto abbiamo visto, viene trasformato tutto, tranne l´elemento "targa" perchè gli elementi del sorgente XML non contengono un attributo "targa". Non abbiamo in output dai modelli nè l´elemento "impiegati", nè "parcheggio". Non essendoci dati corrispondenti, non vengono chiamati. Passiamo adesso a vedere il documento di output del secondo file di esempio: impiegati.xml. Esso ha una struttura diversa rispetto al primo. Le informazioni per le auto sono visualizzate allo stesso modo nei due documenti. Avendo aggiunto le informazioni per gli impiegati ed i loro spazi di parcheggio, i modelli che operano su quegli elementi sono innescati; sono presenti, anche, le informazioni per le targhe.

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