Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoDonata Rosso Modificato 10 anni fa
1
XSLT Trasformazioni XSL Ing. Luca Sabatucci
2
XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono trasformare i documenti di dati XML in altri formati e strutture, come i file HyperText Markup Language (HTML). Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono trasformare i documenti di dati XML in altri formati e strutture, come i file HyperText Markup Language (HTML). Lo strumento utilizzato per definire queste trasformazioni è denominato Extensible Stylesheet Language Transformations (XSLT). Lo strumento utilizzato per definire queste trasformazioni è denominato Extensible Stylesheet Language Transformations (XSLT).
3
Foglio di stile Un insieme di regole che permettono di trasformare un documento in un altro documento si chiama foglio di stile Un insieme di regole che permettono di trasformare un documento in un altro documento si chiama foglio di stile Un foglio di stile si definisce mediante lXSL Un foglio di stile si definisce mediante lXSL XSL è una applicazione XML XSL è una applicazione XML
4
Processo di trasformazione La trasformazione avviene tramite un processore chiamato elaboratore XSLT La trasformazione avviene tramite un processore chiamato elaboratore XSLT
5
Applicazioni pratiche Web Web Un documento XML può essere trasformato in una pagina HTML in modo da essere visualizzato tramite browser Web Un documento XML può essere trasformato in una pagina HTML in modo da essere visualizzato tramite browser Web XSL-FO XSL-FO Un documento può essere trasformato in formato FO (Formatting Object) che rappresenta una applicazione di formattazione precisa dei documenti narrativi Un documento può essere trasformato in formato FO (Formatting Object) che rappresenta una applicazione di formattazione precisa dei documenti narrativi
6
Namespace XSL XSL è una applicazione XML XSL è una applicazione XML XSL definisce un proprio DTD e un Namespace XSL definisce un proprio DTD e un Namespace LURL da usare per il namespace è LURL da usare per il namespace è xmlns:xsl="http://www.w3.org/1999/XSL/Transform" Il namespace viene generalmente associato al prefisso xsl Il namespace viene generalmente associato al prefisso xsl
7
xsl:stylesheet Lelemento radice di un documento XSL è xsl:stylesheet Lelemento radice di un documento XSL è xsl:stylesheet Allinterno dellelemento xsl:stylesheet si mettono le regole di trasformazione Allinterno dellelemento xsl:stylesheet si mettono le regole di trasformazione Il più semplice foglio di stile XSL prevede che non vi siano regole di trasformazione Il più semplice foglio di stile XSL prevede che non vi siano regole di trasformazione
8
Catalogo persone Luca Sabatucci 16 2 1976 Palermo Ingegnere Mario Rossi 4 7 1982 …
9
La più semplice trasformazione Se si trasforma il file XML catalogo persone con un foglio di stile vuoto, come quello mostrato di seguito… Se si trasforma il file XML catalogo persone con un foglio di stile vuoto, come quello mostrato di seguito…
10
Output LucaSabatucci1621976PalermoIngegnere MarioRossi471982Milano Si ottiene loutput mostrato di seguito: Si ottiene loutput mostrato di seguito:
11
Foglio di stile vuoto In assenza di regole la trasformazione è la seguente: In assenza di regole la trasformazione è la seguente: Viene prelevato il testo interno agli elementi del documento di input Viene prelevato il testo interno agli elementi del documento di input Viene quindi riprodotto il contenuto ma non il markup. Viene quindi riprodotto il contenuto ma non il markup. In questo caso il risultato non è un documento XML In questo caso il risultato non è un documento XML
12
Modelli e regole Per controllare il modo in cui viene generato loutput in base allinput bisogna aggiungere dei modelli allinterno del foglio di stile Per controllare il modo in cui viene generato loutput in base allinput bisogna aggiungere dei modelli allinterno del foglio di stile Ogni modello è rappresentato da un elemento xsl:template, dotato di un attributo match Ogni modello è rappresentato da un elemento xsl:template, dotato di un attributo match xsl:template definisce una regola di trasformazione xsl:template definisce una regola di trasformazione match identifica il tipo di input che attiva la regola match identifica il tipo di input che attiva la regola esempio: persona Una persona esempio: persona Una persona
13
Esempio Di seguito viene mostrata la regola corrispondente a: Di seguito viene mostrata la regola corrispondente a: persona Una persona persona Una persona Una persona Output: Una personaUna persona
14
Associamo uno stile HTML E possibile fare in modo che loutput sia un documento XML ben formato E possibile fare in modo che loutput sia un documento XML ben formato Una persona
15
Output Output XML Output XML Output HTML (Internet Explorer) Output HTML (Internet Explorer) Una persona Una persona Una persona
16
Valore di un elemento Lelemento xsl:value-of permette di selezionare il contenuto di un elemento di input e inserirlo come output Lelemento xsl:value-of permette di selezionare il contenuto di un elemento di input e inserirlo come output xsl:value-of si può trovare soltanto allinterno di un elemento xsl:template xsl:value-of si può trovare soltanto allinterno di un elemento xsl:template Lattributo select serve a selezionare il valore che deve essere prelevato Lattributo select serve a selezionare il valore che deve essere prelevato
17
Esempio Di seguito viene riportato un esempio di elemento xsl:value-of: Di seguito viene riportato un esempio di elemento xsl:value-of: Una persona:
18
Output Output XML Output XML Output HTML (Internet Explorer) Output HTML (Internet Explorer) Una persona: Luca Una persona: Mario Una persona: Luca Una persona: Mario
19
select Nellesempio mostrato lattributo select di xsl:value-of era impostato come di seguito: Nellesempio mostrato lattributo select di xsl:value-of era impostato come di seguito: select="nome Dove nome è lattributo del quale si vuole estrarre linformazione. Più in generale il valore di select deve essere una espressione XPath XPath sarà argomento delle prossime lezioni.
20
Applicazione forzata di modelli Lutilizzo della regola xsl:apply-templates permette di stabilire quali modelli devono essere applicati e in che ordine Lutilizzo della regola xsl:apply-templates permette di stabilire quali modelli devono essere applicati e in che ordine xsl:apply-templates possiede un attributo select che specifica una regola di tipo xsl:template xsl:apply-templates possiede un attributo select che specifica una regola di tipo xsl:template
21
Esempio Nome: Cognome:
22
select A differenza del primo esempio in cui lattributo select di xsl:value-of era impostato come: A differenza del primo esempio in cui lattributo select di xsl:value-of era impostato come: select="nome In questo esempio si ha: select="text() Dove text() è una espressione XPath che sta ad indicare che dellelemento corrente (nellesempio si trattava del nome o del cognome) deve essere prelevato il testo in esso contenuto.
23
Output Output XML Output XML Cognome: Sabatucci Nome: Luca Cognome: Rossi Nome: Mario
24
Output Output HTML (Internet Explorer) Output HTML (Internet Explorer) Cognome: Sabatucci Nome: Luca Cognome: Rossi Nome: Mario
25
Intestazione HTML Catalogo persone
26
Output XML Catalogo persone Cognome: Sabatucci Nome: Luca Cognome: Rossi Nome: Mario
27
Creazione di attributi
28
Modelli XSLT di default </xsl:template> Identifica il nodo radice del doc e tutti i nodi degli elementi. Applica i modelli ai loro nodi child Identifica i nodi di testo e i nodi degli attributi (@) e genera loutput dei loro valori Identifica i nodi di istruzione di elaborazione e i nodi dei commenti ma non svolge alcuna azione su di essi
29
Sorgente XML <sports> <id>243</id><para> More popular among commonwealth nations. More popular among commonwealth nations. </game> <id>431</id><para> More popular in America. More popular in America. </game> <id>123</id><para> Most popular sport in the world. Most popular sport in the world.</para></game></sports>
30
La trasformazione XSL <xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
31
Il risultato della trasformazione <sports> <comment> More popular among commonwealth nations. More popular among commonwealth nations. </cricket> <comment> More popular in America. More popular in America. </baseball> <comment> Most popular sport in the world. Most popular sport in the world. </soccer></sports>
32
Iterazioni e ordinamento
33
E possibile elaborare in modo iterativo I nodi selezionati con unespressione XPath. E possibile elaborare in modo iterativo I nodi selezionati con unespressione XPath. Sui nodi si può anche operare un ordinamento Sui nodi si può anche operare un ordinamento
34
File dati XML Deitel's XML Primer Deitel's XML Primer <author><firstName>Paul</firstName><lastName>Deitel</lastName></author><chapters> Welcome Welcome Easy XML Easy XML XML Elements? XML Elements? Entities Entities </chapters> </book>
35
La trasformazione XSLT - 1 <xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> ISBN - ISBN - Continua
36
La trasformazione XSLT - 2 by, by, Preface Preface ( ( pages ) pages )
37
La trasformazione XSLT - 3 Chapter Chapter ( ( pages ) pages )
38
La trasformazione XSLT - 4 Appendix Appendix ( ( pages ) pages ) </xsl:stylesheet>
39
Il risultato della trasformazione
40
<html><head> ISBN 999-99999-9-X - Deitel's XML Primer ISBN 999-99999-9-X - Deitel's XML Primer </head> Deitel's XML Primer Deitel's XML Primer by Deitel, Paul by Deitel, Paul <tr> Preface 1 Preface 1 Welcome (2 pages ) Welcome (2 pages ) </tr><tr> Chapter 1 Chapter 1 Easy XML (4 pages ) Easy XML (4 pages ) </tr>
41
Il risultato della trasformazione <tr> Chapter 2 Chapter 2 XML Elements? (2 pages ) XML Elements? (2 pages ) </tr><tr> Appendix 1 Appendix 1 Entities (9 pages ) Entities (9 pages ) </tr></table></body></html>
42
Istruzioni Condizionali
43
Il file dati XML <planner> Doctor's appointment Doctor's appointment Physics class at BH291C Physics class at BH291C </date> Independence Day Independence Day </date> General Meeting in room 32-A General Meeting in room 32-A </date>
44
Il file dati XML Party at Joe's Party at Joe's </date> Financial Meeting in room 14-C Financial Meeting in room 14-C </date></year></planner>
45
La trasformazione XSL <xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> Appointments Appointments
46
Year: Year: <xsl:sort select = "../@day" order = "ascending" <xsl:sort select = "../@day" order = "ascending" data-type = "number"/> data-type = "number"/> Day: Day: / /
47
<xsl:when test = "@time > '0500' and @time < '1200'"> Morning ( ): <xsl:when test = "@time > '1200' and @time < '1700'"> Afternoon ( ): <xsl:when test = "@time > '1200' and @time < '1700'"> Evening ( ): <xsl:when test = "@time > '1200' and @time < '1700'"> Night ( ): Entire day: Lelemento choose si usa per scegliere tra varie opzioni (tipo switch del Java)
48
n/a n/a </xsl:stylesheet> Lelemento choose si usa per specificare una sola condizione
49
Il risultato
50
<html><body> Appointments Appointments <strong>Year:</strong>2000<br> Day: 4/7 Day: 4/7 Entire day: Independence Day Entire day: Independence Day Day: 15/7 Day: 15/7 Afternoon (1430):Doctor's appointment Afternoon (1430):Doctor's appointment Day: 15/7 Day: 15/7 Afternoon (1620):Physics class at BH291C Afternoon (1620):Physics class at BH291C
51
Il risultato Day: 20/7 Day: 20/7 Morning (0900):General Meeting in room 32-A Morning (0900):General Meeting in room 32-A Day: 20/7 Day: 20/7 Entire day:Party at Joe's Entire day:Party at Joe's Day: 20/7 Day: 20/7 Afternoon (1300):Financial Meeting in room 14-C Afternoon (1300):Financial Meeting in room 14-C </body></html>
52
Copiare i nodi
53
XSLT permette di copiare i nodi dal file dati XML di origine in quello creato con la trasformazione XSLT permette di copiare i nodi dal file dati XML di origine in quello creato con la trasformazione Ciò si fa con lelemento copy che copia il nodo di contesto Ciò si fa con lelemento copy che copia il nodo di contesto
54
Il file dati XML <myMessage> Welcome to XSLT! Welcome to XSLT! </myMessage>
55
XSLT <xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> How about 'Hi World' for a change! How about 'Hi World' for a change! </xsl:stylesheet>
56
Il risultato <myMessage><message> How about 'Hi World' for a change! How about 'Hi World' for a change!</message></myMessage>
57
Esercizi
58
Esercizio 1 Scrivere un XSLT che trasformi il documento della figura 12.28 in quello della figura 12.29 seguenti Scrivere un XSLT che trasformi il documento della figura 12.28 in quello della figura 12.29 seguenti
61
Esercizio 2 Fare il viceversa (trasformare il doc di fig. 12.29 in quello di fig. 12.28) Fare il viceversa (trasformare il doc di fig. 12.29 in quello di fig. 12.28)
62
Esercizio 3 Trasformare in HTML i due documenti precedenti Trasformare in HTML i due documenti precedenti
63
Esercizio 4 Trasformare il file planner XML nella struttura mostrata in figura 12.30 Trasformare il file planner XML nella struttura mostrata in figura 12.30
64
Il file dati PLANNER.XML <planner> Doctor's appointment Doctor's appointment Physics class at BH291C Physics class at BH291C </date> Independence Day Independence Day </date> General Meeting in room 32-A General Meeting in room 32-A </date>
65
Il file dati PLANNER.XML Party at Joe's Party at Joe's </date> Financial Meeting in room 14-C Financial Meeting in room 14-C </date></year></planner>
66
Figura 12.30
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.