XSL Transformations
In informatica l'XSLT (eXtensible Stylesheet Language Transformations) è il linguaggio di trasformazione dell'XML, diventato uno standard web con una direttiva (Recommendation) W3C del 16 novembre 1999. L'obiettivo principale per cui l'XSLT è stato creato è rendere possibile la trasformazione di un documento XML in un altro documento. Deriva direttamente dal linguaggio XSL, infatti i file di questo formato sono essenzialmente file di testo, contengono elementi ed attributi ed hanno l'estensione ".xsl".
XSLT linguaggio di programmazione | |
---|---|
Autore | W3C |
Data di origine | 1998 |
Ultima versione | 2.0 |
Paradigmi | dichiarativo |
Estensioni comuni | .xsl, .xml |
Influenzato da | DSSSL |
Implementazione di riferimento | |
Sito web | W3C Transformation |
Descrizione
modificaCi possono essere due casi specifici di trasformazione: da un documento XML a un altro documento XML (adatto a specifiche applicazioni), oppure da un documento XML ad un altro formato (ad esempio HTML, XHTML, WML e RTF, ma anche in qualsiasi altro formato di solo testo). L'XSLT può essere usato per entrambi i casi.
Per generare una trasformazione XSLT occorrono due file: il documento da trasformare (in XML) ed un documento contenente il foglio di stile XSL, che fornisce la semantica per la trasformazione. Il foglio di stile XSLT vede un documento XML come una serie di nodi strutturati ad albero. È formato da un insieme di modelli (template) che contengono le regole di trasformazione dei tag del documento XML. Nella sintassi XSL, i template sono elementi, a ciascuno dei quali corrisponde l'attributo match, associato al nodo che verrà trasformato. In termini strutturali quindi il foglio di stile XSL specifica la trasformazione di un albero di nodi in un altro albero di nodi.
È possibile anche aggiungere al documento trasformato elementi completamente nuovi o non prendere in considerazione determinati elementi del documento origine, riordinare gli elementi, fare elaborazioni in base al risultato di determinate condizioni, ecc.
Dettagli
modificaUn processore XSLT può trattare sette tipi di nodi presenti in un documento XML:
- Elemento radice
- Attributi
- Commenti
- Elementi
- Namespace
- Istruzioni di elaborazione (si riconoscono perché i tag si aprono con un <?)
- Testo
La trasformazione avviene attraverso un apposito programma detto processore XSLT, che riceve in input il documento XML, da cui prende i contenuti (file 1), poi prende dal foglio di stile (file 2) la struttura e le regole di presentazione e produce in output il documento XML trasformato (file 3). Il processore XSLT segue la struttura gerarchica del documento di partenza (1), individua ciascun nodo grazie alle istruzioni contenute nel foglio di stile (2), che esegue ricorsivamente, nodo per nodo. Quando il processore trova una corrispondenza (matching), al contenuto dell'elemento di (1) vengono applicate le regole del template contenuto in (2).
Il primo elemento template contiene le regole di trasformazione dell'Elemento radice del file di input, normalmente indicato con "/".
Alcuni esempi di regole applicate dal processore XSLT:
- Generare una pagina HTML partendo da dati scritti in XML (ad esempio per presentare questi ultimi);
- Ordinare il contenuto dei nodi XML secondo le istruzioni fornite dal foglio di stile XSL;
- Nascondere - oppure mostrare - l'informazione in base al foglio di stile;
- Convertire le tabelle in grafici o in immagini SVG (Scalable Vector Graphics).
Un documento XML può essere associato a più fogli di stile XSL, ciascuno dei quali genererà un output diverso. Lo stesso procedimento vale anche al contrario: uno stesso foglio di stile può essere applicato a più documenti XML, allo scopo di produrre documenti dal contenuto differente ma formato analogo.
Esempi XSLT
modificaEsempio di un documento XML in arrivo
<?xml version="1.0" ?>
<persons>
<person username="JS1">
<name>John</name>
<family-name>Smith</family-name>
</person>
<person username="MI1">
<name>Morka</name>
<family-name>Ismincius</family-name>
</person>
</persons>
Esempio 1 (trasformazione da XML a XML)
modificaIl foglio di stile XSLT stylesheet fornisce template per trasformare il documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/persons">
<root>
<xsl:apply-templates select="person"/>
</root>
</xsl:template>
<xsl:template match="person">
<name username="{@username}">
<xsl:value-of select="name" />
</name>
</xsl:template>
</xsl:stylesheet>
La sua valutazione risulta in un nuovo documento XML, avente una nuova struttura:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name username="JS1">John</name>
<name username="MI1">Morka</name>
</root>
Esempio 2 (trasformazione da XML a XHTML)
modificaElaborando il seguente documento XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/persons">
<html>
<head> <title>Testing XML Example</title> </head>
<body>
= Persons =
<ul>
<xsl:apply-templates select="person">
<xsl:sort select="family-name" />
</xsl:apply-templates>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<li>
<xsl:value-of select="family-name"/><xsl:text>, </xsl:text><xsl:value-of select="name"/>
</li>
</xsl:template>
</xsl:stylesheet>
con in ingresso il documento XML mostra il risultato nel seguente XHTML (l'indentazione è stata modificata per chiarezza):
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>Testing XML Example</title> </head>
<body>
= Persons =
<ul>
<li>Ismincius, Morka</li>
<li>Smith, John</li>
</ul>
</body>
</html>
Questo XHTML genera il seguente output quando viene renderizzato da un web browser:
<?xml-stylesheet href="example2.xsl" type="text/xsl" ?>
Nota: l'esempio text/xsl
è tecnicamente errato secondo le specifiche del W3C, ma è l'unico tipo multimediale che è ampiamente supportato da tutti i principali browser.
Voci correlate
modificaAltri progetti
modifica- Wikimedia Commons contiene immagini o altri file su XSL Transformations
Collegamenti esterni
modifica- Sito ufficiale, su w3.org.
- Sito ufficiale, su w3.org.
- Sito ufficiale, su w3.org.
- (EN) Opere riguardanti XSL Transformations, su Open Library, Internet Archive.
- (EN) Denis Howe, Extensible Stylesheet Language Transformations, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- (EN) Documento del W3C che introduce l'XSLT 1.0 (datato 16 novembre 1999), su w3.org.
- (EN) Documento del W3C sull'XSLT 2.0 (23 gennaio 2007), su w3.org.
- Guida completa a XSLT, su giuseppesicari.it. URL consultato il 3 maggio 2019 (archiviato dall'url originale il 16 maggio 2016).
- Guida di XSLT, su xml.html.it. URL consultato il 18 dicembre 2006 (archiviato dall'url originale il 30 novembre 2006).
- (EN) Guida introduttiva di XSLT, su w3schools.com. URL consultato il 5 maggio 2019 (archiviato dall'url originale il 14 ottobre 2016).
- (EN) Un elenco di tag XSLT corredato di esempi, su zvon.org.
- (EN) XSLT Tutorial, su data2type.de.
- (DE) riferimento di XSLT 2.0, su data2type.de.
- (EN) riferimento di XSLT e XPath, su data2type.de.
- (EN) Saxon, un processore XSLT e XQuery (open source), su saxon.sourceforge.net.
- (EN) EasySaxon, un front end che rende semplice l'uso di Saxon, su github.com.
Controllo di autorità | LCCN (EN) sh2001001708 · GND (DE) 4613222-3 · J9U (EN, HE) 987007530455505171 |
---|