Applicare un foglio di stile XSL ad un file XML

Come già detto nei capitoli precedenti, più potenti dei fogli di stile Css sono i fogli di stile Xsl (eXensible Stylesheet Language), tra le varie migliorie che possono apportare ad un documento Xml, gli Xsl consentono di creare dinamizzazioni, per certi versi avvicinandosi in maniera sorprendente ad un linguaggio di scripting.

Gli Xsl, che rimangono comunque proprietari dell'Xml e non adattabili ad altri tipi di documenti, sono dunque un'applicazione del linguaggio e la sua struttura e sintassi sono identiche all'Xml, in merito alla formattazione di un documento, rimangono comunque fedeli ai Css offrendo le medesime possibilità di stilizzazione, ma il loro impiego primario è comunque differente.

Per creare un file Xsl effettuiamo gli stessi passaggi per creare un foglio di stile Css o un documento Xml o Html, ovvero rinominiamo un file di testo con estensione .xsl e salvandolo come tutti i file, per richiamarlo all'interno di un documento Xml utilizziamo la stessa dichiarazione analizzata nella lezione precedente per i Css:

<?xml-stylesheet type="text/xsl" href="xmlstyle.xsl"?>

Prendiamo ad esempio un semplice file Xml:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="xmlstyle.xsl"?>

<amici>
   <amico>
      <nome>Luca</nome>
      <cognome>Ruggiero</cognome>
   </amico>
</amici>

e proviamo ad applicare questo foglio di stile Xsl:

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
   <xsl:template match="/">
      <div style="font: Bold 15px Verdana;">Lista amici</div><br/>
         <span style="font: Italic 12px Verdana;">Amico:
            <xsl:value-of select="amici/amico"/>
         </span><br/>
   </xsl:template>
</xsl:stylesheet>

Utilizziamo la stessa dichiarazione iniziale che caratterizza i documenti Xml, dichiariamo poi l'Xml Namespace (che verrà trattato nella lezione successiva), dichiariamo il modello che andremo a seguire, ovvero

<xsl:template match="/">

che caratterizza la divisione degli elementi Xml dai suoi nodi grazie al simbolo slash (/).

Poi possiamo iniziare a scrivere anche in Html, formattando il testo con i fogli di stile Css incorporati, per richiamare poi i valori dei tag Xml utilizziamo l'espressione

<xsl:value-of select="amici/amico"/>

dove richiamiamo materiamlente il percorso root / elemento, tutte le espressioni sono seguite da relativa chiusura, oppure, se si tratta di un Tag vuoto, utilizzeremo l'espressione />, come nel caso di <br/>.

In questo modo, se il file Xml fosse composto da più record, il browser si limiterebbe a leggere il primo elemento trovato, se ne fosse presente più di uno, come del resto è logico che sia, è possibile ciclare i record con l'espressione

<xsl:for-each select="amici/amico"/>

Altro modello utile per visualizzare i record di un file Xml è apply-template, con l'espressione

<xsl:apply-template select="amici/amico"/>

In questo modo è possibile anche ordinare i record a seconda delle esigenze grazie a order-by, utilizzando i simboli + e -, a seconda che si vuole che l'ordine sia crescente o decrescente, un esempio è il seguente:

<xsl:for-each select="amici/amico" order-by="+cognome"/>

in questo modo i dati saranno ordinati in ordine crescente di cognome.

Autore: Luca Ruggiero