I documenti XML e XSLT
Abbiamo parlato di documenti XML e XSLT ma ancora non ne abbiamo visto uno! Andiamo a vedere come si presenta un documento XML e come si presenta un documento XSLT in modo da poter spiegare come effettuare le trasformazioni.
Esempio 1
Documento XML (listacd.xml
)
<?xml version="1.0" encoding="UTF-8"?> <!-- Prologo XML -->
<?xml-stylesheet
type="text/xsl" href="listacd_es1.xslt"?> <!-- Istruzione che indica il documento XSLT da associare -->
<listacd> <!-- Nodo Principale o Elemento Radice -->
<artista>
<nome>Stanley Jordan</nome>
<albums>
<album>
<titolo>Magic Touch</titolo>
<anno>1985</anno>
<etichetta>Blue Note</etichetta>
</album>
<album>
<titolo>Stolen Moments</titolo>
<anno>1991</anno>
<etichetta>Blue Note</etichetta>
</album>
</albums>
</artista>
<artista>
<nome>Nick Drake</nome>
<albums>
<album>
<titolo>Pink Moon</titolo>
<anno>1972</anno>
<etichetta>Island</etichetta>
</album>
<album>
<titolo>Bryter Layter</titolo>
<anno>1970</anno>
<etichetta>Island</etichetta>
</album>
<album>
<titolo>Five leaves left</titolo>
<anno>1970</anno>
<etichetta>Island</etichetta>
</album>
</albums>
</artista>
<artista>
<nome>Jeff Buckley</nome>
<albums>
<album>
<titolo>Grace</titolo>
<anno>1994</anno>
<etichetta>Columbia</etichetta>
</album>
<album>
<titolo>Mistery white boy</titolo>
<anno>2000</anno>
<etichetta>Columbia</etichetta>
</album>
</albums>
</artista>
<artista>
<nome>Joe Satriani</nome>
<albums>
<album>
<titolo>Surfing with the alien</titolo>
<anno>1987</anno>
<etichetta>Epic</etichetta>
</album>
<album>
<titolo>Not of this earth</titolo>
<anno>1988</anno>
<etichetta>Relativity</etichetta>
</album>
</albums>
</artista>
</listacd>
Documento XSLT (listacd_es1.xslt
)
<?xml version="1.0" encoding="UTF-8"?> <!-- Prologo XML -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><!-- Dichiarazione del documento XSLT -->
</xsl:stylesheet>
Come si presenta l'XSLT
Osserviamo ora i due documenti prima di vedere il risultato che avremo in output dalla trasformazione.
La prima cosa che possiamo osservare è che entrambi i due documenti sono
documenti XML ben formati. Proprio così: un documento XSLT è a tutti gli effetti un documento XML ben formato e ha quindi tutte le caratteristiche dei documenti XML ben formati:
1. Prologo XML
Il prologo è la prima istruzione che appare scritta nel documento:
<?xml version="1.0" encoding="UTF-8"?>
Indica al processore che il documento è un documento XML, che la sua versione è la 1.0 e che il tipo di codifica utilizzato per i caratteri e UTF-8.
2. Elemento radice
Un unico elemento radice, ovvero il nodo principale, che contiene tutti gli altri nodi del documento. Nel caso dell'XSLT l'elemento radice è obbligatoriamente di questo tipo:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Corpo del documento XSLT -->
</xsl:stylesheet>
3. Tag chiusi
Nel documento tutti i TAG devono essere chiusi, altrimenti sarà generato un errore di parsing. Quindi anche quando utilizzeremo codice HTML all'interno del documento XSLT, tutti i TAG dovranno essere chiusi.
Ad esempio: il tag <html>
sarà chiuso con </html>
, anche il tag <br>
dovrà essere chiuso con </br>
o in questo caso più semplicemente possiamo scrivere <br/>
. Avremo comunque modo fare pratica strada facendo.
Risultato in Output della prima trasformazione
Abbiamo notato che nel documento XML subito dopo il prologo c'è l'istruzione:
<?xml-stylesheet type="text/xsl" href="listacd_es1.xslt"?>
Questa istruzione indica al processore il documento XSLT che deve essere utilizzato per la trasformazione. A questo punto se apriamo il documento XML sul browser possiamo finalmente vedere l'output della nostra prima trasformazione:
- Clicca qui per vedere il risultato della trasformazione sul browser.
- Clicca qui per vedere l'XML (senza l'istruzione di assegnazione dell'XSL) sul browser.
- Clicca qui per vedere l'XSLT sul browser.
Risultato in Output della trasformazione (esempio 1).
<?xml version="1.0" encoding="UTF-8"?>Stanley JordanMagic Touch1985Blue NoteStolen Moments1991Blue NoteNick DrakePink Moon1972IslandBryter Layter1970IslandFive leaves left1970IslandJeff BuckleyGrace1994ColumbiaMistery white boy2000ColumbiaJoe SatrianiSurfing with the alien1987EpicNot of this earth1988Relativity
Che cos'è successo? Se osserviamo il documento XSLT fornito nell'esempio 1 ci accorgiamo che è vuoto: all'interno del suo elemento radice non c'è nulla. Quando il documento XSLT non definisce nessuna regola, in output vengono inviati i dati contenuti negli elementi del documento XML con a capo un prologo XML.
Nota: I dati in output in questi casi potrebbero apparire in modo diverso a seconda del processore utilizzato che potrebbe includere gli spazi bianchi contenuti nel documento XML.
La prima trasformazione potrebbe sembrare molto semplice ma è solo un esempio che serve a chi si avvicina per la prima volta alla programmazione XSLT.