XSLT - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

XSLT

Description:

XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re_at_unicam.it Anno Accademico 2006-07 Introduzione XML un metalinguaggio In quanto ... – PowerPoint PPT presentation

Number of Views:247
Avg rating:3.0/5.0
Slides: 25
Provided by: Barba60
Category:
Tags: interno | xslt | cliente

less

Transcript and Presenter's Notes

Title: XSLT


1
XSLT
UNIVERSITA DI CAMERINO Corso di laurea in
Informatica Barbara Re barbara.re_at_unicam.it
Anno Accademico 2006-07
2
Introduzione
  • XML è un metalinguaggio
  • In quanto permette tramite la sua sintassi di
    descrivere altri linguaggi
  • XSLT (eXtensible Stylesheet Language for
    Transformation) è un esempio di linguaggio
    scritto con sintassi XML cioè una grammatica XML
  • Un documento
  • XML è innanzitutto XML
  • Ben formattato
  • Contiene al suo interno elementi ed attributi che
    fanno riferimento alla grammatica XSLT
  • Tale grammatica rappresenta una raccomandazione
    W3C
  • Namespace http//www.w3.org/1999/XSL/Transform

3
Lapproccio
  • Lapproccio generico di un documento XSLT alla
    trasformazione di contenuti XML può essere
    schematizzato con una frase
  • Cerca Trova Trasforma
  • Lapproccio a XSLT dovrà essere orientato allo
    studio di una grammatica che ci permetta di
    cercare allinterno dellalbero di un documento
    XML dei contenuti e, una volta trovati, qualora
    esistano, li trasformi in qualcosa di diverso

Albero Originale
Albero Risultante
Trasformazione XSLT
4
Il modello di XSLT
input
output
processore XSLT
5
Documento XSLT
ltxslstylesheet version"1.0" xmlnsxslhttp//w
ww.w3.org/1999/XSL/Transformgt lt! Qui sarà
carocato il cotenuto del documento
XSLT--gt lt/xslstylesheetgt
  • Stylesheet ? è il tag root
  • In ogni caso occorre che lintero doocumento
    faccia riferimento al Namespace corretto,
    partendo dal tag root e scegliendo un alias per
    il Namespace, di solito xsl
  • Un documento XSLT quindi contiene allinterno del
    tag root indicato, una serie di altri nodi
    elemento che corrispondono a istruzioni del
    linguaggio

6
Dichiarazione
  • Per provare istruzioni XSLT sarà sufficiente
    inserire in testa a un documento xml una seconda
    processing-instruction dopo il prologo che
    colleghi lXSLT allXML

lt?xml version"1.0" ?gt lt?xml-stylesheet
typetext/xsl hrefprima.xsl gt ltdocumento/gt
7
Definizione di Template
  • La prima istruzione per eccellenza di un
    documento XSLT è quella che ci permette di
    definire dei template
  • Cioè dei modelli di trasformazione

lt?xml version"1.0" ?gt ltxslstylesheet
version"1.0" xmlnsxslhttp//www.w3.org/1999/
XSL/Transformgt ltxsltemplate match/gt lt!
Istruzioni che lavorano sui contenuti
trovati--gt lt/xsltemplategt lt/xslstylesheetgt
8
Comando template
  • Il comando template lavora con un attributo di
    nome match
  • Match permette di definire a quali nodi si debba
    applicare il template stesso
  • Lattibuto match rappresenta una regola XPath
    quindi la condizione match/ indica che
    vogliamo definire un template per il nodo root
    del documento

9
Esempio HTML in output
lt?xml version"1.0" ?gt ltxslstylesheet
version"1.0" xmlnsxslhttp//www.w3.org/199
9/XSL/Transformgt ltxsltemplate
match/gt lthtmlgt ltheadgt lttitlegt prima
trasformazione da XML a HTML lt/titlegt
lt/headgt lt/htmlgt ltbodygt lth1gt Prova di
scrittura del documento HTML lt/h1gt lt/bodygt lt/xsl
templategt lt/xslstylesheetgt
10
XML di riferimento
  • lt?xml version"1.0"?gt
  • lt?xml-stylesheet type"text/xsl"
    href"trasformazione.xsl"?gt
  • ltclientigt
  • ltcliente id"C1001"gt
  • ltragioneSocialegt Cliente1 lt/ragioneSocialegt
  • ltindirizzogt Via Roma, 1 lt/indirizzogt
  • ltfatturato anno"2000"gt 2000 lt/fatturatogt
  • ltfatturato anno"2001"gt 3000 lt/fatturatogt
  • lt/clientegt
  • ltcliente id"C1002"gt
  • ltragioneSocialegt Cliente2 lt/ragioneSocialegt
  • ltindirizzogt Via Roma, 2 lt/indirizzogt
  • ltfatturato anno"2000"gt4000 lt/fatturatogt
  • ltfatturato anno"2001"gt5000 lt/fatturatogt
  • lt/clientegt
  • ltcliente id"C1003"gt
  • ltragioneSocialegt Cliente3 lt/ragioneSocialegt
  • ltindirizzogt Via Roma, 3 lt/indirizzogt
  • ltfatturato anno"2000"gt6000 lt/fatturatogt

