Seminario XML - PowerPoint PPT Presentation

About This Presentation
Title:

Seminario XML

Description:

Seminario XML Panoramica su XML e tecnologie collegate Ing. Luca Sabatucci Cosa XML XML deriva dal linguaggio SGML (Standard Generalization Markup Language) XML ... – PowerPoint PPT presentation

Number of Views:78
Avg rating:3.0/5.0
Slides: 115
Provided by: paIcarCn
Category:
Tags: xml | godot | seminario | waiting

less

Transcript and Presenter's Notes

Title: Seminario XML


1
Seminario XML
  • Panoramica su XML e tecnologie collegate

Ing. Luca Sabatucci
2
Cosa è 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

3
Cosa non è XML
  • XML non è un database
  • XML non è un linguaggio di programmazione
  • XML non è un protocollo di rete

4
Usi 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

5
XML 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.

6
XML 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

7
XML 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)

8
Alcune applicazioni di XML
  • SVG (Scalable Vector Graphics)
  • MathML
  • CML (Chemical Markup Language)
  • RDF (Resource Description Language)
  • XHTML

9
Alcune tecnologie XML
  • DTD e Schema
  • Namespace
  • Xpath
  • XSLT
  • SAX
  • DOM

10
XML
  • eXtensible Markup Language

Ing. Luca Sabatucci
11
Struttura ad albero
12
Struttura 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.

13
Un 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
14
I TAG
  • I tag XML hanno lo stesso aspetto dei tag HTML
  • ltpersonagt
  • ltnomegt
  • ltdata_di_nascitagt

15
Nomi 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

16
I 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
17
Attributi
  • Ad un tag possono essere associati degli
    attributi
  • Un attributo consiste in una coppia nome-valore
  • ltpersona nomeMario cognomeRossigt
  • ltpersona nomeValeria cognomeBianchigt

18
Commenti
  • I documenti XML possono contenere dei commenti e
    delle note.
  • Un commento si può inserire usando la sintassi
  • lt!-- Commento --gt

19
La 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.

20
Documenti 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

21
Documenti ben formati
  1. i valori degli attributi devono essere
    specificati tra apici
  2. i commenti e le istruzioni di elaborazione non
    possono apparire allinterno dei tag
  3. non deve apparire nessun carattere lt o
    allinterno dei caratteri di un elemento o di un
    attributo

22
Regola 1
  • Ad ogni tag iniziale deve corrispondere un tag
    finale
  • ltgiornogt28lt/giornogt
  • ltmesegtgiugnolt/mesegt
  • ltannogt1867lt/annogt

23
Regola 2
  • Gli elementi non possono sovrapporsi
  • Non valido
  • ltgiornogt28ltmesegtgiugnolt/giornogtlt/mesegt
  • Valido
  • ltgiornogt28lt/giornogt
  • ltmesegtgiugnolt/mesegt

24
Regola 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
25
Regola 4
  • I valori degli attributi devono essere
    specificati tra apici
  • Non valido
  • ltpersona nomeMario cognomeRossigt
  • Valido
  • ltpersona nomeMario cognomeRossigt

26
Regola 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

27
Regola 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

28
Referenze 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

29
Sezioni 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.

30
Sezione 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

31
Elementi 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

32
DTD
  • Document Type Definition

Ing. Luca Sabatucci
33
Documenti 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

34
DTD
  • 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.

35
Validazione
  • 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.

36
DTD
  • Un DTD ad esempio può specificare che
  • un elemento ltulgt può contenere solo elementi ltligt
  • un elemento ltimpiegatogt deve avere un attributo
    previdenza_sociale

37
Principio di base
  • Un DTD opera sul principio che tutto ciò che non
    è esplicitamente dichiarato come permesso allora
    deve essere considerato vietato.

38
Struttura
39
Esempio 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
40
Dichiarazione 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

41
Modello 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.

42
I sette tipi di elementi
  • PCDATA
  • Elementi figli
  • Sequenze
  • Scelte
  • Elementi vuoti
  • ANY
  • Contenuto misto

43
PCDATA
  • 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

44
Elementi 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

45
Sequenze
  • 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

