Title: Seminario XML
1Seminario XML
- Panoramica su XML e tecnologie collegate
Ing. Luca Sabatucci
2Cosa è XML
- XML deriva dal linguaggio SGML (Standard
Generalization Markup Language) - XML è un linguaggio di meta-markup per documenti
di tipo testuale - XML è standard
- XML è flessibile
- XML è portabile
3Cosa non è XML
- XML non è un database
- XML non è un linguaggio di programmazione
- XML non è un protocollo di rete
4Usi e scopi di XML
- La genericità di XML ne ha consentito luso in
svariati campi applicativi - finanza,
- arte,
- robotica,
- multimedialità,
- telecomunicazioni,
- grafica,
- matematica,
- chimica,
- ecc
5XML come formato documentale
- XML nasce per descrivere documenti
- libri
- poemi,
- manuali,
- ecc
- XML è perfettamente adatto per scrivere documenti
orientati alla narrazione, concepiti per essere
letti da persone e non solo da computer.
6XML come formato per i dati
- Nellarco del suo sviluppo lXML è stato usato
anche per definire la sintassi dei dati dei
programmi del computer - elaborazione di informazioni,
- serializzazione di oggetti
- backup
- ecc
7XML e il Web
- XML è un ottimo strumento se usato per il web
- XML può essere usato per
- sostituire il linguaggio HTML con un linguaggio
più flessibile (XHTML) - definire il contenuto di una pagina Web (XML)
- definire lo stile con il quale visualizzare una
pagina web (XSL)
8Alcune applicazioni di XML
- SVG (Scalable Vector Graphics)
- MathML
- CML (Chemical Markup Language)
- RDF (Resource Description Language)
- XHTML
9Alcune tecnologie XML
- DTD e Schema
- Namespace
- Xpath
- XSLT
- SAX
- DOM
10XML
- eXtensible Markup Language
Ing. Luca Sabatucci
11Struttura ad albero
12Struttura del file XML
- Un documento XML è usato per descrivere un albero
gerarchico. - Un documento può avere una sola radice.
- Ogni elemento può contenere altri elementi al suo
interno.
13Un esempio di file XML
lt?xml version"1.0" encoding"UTF-8"?gt ltpersonagt
ltnomegtLuigilt/nomegt ltcognomegtPirandellolt/cognomegt
ltoriginegt ltdata_di_nascitagt ltgiornogt28lt/gior
nogt ltmesegtgiugnolt/mesegt ltannogt1867lt/annogt
lt/data_di_nascitagt ltluogo_di_nascitagtAgrigentolt/
luogo_di_nascitagt lt/originegt lt/personagt
14I TAG
- I tag XML hanno lo stesso aspetto dei tag HTML
- ltpersonagt
- ltnomegt
- ltdata_di_nascitagt
15Nomi XML
- Non possono essere usati
- spazi
- virgolette , apostrofi , il simbolo
- i simboli lt e gt
- il simbolo e il punto e vigola
- Il nome usato per un tag è sensibile alla
differenza tra maiuscole e minuscole - Il tag ltPersonagt è diverso da ltpersonagt
16I dati
- Tra un tag di apertura e un tag di chiusura
possono essere inseriti - altri tag
- dei dati testuali
- contenuto misto
ltdata_di_nascitagt ltgiornogt28lt/giornogt ltmesegtgiug
nolt/mesegt ltannogt1867lt/annogt lt/data_di_nascitagt
ltpgt lezione di ltbgtXMLlt/bgt lt/pgt
17Attributi
- Ad un tag possono essere associati degli
attributi - Un attributo consiste in una coppia nome-valore
- ltpersona nomeMario cognomeRossigt
- ltpersona nomeValeria cognomeBianchigt
18Commenti
- I documenti XML possono contenere dei commenti e
delle note. - Un commento si può inserire usando la sintassi
- lt!-- Commento --gt
19La dichiarazione XML
- I documenti XML dovrebbero iniziare con una
dichiarazione XML - lt?xml version"1.0" encoding"UTF-8"?gt
- dove
- version identifica la versione di XML in uso.
Attualmente la versione in uso è la 1.0 - encoding specifica quale tipo di codifica deve
essere usata allinterno del documento XML
supporta un grande quantità di set di caratteri.
20Documenti ben formati
- Affinché un documento XML sia ben formato è
necessario rispettare alcune regole sintattiche. - ad ogni tag iniziale deve corrispondere un tag
finale - gli elementi non possono sovrapporsi
- deve esistere esattamente un elemento radice
21Documenti ben formati
- i valori degli attributi devono essere
specificati tra apici - i commenti e le istruzioni di elaborazione non
possono apparire allinterno dei tag - non deve apparire nessun carattere lt o
allinterno dei caratteri di un elemento o di un
attributo
22Regola 1
- Ad ogni tag iniziale deve corrispondere un tag
finale - ltgiornogt28lt/giornogt
- ltmesegtgiugnolt/mesegt
- ltannogt1867lt/annogt
23Regola 2
- Gli elementi non possono sovrapporsi
- Non valido
- ltgiornogt28ltmesegtgiugnolt/giornogtlt/mesegt
- Valido
- ltgiornogt28lt/giornogt
- ltmesegtgiugnolt/mesegt
24Regola 3
- Deve esistere esattamente un elemento radice
lt?xml version"1.0" ?gt ltpersonagt ltnomegtLuigilt/nom
egt lt/personagt ltpersonagt ltnomegtMariolt/nomegt lt/pers
onagt ltpersonagt ltnomegtValerialt/nomegt lt/personagt
lt?xml version"1.0 ?gt ltelenco_personegt ltpersonagt
ltnomegtLuigilt/nomegt lt/personagt ltpersonagt ltno
megtMariolt/nomegt lt/personagt ltpersonagt ltnomegtVal
erialt/nomegt lt/personagt lt/elenco_personegt
25Regola 4
- I valori degli attributi devono essere
specificati tra apici - Non valido
- ltpersona nomeMario cognomeRossigt
- Valido
- ltpersona nomeMario cognomeRossigt
26Regola 5
- I commenti e le istruzioni di elaborazione non
possono apparire allinterno dei tag - Non valido
- ltpersona lt! una personagt gt
- Valido
- ltpersonagt lt! una personagt
27Regola 6
- Non deve apparire nessun carattere lt o
allinterno dei caratteri di un elemento o di un
attributo - Non valido
- ltespressionegt a gt b lt/espressionegt
28Referenze ad entità
- Per superare i limiti di non poter usare certi
caratteri (gt,lt, caratteri accentati) come testo
interno ai tag si usano delle combinazioni
speciali chiamate referenze ad entità - lt -gt il carattere minore lt
- amp -gt il carattere
- gt -gtil carattere maggiore gt
- quot -gt le virgolette
- apos -gt apostrofo
29Sezioni CDATA
- Quando un documento XML contiene delle grosse
porzioni di testo, usare le referenze ad entità
può risultare fastidioso. - Per semplificare la scrittura di documenti XML si
introducono le sezioni CDATA - Allinterno di una sezione CDATA può essere usato
qualunque carattere si desidera, compreso quelli
che normalmente non possono essere usati.
30Sezione CDATA
- Una sezione CDATA inizia con la sequenza
- lt!CDATA
- e termina con la sequenza
- gt
- Ad esempio
- ltpgt lt!CDATA qui dentro posso usare tutti i
caratteri che desidero compreso gt lt
oppure i caratteri accentati à è ì ò ù gt lt/pgt
31Elementi vuoti
- Quando un elemento non deve avere nessun
contenuto esso può apparire in due forme. - Nella forma estesa
- ltelementogtlt/elementogt
- Oppure nella forma contratta
- ltelemento/gt
32DTD
Ing. Luca Sabatucci
33Documenti validi
- La flessibilità di XML ne consente lutilizzo in
campi completamente diversi tra loro. - Ogni applicazione XML ha quindi scopi diversi e
di conseguenza è necessario usare elementi
differenti. - Occorre quindi uno strumento per imporre una
determinata struttura ad un file XML
34DTD
- Lo strumento in grado di fornire delle regole di
composizione strutturale è DTD. - Un documento DTD descrive con precisione quali
elementi ed entità possono apparire allinterno
di un documento, quali possono essere i contenuti
e gli attributi di tali elementi.
35Validazione
- Quando un documento XML rispetta le regole
imposte da un determinato DTD si dice che risulta
valido per lapplicazione specifica. - Rispetto alle regole di ben formazione, le regole
di validazione sono opzionali. - Lo scopo di tali regole è quelle di generare
documenti che possono essere capiti dalle
applicazioni.
36DTD
- Un DTD ad esempio può specificare che
- un elemento ltulgt può contenere solo elementi ltligt
- un elemento ltimpiegatogt deve avere un attributo
previdenza_sociale
37Principio di base
- Un DTD opera sul principio che tutto ciò che non
è esplicitamente dichiarato come permesso allora
deve essere considerato vietato.
38Struttura
39Esempio di DTD
lt!ELEMENT persona (nome, cognome,
origine)gt lt!ELEMENT nome (PCDATA)gt lt!ELEMENT
cognome (PCDATA)gt lt!ELEMENT origine
(data_di_nascita, luogo_di_nascita)gt lt!ELEMENT
data_di_nascita (giorno, mese, anno)gt lt!ELEMENT
luogo_di_nascita (PCDATA)gt lt!ELEMENT giorno
(PCDATA)gt lt!ELEMENT mese (PCDATA)gt lt!ELEMENT
anno (PCDATA)gt
40Dichiarazione di elementi
- Ogni elemento utilizzato in un documento valido
deve essere dichiarato nel DTD - La sintassi è la seguente
- lt!ELEMENT nome_elemento (modello_di_contenuto) gt
- Dove
- il nome di elemento può essere un qualunque nome
XML legale
41Modello di contenuto
- Il modello di contenuto dichiara quali figli
possa o debba avere lelemento in questione e in
quale ordine. - I modelli di contenuto possono essere scelti tra
sette diversi tipi di elementi.
42I sette tipi di elementi
- PCDATA
- Elementi figli
- Sequenze
- Scelte
- Elementi vuoti
- ANY
- Contenuto misto
43PCDATA
- E il più semplice modello di contenuto
- Specifica che lelemento può contenere solamente
dati di tipo carattere - Esempio
- lt!ELEMENT cognome (PCDATA)gt
- Corrisponde a
- ltcognomegtPirandellolt/cognomegt
44Elementi figli
- Specifica che un elemento deve contenere
esattamente un elemento figlio di un determinato
tipo. - Esempio
- lt!ELEMENT fax (numero_di_telefono)gt
- Corrisponde a
- ltfaxgt
- ltnumero_di_telefonogt091123456lt/numero_di_telefonogt
- lt/faxgt
45Sequenze
- Generalmente gli elementi contengono più di un
elemento figlio. - Per specificare quali elementi devono essere
contenuti è sufficiente elencarli separandoli con
delle virgole. - Esempio
- lt!ELEMENT persona (nome, cognome, origine)gt
46Ordine
- Una sequenza specifica che gli elementi devono
apparire nellordine specificato. - Qualora lordine non sia rispettato il file XML
non risulta valido rispetto al DTD
47Numero di figli
- E possibile aggiungere un suffisso per
specificare quante istanze di figli sono permessi
per un dato elemento. - Suffissi
- ? corrisponde a zero o un elemento
- corrisponde a zero o più elementi
- corrisponde a uno o più elementi
48Esempi
- lt!ELEMENT name (first_name, middle_name?,
last_name )gt - lt!ELEMENT name (first_name, last_name )gt
- lt!ELEMENT persona (nome, cognome, professione )gt
49Scelte
- Può capitare che il contenuto di un elemento
debba essere selezionato tra un elenco di
possibilità. - Una scelta è un elenco di nomi separati da barre
verticali - Esempio
- lt!ELEMENT mese ( gennaio febbraio marzo
aprile maggio giugno luglio agosto
settembre ottobre novembre dicembre )gt
50Uso delle parentesi
- E possibile combinare scelte e sequenze in modo
anche complessi usando le parentesi. - Esempio
- lt!ELEMENT cerchio (centro, (raggio diametro) )gt
- Corrisponde a
ltcerchiogt ltcentrogt12,5lt/centrogt
ltraggiogt24lt/raggiogt lt/cerchiogt
ltcerchiogt ltcentrogt12,5lt/centrogt
ltdiametrogt48lt/diametrogt lt/cerchiogt
51Elementi vuoti
- Alcuni elementi, chiamati elementi vuoti, non
hanno nessun contenuto. - Gli elementi vuoti vengono dichiarati usando la
parola EMPTY. - lt!ELEMENT poeta EMPTYgt
- Corrisponde a
ltpersonagt ltnomegtDantelt/nomegt
ltcognomegtAlighierilt/cognomegt
ltpoeta/gt lt/personagt
52ANY
- Alcuni DTD particolarmente liberi permettono di
specificare un contenuto arbitrario. - Tale modello viene dichiarato usando la parola
ANY. - lt!ELEMENT page ANYgt
- I figli di page possono essere di qualunque tipo
qualsiasi elemento (compreso page), testo, oppure
contenuto misto.
53Contenuto misto
- Per definire che il contenuto di un certo
elemento può essere misto si usa la seguente
sintassi - lt!ELEMENT page (PCDATA elemento_figlio) gt
- Questa dichiarazione indica che lelemento page
può contenere qualunque combinazione di caratteri
e di elementi di tipo elemento_figlio.
54Dichiarazione di attributi
- Oltre a dichiarare gli elementi di un documento,
deve essere possibile dichiarare anche gli
attributi. - La dichiarazione degli attributi ha la seguente
forma - lt!ATTLIST elemento attributo caratteristiche) gt
- Una dichiarazione ATTLIST può essere usata per
dichiarare più di un attributo.
55Dichiarazione di attributi
- lt!ATTLIST elemento attributo caratteristiche) gt
- elemento è il nome dellelemento che deve
contenere lattributo - attributo è il nome dellattributo
- caratteristiche è un insieme di parametri che
specificano - il tipo di attributo.
- se lattributo è obbligatorio oppure opzionale
56Parametri
- Tipo di attributo
- CDATA
- NMTOKEN
- NMTOKENS
- ID
- IDREF
- ENTITY
- NOTATION
57Attributo CDATA
- Un attributo CDATA può contenere una qualsiasi
stringa di testo accettabile da XML - Esempio
- ltpersona nomeLuca Sabatuccigt
58Valore di presenza
- Ogni dichiarazione ATTLIST può includere un
valore di presenza dellattributo - IMPLIED
- Indica che lattributo è opzionale
- REQUIRED
- Indica che lattributo è obbligatorio
- FIXED
- Indica che lattributo è costante e non può
essere variato
59Valore di presenza
lt!ATTLIST professione CDATA da IMPLIED
CDATA a IMPLIED gt
lt!ATTLIST persona CDATA nome REQUIRED CDATA
cognome REQUIRED gt
lt!ATTLIST persona CDATA nazionalità FIXED
italiana gt
60La dichiarazione del tipo di documento XML
- Un documento DTD specifica un insieme di regole
che definiscono una applicazione XML. - Per specificare che un documento XML sia conforme
a un DTD è necessario aggiungere una
dichiarazione di tipo di documento. - lt!DOCTYPE radice SYSTEM urlgt
- Questa dichiarazione va messa nel file XML subito
dopo la dichiarazione XML.
61Namespace
Ing. Luca Sabatucci
62Scopo
- I Namespace servono a
- distinguere tra elementi e attributi con lo
stesso nome appartenenti ad applicazioni
differenti - raggruppare assieme tutti gli elementi e gli
attributi di una applicazione XML correlati tra
loro in modo che il software li possa distinguere
facilmente - Questa necessità nasce dal fatto che spesso
accade che più applicazioni XML risiedono nello
stesso documento.
63Esempi
- Documento XHTML con immagini SVG
- Documento XHTML con equazioni MathML
- RDF applicazioni risorsa
- XSL documento origine
- Documento DocBook con elementi XHTML
64Catalogo di quadri
ltcataloggt ltpaintinggt lttitlegtMemory of the
garden at Ettenlt/titlegt ltartistgtVincent Van
Goghlt/artistgt ltdategtNovember,
1888lt/dategt ltdescriptiongt Two women look to
the left. lt/descriptiongt lt/paintinggt ltpainti
nggt lttitlegtThe Swinglt/titlegt ltartistgtPierre-Au
guste Renoirlt/artistgt ltdategt1876lt/dategt ltdescr
iptiongt A young girl on a swing.
lt/descriptiongt lt/paintinggt lt/cataloggt
65Uso di RDF per descrivere la risorsa
- Lapplicazione RDF (Resource Description
Framework) può essere usata per descrivere delle
risorse. - Supponiamo di voler inserire il catalogo di
quadri sul Web e di voler usare RDF per rendere
alcune informazioni accessibili ai motori di
ricerca
66RDF
67Uso di RDF
ltcataloggt ltRDFgt ltDescription
about"http//ibiblio.org/impressionists.xml"gt
lttitlegtCatalogo quadri impressionismo
800lt/titlegt ltcreatorgtLuca Sabatuccilt/creatorgt
ltdescriptiongtPittori impressionistilt/description
gt ltdategt26-02-2001lt/dategt lt/Descriptiongt lt/R
DFgt ltpaintinggt lttitlegtMemory of the garden at
Ettenlt/titlegt ltartistgtVincent Van
Goghlt/artistgt ltdategtNovember,
1888lt/dategt ltdescriptiongt Two women look to
the left. lt/descriptiongt lt/paintinggt ...
68Conflitto
- Tra lapplicazione CatalogoQuadri e RDF è nato un
conflitto di termini - title
- description
- date
- Tali elementi hanno lo stesso nome, ma
significati completamente diversi tra loro.
69Implementazione
- I Namespace vengono implementati aggiungendo un
prefisso al nome di ogni elemento e attributo. - Ogni prefisso viene messo in corrispondenza ad
una applicazione XML diversa - In questo modo allinterno di un documento XML si
possono avere elementi riguardanti più
applicazioni XML
70Prefisso
- La sintassi usata per introdurre un prefisso
Namespace è la seguente - ltprefissonome_elementogt
- Per cui si può distinguere tra
- rdfdescription
- exdescription
- description
71Uso di Namespace
ltcataloggt ltrdfRDFgt ltrdfDescription
about"http//ibiblio.org/impressionists.xml"gt
ltrdftitlegtCatalogo quadri impressionismo
800lt/rdftitlegt ltrdfcreatorgtLuca
Sabatuccilt/rdfcreatorgt ltrdfdescriptiongtPittor
i impressionistilt/rdfdescriptiongt ltrdfdategt26
-02-2001lt/rdfdategt lt/rdfDescriptiongt lt/rdfRD
Fgt ltpaintinggt lttitlegtMemory of the garden at
Ettenlt/titlegt ltartistgtVincent Van
Goghlt/artistgt ltdategtNovember,
1888lt/dategt ltdescriptiongt Two women look to
the left. lt/descriptiongt lt/paintinggt ...
72Uso degli URL
- I prefissi eliminano lambiguità tra elementi con
lo stesso nome - E obbligatorio assegnare ad ogni prefisso un URL
che identifica la particolare applicazione di
riferimento - I prefissi vengono legati agli URL dei Namespace
aggiungendo un attributo xmlnsprefisso
allelemento base della gerarchia
73Esempi
- ltrdfRDF xmlnsrdfhttp//www.w3.org/TR/REC-rdf-s
yntaxgt - ltxslstylesheet xmlnsxslhttp//www.w3.org/1999/
XSL/Transformgt
74LURL
- La stringa specificata come valore dellattributo
xmlnsprefisso ha la forma di un URL internet. - In realtà gli URL sono degli identificatori
puramente formali - Non è necessario che la pagina specificata
dallURL esista realmente - Tuttavia è buona norma quella di inserire allURL
specificato la descrizione della grammatica o il
DTD dellapplicazione di riferimento
75Namespace e DTD
- I namespace sono completamente indipendenti dai
DTD - Un documento può essere dotato di DTD ma non
utilizzare i namespace - Oppure può usare i namespace ma non avere un DTD
- I namespace non modificano la sintassi dei DTD in
nessuna maniera
76XSLT
Ing. Luca Sabatucci
77XSLT
- Uno dei vantaggi nell'utilizzo del XML è la
facilità con cui si possono trasformare i
documenti in altri formati e strutture. - Lo strumento utilizzato per definire queste
trasformazioni è denominato Extensible Stylesheet
Language Transformations (XSLT).
78Foglio 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 delle
regole XSL - XSL è una applicazione XML
79Processo di trasformazione
- La trasformazione avviene tramite un processore
chiamato elaboratore XSLT
80Applicazioni pratiche
- Web
- Un documento XML può essere trasformato in una
pagina HTML in modo da essere visualizzato
tramite browser Web - XSL-FO
- Un documento può essere trasformato in formato FO
(Formatting Object) che rappresenta una
applicazione di formattazione per documenti
testuali.
81ltCatalogoLibrigt ltLibro lingua"Inglese"gt ltAutor
egtAntwone Quenton Fisherlt/Autoregt ltTitologtWho
Will Cry for the Little Boylt/Titologt ltEditoregtHa
rdcoverlt/Editoregt ltPrezzo valuta"euro"gt9.95lt/Pr
ezzogt ltDisponibilitagt ltimmediata/gt lt/Dispon
ibilitagt lt/Librogt ltLibro lingua"Inglese"gt ltAu
toregtKahlil Gibranlt/Autoregt ltTitologtThe Prophet
lt/Titologt ltEditoregtHardcoverlt/Editoregt ltPrezzo
valuta"euro"gt10.50lt/Prezzogt ltDisponibilitagt
ltgiorno/gt lt/Disponibilitagt lt/Librogt ltLibro
lingua"inglese"gt ltAutoregtSamuel
Beckettlt/Autoregt ltTitologtWaiting for
Godotlt/Titologt
82ltxsltemplate match"CatalogoLibri"gt lthtmlgt lthe
adgt lttitlegtCatalogo Web Semplicelt/titlegt lt/h
eadgt ltbodygt lth1gtCatalogo di Librilt/h1gt ltul
type"square"gt ltxslapply-templates
select"Libro"/gt lt/ulgt lt/bodygt lt/htmlgt lt/xsl
templategt ltxsltemplate match"Libro"gt ltligtltpgt
Titolo ltxslapply-templates select"Titolo"/gtltbr/
gt Autore ltxslapply-templates
select"Autore"/gtltbr/gt Editore
ltxslapply-templates select"Editore"/gtltbr/gt ltbgt
Prezzolt/bgt ltxslapply-templates
select"Prezzo"/gt lt/pgtlt/ligt lt/xsltemplategt ltxsl
template match"Titolo"gt ltbgtltxslvalue-of
select"text()"/gtlt/bgt lt/xsltemplategt
83(No Transcript)
84ltxsltemplate match"CatalogoLibri"gt lthtmlgt lthe
adgt lttitlegtCatalogo Web con
Tabellelt/titlegt lt/headgt ltbodygt lth1gtCatalogo
di Librilt/h1gt lttable border"1"
width"50"gt lttbodygt lttrgt
ltxslapply-templates select"Libro"/gt
lt/trgt lt/tbodygt lt/tablegt lt/bodygt
lt/htmlgt lt/xsltemplategt ltxsltemplate
match"Libro"gt lttrgtltxslapply-templates
select"Titolo"/gtlt/trgt lttrgtltxslapply-templates
select"Autore"/gt ltxslapply-templates
select"Editore"/gtlt/trgt lttrgtltxslapply-templates
select"Prezzo"/gt ltxslapply-templates
select"Disponibilita"/gtlt/trgt lt/xsltemplategt
85(No Transcript)
86Namespace XSL
- XSL è una applicazione XML
- XSL definisce un proprio DTD e un Namespace
- LURL da usare per il namespace è
- xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
- Il namespace viene generalmente associato al
prefisso xsl
87xslstylesheet
- Lelemento radice di un documento XSL è
xslstylesheet - Allinterno dellelemento xslstylesheet si
mettono le regole di trasformazione - Il più semplice foglio di stile XSL prevede che
non vi siano regole di trasformazione
88Catalogo persone
ltcatalogogt ltpersonagt ltnomegtLucalt/nomegt ltcogno
megtSabatuccilt/cognomegt ltoriginegt ltdata_di_nas
citagt ltgiornogt16lt/giornogt ltmesegt2lt/mesegt
ltannogt1976lt/annogt lt/data_di_nascitagt ltluo
go_di_nascitagtPalermolt/luogo_di_nascitagt lt/origi
negt ltprofessione da"Luglio 2002"gtIngegnerelt/pro
fessionegt lt/personagt ltpersonagt ltnomegtMariolt/no
megt ltcognomegtRossilt/cognomegt ltoriginegt ltdat
a_di_nascitagt ltgiornogt4lt/giornogt ltmesegt7lt/
mesegt ltannogt1982lt/annogt
89La più semplice trasformazione
- Se si trasforma il file XML catalogo persone con
un foglio di stile vuoto, come quello mostrato di
seguito
lt?xml version"1.0" encoding"UTF-8"?gt ltxslstyle
sheet version"1.0" xmlnsxsl"http//www.w3.org/1
999/XSL/Transform"/gt
90Output
- Si ottiene loutput mostrato di seguito
LucaSabatucci1621976PalermoIngegnere MarioRossi471
982Milano
91Foglio di stile vuoto
- In assenza di regole la trasformazione è la
seguente - Viene prelevato il testo interno agli elementi
del documento di input - Viene quindi riprodotto il contenuto ma non il
markup. - In questo caso il risultato non è un documento XML
92Modelli e regole
- 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
xsltemplate, dotato di un attributo match - xsltemplate definisce una regola di
trasformazione - match identifica il tipo di input che attiva la
regola - esempio persona ? Una persona
93Esempio
- Di seguito viene mostrata la regola
corrispondente a - persona ? Una persona
ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt ltxsltemplate
match"persona"gtUna personalt/xsltemplategt lt/xsls
tylesheetgt
Output Una personaUna persona
94Associamo uno stile HTML
- E possibile fare in modo che loutput sia un
documento XML ben formato
ltxslstylesheet version"1.0" xmlnsxsl"gt ltxsl
template match"persona"gt ltpgtUna
personalt/pgt lt/xsltemplategt lt/xslstylesheetgt
95Output
- Output XML
- Output HTML (Internet Explorer)
ltpgtUna personalt/pgtltpgtUna personalt/pgt
Una persona Una persona
96Valore di un elemento
- Lelemento xslvalue-of permette di selezionare
il contenuto di un elemento di input e inserirlo
come output - xslvalue-of si può trovare soltanto allinterno
di un elemento xsltemplate - Lattributo select serve a selezionare il valore
che deve essere prelevato
97Esempio
- Di seguito viene riportato un esempio di elemento
xslvalue-of
ltxslstylesheet version"1.0" xmlnsxsl"gt ltxsl
template match"persona"gt ltpgtUna persona
ltxslvalue-of select"nome"/gtlt/pgt lt/xsltemplategt
lt/xslstylesheetgt
98Output
- Output XML
- Output HTML (Internet Explorer)
ltpgtUna persona Lucalt/pgtltpgtUna persona Mariolt/pgt
Una persona Luca Una persona Mario
99select
- Nellesempio mostrato lattributo select di
xslvalue-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
100Applicazione forzata di modelli
- Lutilizzo della regola xslapply-templates
permette di stabilire quali modelli devono essere
applicati e in che ordine - xslapply-templates possiede un attributo select
che specifica una regola di tipo xsltemplate
101Esempio
ltxslstylesheet version"1.0" xmlnsxsl"gt ltxsl
template match"persona"gt ltpgt ltxslapply-tem
plates select"cognome"/gt ltxslapply-templates
select"nome"/gt lt/pgt lt/xsltemplategt ltxsltemp
late match"nome"gt Nome ltxslvalue-of
select"text()"/gtltbr/gt lt/xsltemplategt ltxsltemp
late match"cognome"gt Cognome ltxslvalue-of
select"text()"/gtltbr/gt lt/xsltemplategt lt/xslstyl
esheetgt
102select
- A differenza del primo esempio in cui lattributo
select di xslvalue-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.
103Output
ltpgt Cognome Sabatucciltbr/gt Nome
Lucaltbr/gt lt/pgt ltpgt Cognome Rossiltbr/gt Nome
Marioltbr/gt lt/pgt
104Output
- Output HTML (Internet Explorer)
Cognome Sabatucci Nome Luca Cognome
Rossi Nome Mario
105Intestazione HTML
ltxsltemplate match"catalogo"gt lthtmlgt lthead
gt lttitlegtCatalogo personelt/titlegt lt/headgt
ltbodygt ltxslapply-templates
select"persona"/gt lt/bodygt lt/htmlgt lt/xsltem
plategt
106Output XML
lthtmlgt ltheadgt lttitlegtCatalogo
personelt/titlegt lt/headgt ltbodygt ltpgt Cognome
Sabatucciltbr/gt Nome Lucaltbr/gt lt/pgt ltpgt
Cognome Rossiltbr/gt Nome Marioltbr/gt lt/pgt lt
/bodygt lt/htmlgt
107DOM e SAX
- Interfaccia con i linguaggio di programmazione
108XML e i linguaggi di programmazione
- XML non è altro che un formato passivo utilizzato
per codificare dati. - I programmatori devono incorporare nelle proprie
applicazioni le tecnologie necessarie per
generare e interpretare documenti XML
109I punti di forza
- Sintassi semplice
- Supporto per le strutture ricorsive
- Semplicità di debugging
- Indipendenza dal linguaggio e dalla piattaforma
110API for XML
- La struttura grammaticale semplice di XML ha dato
luogo alla creazione di componenti gratuiti per
generare e interpretare documenti XML. - Questi componenti appartengono a due famiglie
- SAX (Simple API for XML)
- DOM (Document Object Model)
111DOM
- Il Document Object Model definisce una gerarchia
di oggetti in grado di descrivere un documento
XML - Il parser integrato in DOM analizza il documento
XML e genera in memoria la struttura DOM. - Il programmatore deve quindi solo creare il
codice per cercare le informazioni nella
struttura DOM
112SAX
- Le Simple API for XML definiscono un modello di
interpretazione guidato dagli eventi. - Un parser SAX utilizza un meccanismo di callback
per inviare delle notifiche durante
linterpretazione dei vari elementi XML - Il parser quindi non mantiene uno stato, e non
crea nessuna struttura in memoria questa
caratteristica lo rende particolarmente adatto
per lutilizzo con documenti molto grandi.
113SAX e DOM
- La W3C ha definito soltanto linterfaccia delle
due librerie SAX e COM - Questo ha permesso limplementazione per
moltissimi linguaggi di programmazione - Java
- C / C
- Perl
- Python
- COM
114Ulteriori Informazioni
- Dove reperire ulteriori informazioni su XML
- W3C (World Wide Web Consortium)
http//www.w3.org/XML/ - http//www.w3schools.com/default.asp
- http//www.html.it/xml/guida/index.html