11
Lettura e copia dei valori
  • Comandi per la lettura e copia dei documenti in
    ingresso
  • Per leggere in uscita il valore di un qualsiasi
    nodo con il comando value-of-select
  • ltxslvalue-of select"Path o XSLT function"gt

lt?xml version"1.0" ?gt ltxslstylesheet
version"1.0" xmlnsxsl"http//www.w3.org/1999/X
SL/Transform"gt ltxsltemplate match"/"gt ltxslvalu
e-of select"/clienti/cliente" /gt lt/xsltemplategt
lt/xslstylesheetgt
12
Proviamo..
base
trasformazione
13
Soluzioni iterative
  • Nel caso in cui si vogliono leggere però i nomi
    di tutti i clienti e non solo del primo cliente
    dobbiamo appoggiarci o ad un costrutto iterativo
    oppure al comando apply-templates che richiama
    ricorsivamente il template associato a ciascuno
    dei nodi che fanno parte di una collezione di nodi

ltxslapply-templates selectXPath"gt
14
Proviamo..
ricorrobase
ricorro
15
Costrutti condizionali ed iterativi
  • Possiamo creare costrutti condizionali per
    valutare il contenuto del documento XML in
    ingresso prima di trasformarlo
  • If
  • Choose

ltxslif test"condizione"gt lt!--Codice da eseguire
se la condizione all'interno di test è
prova--gt lt/xslifgt ltxslchoosegt ltxslwhen
test"condizione"gt lt!--Codice da eseguire se la
condizione di test è vera--gt lt/xslwhengt ltxslwhen
test"condizione"gt lt!--Codice da eseguire se la
condizione di test è vera--gt lt/xslwhengt ltxslothe
rwise test"condizione"gt lt!--Codice da eseguire
se la condizione di test è falsa--gt lt/xslotherwis
egt lt/xslchoosegt
La differenza fra i due costrutti è che il blocco
if può valutare una sola condizione e non
presenta unalternativa elseif come spesso accade
nei linguaggi tradizionali Se prevediamo anche
un blocco otherwise questo costituisce la
condizione di default nel caso in cui nessuna
delle precedenti si verifichi
16
Esempio costrutto if
ltxsltemplate match"cliente"gt ltligt
ltxslvalue-of select"ragioneSociale" /gt
ltxslif test"fatturato/_at_anno2000"gt ltigt
(Cliente dal 2000) lt/igt lt/xslifgt lt/ligt lt/xslte
mplategt
17
Proviamo..
18
Esempio costrutto choose
ltxsltemplate match"cliente"gt ltligt ltxslchoose
gt ltxslwhen test"position() mod 2
0"gt ltfont color"red" size"4"gt ltxslvalue-of
select"ragionesociale" /gt lt/fontgt lt/xslwhengt
ltxslotherwisegt ltfont color"black"
size"2"gt ltxslvalue-of select"ragionesociale"
/gt lt/fontgt lt/xslotherwisegt lt/xslchoosegt lt/l
igt lt/xsltemplategt
19
Proviamo..
20
Istruzione for-each
  • Nel caso in cui sia necessario eseguire delle
    interazioni su collezioni di nodi presenti nel
    documento XML di input possiamo usare
    listruzione for-each

ltxslfor-each select"XPath"gt lt!-- codice
relativo al nodo corrente --gt lt/xsdfor-eachgt
ltxslfor-each select"XPath"gt ltxslvalue-of
select"ragione sociale"gt lt/xsdfor-eachgt
21
Ordinamento
  • Qualora volessimo ordinare il contenuto secondo
    un qualche valore prima di scriverlo in output
    possiamo far riferimento allistruzione sort
  • Select
  • indica unespressione secondo la quale ordinare i
    contenuti
  • Data-type
  • ci permette di indicare al processore se vogliamo
    un ordinamento tra stringhe o numeri
  • Order
  • ci permette di definire se vogliamo un
    ordinamento crescente o decrescente dei dati

ltxslsort select"Espressione" data-type"textnum
ber" order"ascendingdescending" /gt
22
Conclusione
  • XSLT consente di trasformare documenti XML in
    altri documenti con struttura diversa
  • Funziona con un meccanismo di pattern matching e
    si basa su Xpath
  • Implementa istruzioni condizionali e meccanismi
    di iterazione

23
Riferimenti
  • Deitel et al, XML Corso di programmazione, Apogeo
  • Chris Bates, XML in theory and Practice, Wiley
  • XML Path Language (XPath) Version 1.0
  • W3C Recommendation 16 November 1999
  • http//www.w3.org/TR/xpath
  • W3Schools Online Web Tutorials
  • http//www.w3schools.com/xsl/default.asp

24
Ci sono domande?
Write a Comment
User Comments (0)
About PowerShow.com