XSL Transformations: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
 
(42 versioni intermedie di 29 utenti non mostrate)
Riga 1:
{{Linguaggio di programmazione
[[File:XSLT en.svg|thumb|right|Diagramma]]
|nome = XSLT
In [[informatica]] l''''XSLT''' (e'''X'''tensible '''S'''tylesheet '''L'''anguage '''T'''ransformations) è il linguaggio di trasformazione dell'[[XML]], diventato uno [[standard (informatica)|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 [[Extensible Stylesheet Language|XSL]], infatti i [[file]] di questo formato sono essenzialmente [[file di testo]], contengono elementi ed attributi ed hanno l'[[estensione (file)|estensione]] ".xsl".
|immagine = <!-- Solo nome file -->
|didascalia =
|autore = [[W3C]]
|data = 1998
|versione = 2.0
|utilizzo =
|paradigmi = [[Programmazione dichiarativa|dichiarativo]]
|tipizzazione =
|specifiche =
|estensione = .xsl, .xml
|influenzato_da = [[DSSSL]]
|ha_influenzato =
|sito_web = [https://www.w3.org/standards/xml/transformation W3C Transformation]
}}
 
[[File:XSLT en.svg|thumb|right|Diagramma]]
==Descrizione==
In [[informatica]], lo l''''XSLT''' (e'''X'''tensible '''S'''tylesheet '''L'''anguage '''T'''ransformations) è il [[linguaggio di programmazione|linguaggio]] di trasformazione dell'[[XML]], diventato uno [[standard (informatica)|standard]] web con una direttiva (''Recommendation'') [[W3C]] del [[16 novembre]] [[1999]]. L'obiettivo principale per cui l'lo XSLT è stato creato è rendere possibile la trasformazione di un documento XML in un altro documento. Deriva direttamente dal linguaggio [[Extensible Stylesheet Language|XSL]], infatti i [[file]] di questo formato sono essenzialmente [[file di testo]], contengono elementi ed attributi ede hanno l'[[estensione (file)|estensione]] ".xsl".
 
== Descrizione ==
Ci 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]] - il linguaggio delle pagine [[Wireless ApplicationMarkup ProtocolLanguage|WAPWML]] - e [[Rich text format|RTF]], ma anche in qualsiasi altro formato di solo testo). L'Lo 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]] [[Extensible Stylesheet Language|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 <ttkbd>template</ttkbd> sono elementi, a ciascuno dei quali corrisponde l'attributo <ttkbd>match</ttkbd>, 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.<br />
 
=== Dettagli ===
Un processore XSLT può trattare '''sette tipi di nodi''' presenti in un documento XML:
 
Riga 18 ⟶ 34:
* Elementi
* [[Namespace]]
* Istruzioni di elaborazione (si riconoscono perché ledai tag si aprono condi unapertura <ttkbd><?</ttkbd>)
* 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:<br />
* 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 ==
Esempio di un documento XML in arrivo document<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" ?>
<persons>
Riga 46 ⟶ 62:
</person>
</persons>
</syntaxhighlight>
</source>
 
===Example Esempio 1 (trasformazione da XML a XML) ===
Il foglio di stile XSLT stylesheetforniscestylesheet fornisce template per trasformare il documento XML:<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
Riga 67 ⟶ 83:
 
</xsl:stylesheet>
</syntaxhighlight>
</source>
 
La sua valutazione risulta in un nuovo documento XML, avente una nuova struttura:
 
<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<root>
Riga 77 ⟶ 93:
<name username="MI1">Morka</name>
</root>
</syntaxhighlight>
</source>
 
===Example Esempio 2 (transformingtrasformazione da XML toa XHTML) ===
Elaborando il seguente documento XSLT
Processing the following example XSLT file
 
<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
Riga 94 ⟶ 111:
<head> <title>Testing XML Example</title> </head>
<body>
= Persons =
<h1>Persons</h1>
<ul>
<xsl:apply-templates select="person">
Riga 111 ⟶ 128:
 