46
Ordine
  • Una sequenza specifica che gli elementi devono
    apparire nellordine specificato.
  • Qualora lordine non sia rispettato il file XML
    non risulta valido rispetto al DTD

47
Numero 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

48
Esempi
  • 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

49
Scelte
  • 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

50
Uso 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
51
Elementi 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
52
ANY
  • 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.

53
Contenuto 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.

54
Dichiarazione 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.

55
Dichiarazione 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

56
Parametri
  • Tipo di attributo
  • CDATA
  • NMTOKEN
  • NMTOKENS
  • ID
  • IDREF
  • ENTITY
  • NOTATION

57
Attributo CDATA
  • Un attributo CDATA può contenere una qualsiasi
    stringa di testo accettabile da XML
  • Esempio
  • ltpersona nomeLuca Sabatuccigt

58
Valore 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

59
Valore di presenza
  • Esempio

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
60
La 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.

61
Namespace
  • Spazio dei nomi

Ing. Luca Sabatucci
62
Scopo
  • 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.

63
Esempi
  • Documento XHTML con immagini SVG
  • Documento XHTML con equazioni MathML
  • RDF applicazioni risorsa
  • XSL documento origine
  • Documento DocBook con elementi XHTML

64
Catalogo 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
65
Uso 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

66
RDF
67
Uso 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 ...
68
Conflitto
  • 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.

69
Implementazione
  • 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

70
Prefisso
  • La sintassi usata per introdurre un prefisso
    Namespace è la seguente
  • ltprefissonome_elementogt
  • Per cui si può distinguere tra
  • rdfdescription
  • exdescription
  • description

71
Uso 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 ...
72
Uso 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

73
Esempi
  • ltrdfRDF xmlnsrdfhttp//www.w3.org/TR/REC-rdf-s
    yntaxgt
  • ltxslstylesheet xmlnsxslhttp//www.w3.org/1999/
    XSL/Transformgt

74
LURL
  • 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

75
Namespace 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

76
XSLT
  • Trasformazioni XSL

Ing. Luca Sabatucci
77
XSLT
  • 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).

78
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 delle
    regole XSL
  • XSL è una applicazione XML

79
Processo di trasformazione
  • La trasformazione avviene tramite un processore
    chiamato elaboratore XSLT

80
Applicazioni 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.

81
ltCatalogoLibrigt 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
82
ltxsltemplate 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)
84
ltxsltemplate 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)
86
Namespace 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

87
xslstylesheet
  • 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

88
Catalogo 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
89
La 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
90
Output
  • Si ottiene loutput mostrato di seguito

LucaSabatucci1621976PalermoIngegnere MarioRossi471
982Milano
91
Foglio 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

92
Modelli 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

93
Esempio
  • 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
94
Associamo 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
95
Output
  • Output XML
  • Output HTML (Internet Explorer)

ltpgtUna personalt/pgtltpgtUna personalt/pgt
Una persona Una persona
96
Valore 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

97
Esempio
  • 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
98
Output
  • Output XML
  • Output HTML (Internet Explorer)

ltpgtUna persona Lucalt/pgtltpgtUna persona Mariolt/pgt
Una persona Luca Una persona Mario
99
select
  • 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

100
Applicazione 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

101
Esempio
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
102
select
  • 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.

103
Output
  • Output XML

ltpgt Cognome Sabatucciltbr/gt Nome
Lucaltbr/gt lt/pgt ltpgt Cognome Rossiltbr/gt Nome
Marioltbr/gt lt/pgt
104
Output
  • Output HTML (Internet Explorer)

Cognome Sabatucci Nome Luca Cognome
Rossi Nome Mario
105
Intestazione 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
106
Output 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
107
DOM e SAX
  • Interfaccia con i linguaggio di programmazione

108
XML 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

109
I punti di forza
  • Sintassi semplice
  • Supporto per le strutture ricorsive
  • Semplicità di debugging
  • Indipendenza dal linguaggio e dalla piattaforma

110
API 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)

111
DOM
  • 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

112
SAX
  • 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.

113
SAX 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

114
Ulteriori 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
Write a Comment
User Comments (0)
About PowerShow.com