Introduzione a XSL
(eXtensible Stylesheet Language)
Introduzione a XSL
Tutte le volte che abbiamo l’esigenza, non solo di colorare o spostare a
schermo i contenuti di un documento XML, ma anche di filtrarli,
riorganizzarli come gerarchia, eseguire dei calcoli, e altro ancora, i CSS
non possono esserci d’aiuto.
I CSS si occupano solo della formattazione del testo contenuto
all’interno dei tag di un documento XML.
Per superare questo limite dei CSS, il W3C ha prodotto un linguaggio di
stile pensato specificatamante per XML: eXtensible Stylesheet Language
(XSL).
CSS e XSL
 I fogli di stile CSS applicano le regole di formattazione
direttamente al contenuto del documento per creare i risultati
desiderati e possono essere utilizzati sia con i documenti HTML
sia con i documenti XML.
 I fogli di stile XSL eseguono invece una trasformazione (in
altri formati, es. PDF, XML, HTML) del contenuto del
documento e possono essere usati solo con documenti XML.
 Un'altra differenza significativa consiste nel fatto che i CSS
contengono solo regole di formattazione, mentre i fogli XSL
contengono anche regole di trasformazione.
XSL (1)
I fogli di stile XSL offrono lo stesso livello di formattazione e di
flessibilità dei fogli di stile CSS, ma utilizzano metodi diversi.
XSL consiste di un insieme di strumenti:
• XSLT (eXtensible Stylesheet Language for Transformation): un
linguaggio per la trasformazione di documenti XML in altri documenti (es:
per trasformare un XML in un HTML o in un XML di un altro DTD)
• Xpath: un linguaggio per riferire o definire parti di un documento XML
(es: il contenuto di un tag <pippo> all’interno di un tag <pluto>)
• XSL FO (Formatting Object): un linguaggio per la formattazione di
documenti XML (simile a CSS)
Nota: XSL FO non è supportato dai browser ed esistono solo pochi strumenti che oggi lo
sfruttano (es: esiste uno strumento che è in grado di trasformare dei file XML in PDF sulla
base della specifica XSL FO). Ci si aspetta che in un breve futuro sia supportato dai
browser direttamente...
XSL (2)
L’idea è quella di partire da un documento sorgente XML e trasformarlo in
un differente documento destinazione XML.
A questo scopo:
 XSLT sono le regole che dicono come i vari pezzi devono essere
trasformati
 Xpath sono le indicazioni che dicono a quali pezzi gli XSLT devono
fare riferimento
Poiché un foglio di stile XSL è a sua volta un documento XML (ben
formato), deve iniziare con la dichiarazione (nel prologo)
<?xml
version="1.0"?>
XSL (3)
Un documento XSL è costituito secondo il seguente schema:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”
version=“1.0”>
<!-- Qui sarà caricato il contenuto del documento XSL -->
</xsl:stylesheet>
Namespace
alias per il Namaspace
versione di XSLT
XSL: esempio
primo.xsl
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform"
version="1.0">
<xsl:template match="/">
applica a tutto il documento
<html>
<head>
<title>Prima trasformazione da XML a HTML</title>
</head>
<body>
<h1>Prova di scrittura documento HTML</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT
Per provare le trasformazioni XSLT sfruttiamo il supporto nativo fornito a XSLT
da Microsoft Internet Explorer 6.0 e da Mozilla. Produrremo quindi
trasformazioni da XML a HTML.
E’ sufficiente inserire nel prologo di documento XML una processing instruction
che colleghi l’XSL all’XML nel modo seguente:
<?xml version="1.0"?>
<?xml-stylesheet type=“text/xsl” href=“primo.xsl” ?>
<documento />
primo.xml
In questo caso al documento (praticamente vuoto tranne che per il tag root di
nome documento) verrà applicata la trasformazione primo.xsl.
Esempio
Applichiamo la trasformazione XSLT descritta nel file primo.xsl al documento
primo.xml e visualizziamo il risultato con un browser:
primo.xml
Elaborazione
XSL (primo.xsl)
Direttive XSL (1)
 XSL usa uno o più template per individuare un elemento o un gruppo di
elementi del documento XML attraverso la seguente sintassi:
<xsl:template match="valore">
che permette di associare il template specificato con un elemento XML
(specificando il valore "/" si associa il template all'intero documento XML).
 Un tag molto usato è <xsl:apply-templates />; ad esempio, con il
modello abbinato alla radice si può scrivere:
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
Il tag <xsl:apply-templates/> indica al parser di continuare a scandire il
documento XSL alla ricerca di altri modelli da applicare ai nodi sottostanti,
ovvero i nodi figli.
Direttive XSL (2)
 All’interno del template che abbiamo associato al nodo root possiamo
leggere e scrivere in uscita il valore di un qualsiasi nodo utilizzando il
comando value-of:
<xsl:value-of select=“....” />
Per esempio la scrittura (inserita nella template che fa il matching del
nodo root):
<xsl:value-of select=“/clienti/cliente/id” />
restuisce il contenuto testuale del tag di nome id, del primo tag cliente del
figlio clienti.
Direttive XSL (3)
Elemento XSL
Descrizione
Direttive XSL (4)
Elemento XSL
Descrizione
Scarica

Corso Integrativo XML 9