</xsl:stylesheet>
</syntaxhighlight>
</source>
con in ingresso il documento XML mostra il risultato nel seguente [[XHTML]] ([[Whitespace]]l'indentazione è statostata correttomodificata per chiarezza):
<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>Testing XML Example</title> </head>
<body>
= Persons =
<h1>Persons</h1>
<ul>
<li>Ismincius, Morka</li>
Riga 125 ⟶ 142:
</body>
</html>
</syntaxhighlight>
</source>
ThisQuesto XHTML generatesgenera theil seguente output belowquando whenviene renderedrenderizzato inda aun [[web browser]].:
[[ImageFile:xslt ex2.png|thumb|center|Rendered XHTML generated from an XML input file and an XSLT transformation.]]
 
<sourcesyntaxhighlight lang="xml">
In order for a [[web browser]] to be able automatically to apply an XSL transformation to an XML document on display, an XML stylesheet processing instruction can be inserted into XML. So, for example, if the stylesheet in Example 2 above were available as "example2.xsl", the following instruction could be added to the original incoming XML:<ref>{{cite web | url = http://www.w3.org/TR/xslt#section-Embedding-Stylesheets | title = XSL Transformations (XSLT) Version 1.0: W3C Recommendation&nbsp;– Embedding Stylesheets | date = 16 November 1999 | publisher = W3C | accessdate = 2009-01-06}}</ref>
 
<source lang="xml">
<?xml-stylesheet href="example2.xsl" type="text/xsl" ?>
</syntaxhighlight>
</source>
 
(InNota: this example,l'esempio <code>text/xsl</code> isè technicallytecnicamente incorrecterrato accordingsecondo tole thespecifiche del W3C specifications, but itma isè thel'unico onlytipo mediamultimediale typeche thatè isampiamente widelysupportato supportedda acrosstutti currenti (2009)principali browsers[[browser]].)
 
== Voci correlate ==
* [[XML]]
* [[Extensible Stylesheet Language]]
* [[XML#Linguaggi aggiuntivi per l'XML|Lista dei meta-linguaggi XML]]
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{en}} [http://www.w3.org/TR/xslt Documento del W3C che introduce l''''XSLT 1.0''' (datato 16 novembre 1999)]
* {{FOLDOC|Extensible Stylesheet Language Transformations|Extensible Stylesheet Language Transformations}}
* {{en}} [http://www.w3.org/TR/xslt20 Documento del W3C sull''''XSLT 2.0''' (23 gennaio 2007)]
* {{en}}cita [httpweb|https://www.w3.org/TR/xslt |Documento del W3C che introduce l{{'}}'''XSLT 1.0''' (datato 16 novembre 1999)]|lingua=en}}
* [http://www.giuseppesicari.it/articoli/linguaggi-xml/xslt/ Guida completa a XSLT]
* {{en}}cita [httpweb|https://www.w3.org/TR/xslt20 |Documento del W3C sull''''XSLT 2.0''' (23 gennaio 2007)]|lingua=en}}
* [http://xml.html.it/guide/leggi/60/guida-xslt/ Guida di XSLT]
* {{cita web | 1 = http://www.giuseppesicari.it/articoli/xslt/ | 2 = Guida completa a XSLT | accesso = 3 maggio 2019 | dataarchivio = 16 maggio 2016 | urlarchivio = https://web.archive.org/web/20160516163026/http://www.giuseppesicari.it/articoli/xslt/ | urlmorto = sì }}
* {{en}} [http://www.w3schools.com/xsl/default.asp Guida introduttiva di XSLT]
* {{cita web | 1 = http://xml.html.it/guide/leggi/60/guida-xslt/ | 2 = Guida di XSLT | accesso = 18 dicembre 2006 | dataarchivio = 30 novembre 2006 | urlarchivio = https://web.archive.org/web/20061130075553/http://xml.html.it/guide/leggi/60/guida-xslt/ | urlmorto = sì }}
* {{en}} [http://www.zvon.org/xxl/XSLTreference/Output/index.html Un elenco di tag XSLT corredato di esempi]
* {{cita web|1=https://www.w3schools.com/xsl/default.asp|2=Guida introduttiva di XSLT|lingua=en|accesso=5 maggio 2019|urlarchivio=https://web.archive.org/web/20161014090016/http://www.w3schools.com/xsl/default.asp|dataarchivio=14 ottobre 2016|urlmorto=sì}}
* {{de}} [http://www.data2type.de/xml-xslt-xslfo/xslt XSLT Tutorial]
* {{de}}cita [web|http://www.data2typezvon.deorg/xml-xslt-xslfoxxl/xsltXSLTreference/xslt-referenzOutput/index.html|Un riferimentoelenco di tag XSLT 2.0]corredato di esempi|lingua=en}}
* {{de}}cita [web|http://www.data2type.de/en/xml-xslt-xslfo/xslt/xsltundxpathreferenz riferimento di xslt-introduction/|XSLT e XPath]Tutorial|lingua=en}}
* {{de}}cita [web|http://www.data2type.de/xml-xslt-xslfo/xslt/xslt-referenz/|riferimento di XSLT Tutorial]2.0|lingua=de}}
* {{en}} [http://saxon.sourceforge.net/ ''Saxon'', un processore XSLT e XQuery (open source)]
* {{cita web|http://www.data2type.de/en/xml-xslt-xslfo/xslt/xslt-xpath-function-reference/|riferimento di XSLT e XPath|lingua=en}}
{{Portale|Web}}
* {{en}}cita [web|http://saxon.sourceforge.net/ |''Saxon'', un processore XSLT e XQuery (open source)]|lingua=en}}
* {{cita web|https://github.com/sblendorio/EasySaxon|''EasySaxon'', un ''front end'' che rende semplice l'uso di ''Saxon''|lingua=en}}
 
{{Controllo di autorità}}
{{Portale|Webinternet}}
 
[[Categoria:Standard W3C]]
[[Categoria:Standard informatici basati su XML]]
[[Categoria:Linguaggi di programmazione dichiarativi]]
[[Categoria:Linguaggi di programmazione funzionali]]