L'Extensible Stylesheet Language (XSL) proponeva inizialmente l'utilizzo di fogli di stile per xml ed era esso stesso un'applicazione xml. Lo scopo originario di questi fogli di stile era di specificare le trasformazioni dei documenti xml in modo che potessero venire stampati o visualizzati dai browser Web. In seguito XSL e' stato suddiviso in due linguaggi standard:
Spesso un documento XML viene trasformato in un documento HTML. XSLT utilizza fogli di stile per specificare le trasformazioni, le quali possono includere informazioni di presentazione HTML e CSS. In questa lezione si descrive esclusivamente la forma e l'utlizzo di XSLT, spesso chiamato semplicemente XSL.
I fogli di stile XSLT utilizzano un approccio molto diverso da quello dei CSS, in quanto i primi contengono uno o piu' modelli per descrivere la struttura desiderata del documento nella quale possono venire inseriti i dati di un documento XML. Ogni parte di ciascun modello deve identificare la parte dei dati XML con cui e' associata.
Il processore XSLT unisce il documento XML al documento di foglio di stile XSLT modo simile alla funzione stampa unione (in cui un file contenente nomi e indirizzi viene unito ad un file di una lettera).
Il modello XSLT di fusione dei dati XML in modelli XSLT viene chiamato modello basato sul modlelo. Questo modello utilizza dati consistenti in molteplici istanze di insiemi di dati altamente regolari. XSLT puo' occuparsi anche di dati irregolari e ricorrenti garzie a frammenti di modelli nel modello su base di dati. Un unico foglio di stile XSLT puo' includere il meccanismo per entrambi i modelli. Tuttavia in questa lezione verra' decsritto solo il modello su base di dati.
Nonostante i fogli di stile XSLT possano venire utilizzati per controllare il layout di pagina, l'orientamento, la direzione di scrittura, i margini e la numerazione di pagina, questa lezione decsrive solo le specifiche di formattazione piu' semplici per le unita' di informazione piu' piccole. XSLT include piu' di 50 tipi di oggetti di formattazione (elementi) e piu' di 230 proprieta', per cui e' un set di tag complesso e consistente (rimandiamo alla lettura del capitolo 12 del libro "XML corso di programmazione" di Deitel, Deitel, Nieto, Lin, Sadhu, ed. Apogeo).
La seguente figura illustra l'architettura generale che consente la trasformazione di un documento XML in un documento di layout HTML
Un documento XML da unire a un foglio di stile XSLT deve includere un'istruzione di elaborazione per indicare al processore XSLT di utilizzare un foglio di stile XSL. La forma di questa istruzione e' la seguente:
Il seguente e' un semplice esempio di documento XML da formattare con XSLT
Si noti come questo documento XML specifichi il proprio foglio di stile XSLT con il nome xslplane.xsl
Un foglio di stile XSLT consiste in un documento XML dotato di un elemento stylesheet a cui e' attribuita una funzione speciale: definisce i namespace come propri attributi ed include l'insieme di elementi a cui verra' applicato . Questo tag identifica anche il documento come XSLT. Il namespace per tutti gli elementi XSLT viene specificato con l'URL del W3C, mostrato come attributo nel seguente tag stylesheet:
Sfortunatamente il browser Internet Explorer 5 e' basato su una bozza precedente al namespace per XSL, per cui quest'ultimo non funziona con i browser IE5. L'indirizzo del piano di lavoro e' http://www.w3c.org/TR/WD-xsl e viene utilizzato negli esempi di questa lezione.
Si noti come il prefisso per gli elementi XSLT sia xsl. Un elemento stylesheet deve includere almeno un elemento template>, che viene utilizzato dal processore XSLT per visualizzare un ramo particolare nella gerarchia di elementi di un documento XML.
Per specificare un ramo della gerarchia (albero!) degli elementi del documento xml si ricorre all'attributo match dell'elemento template>. Nel caso piu' semplice il modello corrisponde all'intero documento XML. In questo caso uno stylesheet XSLT specifica il formato dell'intero documento XML senza inpiegare il foglio di stile in modo ripetuto, per cui si potrebbe utilizzare il seguente tag template>:
Il valore match="/"specifica l'intera struttura dei dati XML rappresentata dalla radice del documento. Viene utilizzata una notazione simile a quella che specifica gli indirizzi delle directory (Unix). Ogni foglio di stile XSLT deve includere un modello per la radice "/". Un foglio di stile potrebbe avere modelli per rami specifici della gerarchia di elementi, come in questo caso:
I fogli di stile XSLT includono due tipi di elementi distinti:
Al primo tipo appartengono gli elementi XSLT che rappresentano elementi HTML: vengono utilizzati spesso per specificare il contenuto e hanno appunto l'aspetto di tali elementi HTML associati. Per esempio, si consideri il seguente elemento HTML:
Tutti gli elementi XSLT che rappresentano elementi HTML vengono copiati dal processore XSLT nell'output HTML mentre questo viene generato. Si noti come tutti gli elementi HTML che appaiono in un documento XSLT debbano adeguarsi alle restrizioni sintattiche in vigore per gli elementi XML (ed XHTML).
Al secondo tipo appartengono gli elementi XSLT utilizzati per unire i dati XML. L'elemento value-of e' uno di questi elementi, ed e' tra i piu' semplici. Tale elemento dispone dell'attributo select che specifica una parte dei dati XML da unire nel documento XSLT. Per esempio, si consideri:
Questo elemento specifica che i dati devono venire uniti in quel punto nel documento XSLT dall'elemento year incorporato nell'elemento plane del documento HTML. Si noti come l'elemento value-of non possa disporre di un contenuto, per cui si comporta come un elemento vuoto.
L'attributo select puo' specificare qualsiasi ramo dell'albero del documento XML. Questa possibilita' rappresenta un vantaggio della formattazione XSLT rispetto ai CSS, nel quale l'ordine dei dati memorizzati e' l'unico ordine di visualizzazione possibile.
Di seguito viene presentato il foglio di stile XLST completo per il documento xslplane.xml (versione TXT) visto precedentemente:
Se il browser in uso contiene un processore XSLT per i file XML (le versioni di Internet Explorer successive alla versione 5 contengono il processore XSLT) allora ecco come verra' visualizzato il documento xslplane.xml a cui e' stato associato il foglio di stile XSLT appena visto (xslplane.xsl):
In atre parole, il processore genera un file HTML di layout che potra' successivamente essere salvato con estensione HTML . In alternativa si puo' usare il processore XSLT incorporato nell'edior XLMSpy dell'Altova a cui si e' fatto cenno nella lezione 4.4.2. Bastera' infatti aprire nell'editor XMLSpy file xslplane.xml, successivamente bastera' cliccare sul bottone "XSL Transformation" nel menu' in alto con l'icona XSL (attraversato da una freccia con la punta rivolat in basso), verra' cosi' generato un file XSL Output.html, come nella figura sotto: