Upload
giuliana-melis
View
268
Download
0
Embed Size (px)
Citation preview
Programmazione WebeXtensible Markup Language (XML)
2014/2015 Programmazione Web - XML 1
2014/2015
eXtensible Markup LanguageFormato di file proposto dal W3C per distribuire documenti elettronici sul World Wide Web
Evoluzione:• 1986: Standard Generalized Markup Language (SGML) ISO 8879-1986• Agosto 1997: XML Working Draft• Dicembre 1997: XML 1.0 Proposed Recommendation• Febbraio 1998: W3C Recommendation
Richiami di XML
2Programmazione Web - XML 2
2014/2015
HTML vs XML (I)
HTML: insieme fisso di tag
XML: standard per creare linguaggi di markup con tag personalizzati (erede di SGML); possono essere usati in qualunque dominio applicativo
<h1> Il cosmo di Einstein </h1> <ul> <li> Autore: Kaku Michio <li> Editore: Codice <li> Anno: 2005 <li> ISBN: 8875780153 </ul>
<book> <title>Il cosmo di
Einstein</title> <author>Kaku Michio</author> <editor>Codice</editor> <year>2005</year> <isbn>8875780153</isbn></book>
3Programmazione Web - XML 3
2014/2015
HTML vs XML (II)
XML non rimpiazza HTML!
L’HTML è un caso particolare di XML
XML e HTML sono nati con scopi diversi:
XML progettato per descrivere i dati cosa sono i dati
scambiare e condividere dati e informazioni tra sistemi eterogenei (B2B, B2C,etc.)
creare nuovi linguaggi (WML, MathML…)
HTML progettato per visualizzare i dati come appaiono i dati
separare i dati dal modo con cui vengono presentati
Recentemente è stato introdotto l’XHTML, che combina l’HTML con le rigide regole sintattiche dell’XML, permettendone una maggiore interoperabilità e l’utilizzo anche su dispositivi a minore capacità
4Programmazione Web - XML 4
2014/2015
Sintassi XML
Ogni documento deve iniziare con <?xml version=“1.0”?>
E’ un linguaggio di markup, quindi ne rispetta tutte le regole generali
I tag sono “case sensitive”
Un documento XML deve avere un tag radice
Un documento XML è ben formato se soddisfa le regole di sintassi dell’XML
5Programmazione Web - XML 5
2014/2015
Esempio di documento XML
<?xml version="1.0"?>
<elenco>
<prodotto codice=“123”>
<descrizione> Forno </descrizione>
<prezzo> 1040000 </prezzo>
</prodotto>
<prodotto codice=“432”>
<descrizione> Frigo </descrizione>
</prodotto>
</elenco>
6Programmazione Web - XML 6
2014/2015
Esempio di documento XML
<?xml version="1.0"?>
<elenco>
<prodotto codice=“123”>
<descrizione> Forno </descrizione>
<prezzo> 1040000 </prezzo>
</prodotto>
<prodotto codice=“432”>
<descrizione> Frigo </descrizione>
</prodotto>
</elenco>
7
Dichiarazione iniziale
Elemento radice
Attributo
Elemento con solo testo
Elemento con altri tag annidati
Programmazione Web - XML 7
2014/2015
Elementi: modello di contenuto Gli elementi possono avere diversi tipi di contenuto
possono contenere altri elementi annidati (element content)
<book>
<publishing year=“2005”/>
<title> Il cosmo di Einstein </title>
<author> Kaku Michio </author>
<part> Traduzione a cura di P. Bonini
<chapter> L’eredità di Albert Einstein </chapter>
</part>
</book>
8Programmazione Web - XML 8
2014/2015
Elementi: modello di contenuto Gli elementi possono avere diversi tipi di contenuto
possono contenere altri elementi annidati (element content)
possono contenere solo testo (text content)
<book>
<publishing year=“2005”/>
<title> Il cosmo di Einstein </title>
<author> Kaku Michio </author>
<part> Traduzione a cura di P. Bonini
<chapter> L’eredità di Albert Einstein </chapter>
</part>
</book>
9Programmazione Web - XML 9
2014/2015
Elementi: modello di contenuto Gli elementi possono avere diversi tipi di contenuto
possono contenere altri elementi annidati (element content)
possono contenere solo testo (text content)
possono contenere sia elementi annidati che testo (mixed content)
<book>
<publishing year=“2005”/>
<title> Il cosmo di Einstein </title>
<author> Kaku Michio </author>
<part> Traduzione a cura di P. Bonini
<chapter> L’eredità di Albert Einstein </chapter>
</part>
</book>
10Programmazione Web - XML 10
2014/2015
Elementi: modello di contenuto Gli elementi possono avere diversi tipi di contenuto
possono contenere altri elementi annidati (element content)
possono contenere solo testo (text content)
possono contenere sia elementi annidati che testo (mixed content)
possono essere vuoti (empty content) con o senza attributi<book>
<publishing year=“2005”/>
<title> Il cosmo di Einstein </title>
<author> Kaku Michio </author>
<part> Traduzione a cura di P. Bonini
<chapter> L’eredità di Albert Einstein </chapter>
</part>
</book>
11Programmazione Web - XML 11
2014/2015
Attributi
Gli elementi possono avere degli attributi
I valori vanno racchiusi tra “ ”
Differiscono dagli elementi perchè non possono contenere elementi figli
Limitazioni nell’uso di attributi
non possono contenere valori multipli
non possono descrivere strutture
<prodotto codice=“123”> <descrizione> Forno </descrizione> <prezzo> 1040000 </prezzo> </prodotto>
12Programmazione Web - XML 12
2014/2015
Document Type Definition (DTD) Detta il formato comune per una classe di documenti XML, cioè:
gli elementi ammessile regole di annidamento degli elementi, gli attributi e il
contenuto ammesso per ciascun elemento
Scopi:accordarsi su formato/struttura dei documentivalidare documenti XML secondo certe regole
Un documento XML è valido rispetto ad un DTD se rispetta il formato specificato
13Programmazione Web - XML 13
2014/2015
Tipi di dichiarazioni in un DTD
ELEMENT: introduce il nome dell’elemento e il suo contenuto ammissibile
ATTLIST: specifica gli attributi ammessi per un dato elemento e le proprietà di questi attributi (tipo e vincoli sugli attributi)
ENTITY: simile ad una dichiarazione di costante, si riferisce ad una particolare porzione di documento XML
14Programmazione Web - XML 14
2014/2015
Dichiarazione di elementi (I)
15
Elementi contenenti altri elementi figli<!ELEMENT PRODOTTO (DESCRIZIONE)>
<prodotto><descrizione>…</descrizione></prodotto>
Elementi con PCDATA (parsed character data = porzione testo qualsiasi)<!ELEMENT DESCRIZIONE #PCDATA>
<descrizione> testo </descrizione>
Elementi vuoti<!ELEMENT ARTICOLO EMPTY>
<articolo/>
Programmazione Web - XML 15
2014/2015
Dichiarazione di elementi (II)
16
Contenuto misto<!ELEMENT ARTICOLO (#PCDATA | PRODOTTO)><articolo> testo </articolo><articolo><prodotto>..</prodotto><articolo>
Qualsiasi contenuto<!ELEMENT PARTE ANY)><parte><sottoparte></sottoparte><parte><parte><prodotto></prodotto></parte>
Programmazione Web - XML 16
2014/2015
Occorrenze di un elemento
17
1 volta <!ELEMENT PRODOTTO (DESCRIZIONE)>
1 o più volte <!ELEMENT LISTA (PRODOTTO+)>
0 o più volte <!ELEMENT LISTA (PRODOTTO*)>
0 o 1 volta <!ELEMENT PRODOTTO (DESCRIZIONE?)>
Programmazione Web - XML 17
2014/2015
Dichiarazione di attributi
18
Per ogni elemento il DTD dice:
quali attributi può avere il tag
che valori può assumere ciascun attributo
eventuali vincoli sulla cardinalità degli attributi
qual è il valore di default
Esempio di dichiarazione di attributo:
<!ATTLIST PRODOTTO codice ID #REQUIRED label CDATA #IMPLIED status (disponibile | terminato)
“disponibile”>
Programmazione Web - XML 18
2014/2015
Tipi di attributi
19
CDATA: stringaID: chiave unicaIDREF, IDREFS: riferimento ad uno o più ID nel documentoENTITY, ENTITIES: nome di una o più entitàNMTOKEN, NMTOKENS: caso ristretto di CDATA (una stringa di una o più parole separate da spazi)
codice ID #REQUIRED label CDATA #IMPLIED status (disponibile|terminato) ‘disponibile’
Programmazione Web - XML 19
2014/2015
Vincoli sugli attributi
20
#REQUIRED: il valore deve essere specificato#IMPLIED: l’attributo può avere un valore e il valore di default non è definito“val”: il valore dell’attributo è “val” se nient’altro è specificato#FIXED “val”: il valore, se presente, deve coincidere con “val”
codice ID #REQUIRED label CDATA #IMPLIED status (disponibile|terminato) “disponibile”
Programmazione Web - XML 20
2014/2015
Dichiarazione di entità
21
Analoghe alle dichiarazioni di macro con #define in C
<!ENTITY ATI "ArborText, Inc."> <!ENTITY boilerplate SYSTEM "/standard/legalnotice.xml">
Le entità possono essere • interne (&ATI;) • esterne (&boilerplate;)
Programmazione Web - XML 21
Sistemi Informativi e Servizi
<?XML version="1.0" standalone="no"?>
<!DOCTYPE elenco SYSTEM ”libro.dtd“> <!DOCTYPE elenco [ <!ELEMENT ELENCO (PRODOTTO+)>
<!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO?)>
<!ELEMENT DESCRIZIONE #PCDATA>
<!ELEMENT PREZZO #PCDATA>
<!ATTLIST PRODOTTO codice ID #REQUIRED>
]>
<elenco>...</elenco>
Documenti XML con DTD
2014/2015 Programmazione Web - XML 22
Sistemi Informativi e Servizi
<?XML version="1.0" standalone="no"?>
<!DOCTYPE elenco SYSTEM ”libro.dtd“> <!DOCTYPE elenco [ <!ELEMENT ELENCO (PRODOTTO+)>
<!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO?)>
<!ELEMENT DESCRIZIONE #PCDATA>
<!ELEMENT PREZZO #PCDATA>
<!ATTLIST PRODOTTO codice ID #REQUIRED>
]>
<elenco>...</elenco>
DTD esterno
Documenti XML con DTD
2014/2015 Programmazione Web - XML 23
Sistemi Informativi e Servizi
<!ELEMENT ELENCO (PRODOTTO+)>
<!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO?)>
<!ELEMENT DESCRIZIONE #PCDATA>
<!ELEMENT PREZZO #PCDATA>
<!ATTLIST PRODOTTO codice ID #REQUIRED>
<elenco>
<prodotto codice=“123”>
<descrizione> Forno </descrizione>
<prezzo> 1040000 </prezzo>
</prodotto>
<prodotto codice=“432”>
<descrizione> Frigo </descrizione>
</prodotto>
</elenco>
Esempio di DTD
2014/2015 Programmazione Web - XML 24
Sistemi Informativi e Servizi
<!ELEMENT ELENCO (PRODOTTO+)>
<!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO?)>
<!ELEMENT DESCRIZIONE #PCDATA>
<!ELEMENT PREZZO #PCDATA>
<!ATTLIST PRODOTTO codice ID #REQUIRED>
<elenco>
<prodotto codice=“123”>
<descrizione> Forno </descrizione>
<prezzo> 1040000 </prezzo>
</prodotto>
<prodotto codice=“432”>
<descrizione> Frigo </descrizione>
</prodotto>
</elenco>
NOTA: un DTD NON è un documento XML
Esempio di DTD
2014/2015 Programmazione Web - XML 25
Sistemi Informativi e Servizi
Storia: inizialmente proposto da Microsoft, è divenuto W3C recommendation (maggio 2001)Scopo: definire gli elementi e la composizione di un documento XML
Un XML Schema definisce regole riguardanti:• Elementi• Attributi• Gerarchia degli elementi• Sequenza di elementi figli• Cardinalità di elementi figli• Tipi di dati per elementi e attributi• Valori di default per elementi e attributi
XML Schema
2014/2015 Programmazione Web - XML 26
Sistemi Informativi e Servizi
Possono contenere solo testo (nessun sottoelemento o attributo)Definizione di elementi semplici:
<xs:element name="nome" type="tipo"/>
<xs:element name="nome" type=“tipo” default=“xyz”/>
<xs:element name="nome" type=“tipo” fixed=“xyz” />
Esempi di definizione di elementi semplici in XSD<xs:element name=“età” type=“xs:integer”/>
<xs:element name=“cognome” type=“xs:string”/>
Elementi semplici in un documento XML<età> 65 </età>
<cognome> Rossi </cognome>
Elementi semplici
2014/2015 Programmazione Web - XML 27
Sistemi Informativi e Servizi
Possono contenere solo testo (nessun sottoelemento o attributo)Definizione di elementi semplici:
<xs:element name="nome" type="tipo"/>
<xs:element name="nome" type=“tipo” default=“xyz”/>
<xs:element name="nome" type=“tipo” fixed=“xyz” />
Esempi di definizione di elementi semplici in XSD<xs:element name=“età” type=“xs:integer”/>
<xs:element name=“cognome” type=“xs:string”/>
Elementi semplici in un documento XML<età> 65 </età>
<cognome> Rossi </cognome>
Elementi semplici
2014/2015
Valore di default o fisso
Programmazione Web - XML 28
Sistemi Informativi e Servizi
<xs:element name=“book"> <xs:complexType> . . element content . . </xs:complexType> </xs:element>
Elementi complessi
2014/2015 Programmazione Web - XML 29
Sistemi Informativi e Servizi
<xs:element name=“book"> <xs:complexType> . . element content . . </xs:complexType> </xs:element>
Elementi complessi
2014/2015 Programmazione Web - XML 30
Sistemi Informativi e Servizi
Numero di occorrenze:maxOccurs: max numero di occorrenze minOccurs: min numero di occorrenze
Se non specificati: 1 e 1 sola occorrenza
<xs:element name=“Nome" type="xs:string" maxOccurs=“4" minOccurs=“1“/>
Vincoli di cardinalità
2014/2015 Programmazione Web - XML 31
Sistemi Informativi e Servizi
Per definire gruppi di elementi (o attributi), tra loro correlati• Group name
<xs:group name=“completeName”> <xs:sequence> <xs:element name=“Cognome" type="xs:string"/> <xs:element name=“Nome" type="xs:string"/> </xs:sequence><xs:group>…<xs:group ref=“completeName”/>
Raggruppamento
2014/2015 Programmazione Web - XML 32
Sistemi Informativi e Servizi
E’ possibile imporre delle restrizioni sui valori dei tipi semplici tramite l’uso di “facet”
Valore max/minEnumerazione di valoriPattern di caratteri ammessiLunghezza di liste di valori
<xs:attribute name=“format”> <xs:simpleType> <xs:restriction base=“xs:string”> <xs:enumeration value=“paperback"/> <xs:enumeration value=“hardback”/> <xs:restriction> <xs:simpleType></xs:attribute>
Le restrizioni sono applicateal range di valori ammessiper questo tipo
Restrizioni
2014/2015 Programmazione Web - XML 33
Sistemi Informativi e Servizi
E’ possibile imporre delle restrizioni sui valori dei tipi semplici tramite l’uso di “facet”
Valore max/minEnumerazione di valoriPattern di caratteri ammessiLunghezza di liste di valori
<xs:attribute name=“format”> <xs:simpleType> <xs:restriction base=“xs:string”> <xs:enumeration value=“paperback"/> <xs:enumeration value=“hardback”/> <xs:restriction> <xs:simpleType></xs:attribute>
Facet + valore
Restrizioni
2014/2015 Programmazione Web - XML 34
Sistemi Informativi e Servizi
Riferimento ad altri elementi
Attraverso l’attributo “ref” ci si può riferire ad un elemento definito altrove
…<xs:element name="note">
<xs:complexType> <xs:sequence>
<xs:element ref=“to”/> </xs:sequence>
</xs:complexType> </xs:element>…
<xs:element name="to“ type="xs:string"/>
2014/2015 Programmazione Web - XML 35
Sistemi Informativi e Servizi
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="note">
<xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="head" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence>
</xs:complexType> </xs:element></xs:schema>
Un esempio di schema XML
2014/2015 Programmazione Web - XML 36
2014/2015 37
XHTML
Si tratta di una versione più “controllata” dell'HTML, che segue le regole dell'XML annidamento corretto degli elementi <i><b>...</b></i> tag di chiusura <p>...</p> gestione ordinata dei tag vuoti <br/> case sensitivity per i nomi dei tag e degli attributi (minuscolo)
Valori di attributi tra virgolette ed espliciti checked=”checked”
Programmazione Web - XML 37
2014/2015 38
Compatibilità Cross-Browser (I)
I Browser supportano due modalità di rendering: Standards mode and Quirks mode Lo Standards mode lavora seguendo il più possibile le specifiche del W3C, quindi in maniera (quasi) indipendente dal browser Il Quirks mode segue le regole di formattazione dello specifico browser, con le sue limitazioni ed estensioni.
La modalità Quirks esiste per rendere i browser compatibili con i vecchi siti web, che erano sviluppati con codice molto browser-dipendente. Oggi, è necessario sviluppare i nuovi siti in modalità Standards
Programmazione Web - XML 38
2014/2015 39
Compatibilità Cross-Browser (II)
(!) Di default i browser usano la modalità Quirks
Per entrare in modalità Standards occorre inserire all’inizio del documento una dichiarazione doctype come quella che segue
Per usare l’XHTML transitional:<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Per usare l’XHTML strict:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Programmazione Web - XML 39
• Il parser XML è un’applicazione che:
recupera il documento XML
carica i dati in memoria
presenta all’applicazione che lo invoca un’interfaccia di alto livello
fornisce servizi di validazione (opzionale)
fornisce servizi di ricerca (opzionale)
Parser XML
2014/2015 Programmazione Web - XML 40
XMLDTD
XML parser
Applicazione
XSD
Parser XML
2014/2015 Programmazione Web - XML 41
• Due diversi approcci
approccio ad eventi
» il parser scandisce l’intero documento XML
» ogni volta che incontra un nuovo elemento, informa l’applicazione usando la tecnica del Callback
approccio basato su modello
» il parser costruisce internamente una struttura ad albero che rappresenta il documento XML (albero sintattico)
» fornisce all’applicazione delle API che permettono la navigazione dell’albero sintattico
Parsing di documenti XML
2014/2015 Programmazione Web - XML 42
<Libro disponibilità=“S”> <Titolo>Il Signore degli Anelli</Titolo> <Autore>J.R.R. Tolkien</Autore> <Data>2002</Data> <ISBN>88-452-9005-0</ISBN> <Editore>Bompiani</Editore></Libro>
XML Parser
Applicazione
Libro Titolo Autore…
t
Approccio ad eventi
2014/2015 Programmazione Web - XML 43
<Libro disponibilità=“S”> <Titolo>Il Signore degli Anelli</Titolo> <Autore>J.R.R. Tolkien</Autore> <Data>2002</Data> <ISBN>88-452-9005-0</ISBN> <Editore>Bompiani</Editore></Libro>
XML Parser
Applicazione
Libro disponibilità=“…”
Titolo
attr
Editore
Approccio basato su modello
2014/2015 Programmazione Web - XML 44
• E’ una API per il parsing di documenti XML
• Definisce una modalità di rappresentazione di documenti XML
• Usa strutture dati accessibili dall’applicazione
• Definisce le operazioni per agire sulla rappresentazione intermedia
caricamento della struttura
costruzione di un nuovo documento
navigazione dell’albero sintattico
aggiungere, eliminare, modificare e spostare le componenti
• Esistono implementazioni di DOM per diversi linguaggi di programmazione
linguaggi server-side: Java, C++, C#
linguaggi di script: VB-script, Javascript
DOM – Document Object Model
2014/2015 Programmazione Web - XML 45
• I documenti XML sono caricati sotto forma di albero sintattico, composto da oggetti di tipo Nodo
ogni nodo può avere uno o più figli
• DOM definisce solo la vista logica e non dice nulla sull’effettiva struttura in memoria
• Come modello ad oggetti si specificano
gli oggetti utilizzati per rappresentare il documento ed i suoi costituenti
le interfacce pubbliche degli oggetti per poter essere utilizzate dal livello applicativo
le relazioni tra gli oggetti e le interfacce
la semantica associata ad ogni classe
La struttura del DOM
2014/2015 Programmazione Web - XML 46
<sentence> The &projectName; project is important <name>MAIS project</name> <typology>MIUR FIRB</typology></sentence>
+ ELEMENT: sentence + TEXT: The + ENTITY REF: projectName + TEXT: project is important + ELEMENT: name + TEXT: MAIS project + ELEMENT: typology + TEXT: MIUR FIRB
Esempio di DOM
2014/2015 Programmazione Web - XML 47
Approccio ad eventi Approccio basato su modello
• E’ molto “leggero”
• Il programmatore può implementare solo le funzionalità
necessarie
• Fornisce all’applicazione un modello ricco del documento
• Mantiene una rappresentazione completa e durevole in memoria
• Interfaccia troppo semplice; si
richiede più codice nell’applicazione
• Nessun supporto per operare sul documento
• Richiede un'occupazione di
memoria per tutto il documento
Programmazione Web - XML
2014/2015 49
Dove trovare materiale, esempi, quiz…
Tutorial della W3C (http://www.w3schools.com/default.asp)
Tutorial su XML, DTD e XML Schema (http://www.w3schools.com/xml/)
Specifica XHTML 1 (http://www.w3.org/TR/xhtml1/)
Programmazione Web - XML 49