Appunti XSL

(la stesura dei seguenti appunti ed esempi è stata eseguita in seguito alla lettura dei contenuti di xml.html.it)

Una delle caratteristiche più importanti del linguaggi XML è quella di occuparsi esclusivamente della descrizione dei dati che si vogliono rappresentare e non la forma finale con cui questi verranno visualizzati (pdf, immagine, pagina web).

l linguaggio XSL (eXtensible Stylesheet Language), basato su XML, si occupa proprio di quest’ultimo aspetto e permette di definire un foglio di stile da applicare ai dati contenuti in un file XML, indicando le regole di rappresentazione (visualizzazione) che quest’ultimi dovranno avere.

XSL è composto da due componenti, XSLT (eXtensible Stylesheet Language Transformation) e XSL-FO (eXtensible Stylesheet Language – Formatting Objects)

In XSL viene utilizzato XPath per localizzare i contenuti del file XML a cui vogliamo applicare lostile desiderato.

XSLT

Un documento XSLT contiene le regole per trasformare un documento XML in un’altro documento XML o in un documento HTML (XHTML, SVG).

La trasformazione viene eseguita da un XSLT Processor a cui viene fornito il file XML da trasformare e il file XSL contenente il foglio di stille (in XSLT) utilizzato per eseguire la trasformazione. Il file XSL contiene dei template che vengono applicati ai tag del file XML in modo ricorsivo dal XSLT Processor.

Come esempio vediamo il seguente semplice file XML che verrà trasformato in una pagina HTML:

<?xml version="1.0"?>
<rubrica>
  <persona>
    <nome>Mario</nome>
    <cognome>Rossi</cognome>
    <indirizzo>
      <via>via bianchi 1</via>
      <cap>00000</cap>
      <citta>Roma</citta>
    </indirizzo>
    <telefono>
      <telefono_fisso>123456</telefono_fisso>
      <telefono_cellulare>987656412</telefono_cellulare>
    </telefono>
  </persona>
</rubrica>

Il file XSL sarà il seguente:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/transform" version="1.0">
  <xsl:template match="/">
    <html>
      <head>
        <title>Rubrica in versione HTML</title>
      </head>
      <body>
        <h1>Rubrica</h1>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>
  <xsl:template match="persona">
    <h2> <xsl:value-of select="cognome"/>&#160;<xsl:value-of select="nome"/> </h2>
    <ul>
      <li>Via: <xsl:value-of select="./indirizzo/via"/></li>
      <li>CAP: <xsl:value-of select="./indirizzo/cap"/></li>
      <li>Citta': <xsl:value-of select="./indirizzo/citta"/></li>
      <li>Telefono (fisso): <xsl:value-of select="./telefono/telefono_fisso"/></li>
      <li>Telefono (cellulare): <xsl:value-of select="./telefono/telefono_cellulare"/></li>
    </ul>
  </xsl:template>
</xsl:stylesheet>

Nel file XSL le regole di trasformazioni sono definite degli elementi template, nei quali con l’attributo match (utilizzando la sintassi XPath) viene indicato a quali tag del file XML deve essere applicata la regola di trasformazione.

Nel nostro esempio abbiamo due template uno che si riferisce all’elemento root del file XML ovvero il tag <rubrica> e l’altro che definisce le regole di trasformazione per gli elementi <persona>.

Il XSLT Processor esegue il parsing del file XML da trasformare e per ricerca nel file XSL se vi è un template corrispondente e lo applica.

Con l’elemento <xsl:apply-templates> si indica al XSLT Processor di eseguire il parsing dei nodi figli del nodo corrente alla ricerca di altri template da applicare.

Il risultato finale sarà il seguente:

<html>
  <head>
    <title>Rubrica in versione HTML</title>
  </head>
  <body>
    <h1>Rubrica</h1>
    <h2>Rossi Mario</h2>
    <ul>
      <li>Via: via bianchi 1</li>
      <li>CAP: 00000</li>
      <li>Citta': Roma</li>
      <li>Telefono (fisso): 123456</li>
      <li>Telefono (cellulare): 987656412</li>
    </ul>
  </body>
</html>

XSL-FO

La seconda componente di XSL è XSL-FO (eXtensible Stylesheet Language – Formatting Objects), anchesso basato su XML, permette di definire le regole di impaginazione delle informazioni che vogliamo visualizzare.

Un XSL-FO Processor a partire da un file XSL-FO permette di generare documenti PDF, RTF o PS.

Un file XSL-FO contiene sia le regole di impaginazione che i dati con cui generare il documento desiderato. Se volessimo utilizzare un file XSL-FO per visualizzare le informazioni contenute in un file XML dovremmo prima applicare a questo una trasformazioni XSLT grazie alla quale verrebbe generato il file XSL-FO contenente le regole di farmattazione e i dati del file XML.

Link utili

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.