Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

49
Programmazione Web eXtensible Markup Language (XML) 2014/2015 Programmazione Web - XML 1

Transcript of Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

Page 1: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

Programmazione WebeXtensible Markup Language (XML)

2014/2015 Programmazione Web - XML 1

Page 2: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 3: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 4: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 5: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 6: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 7: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 8: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 9: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 10: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 11: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 12: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 13: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 14: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 15: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 16: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 17: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 18: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 19: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 20: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 21: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 22: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 23: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 24: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 25: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 26: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 27: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 28: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 29: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

Sistemi Informativi e Servizi

<xs:element name=“book"> <xs:complexType> . . element content . . </xs:complexType> </xs:element>

Elementi complessi

2014/2015 Programmazione Web - XML 29

Page 30: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

Sistemi Informativi e Servizi

<xs:element name=“book"> <xs:complexType> . . element content . . </xs:complexType> </xs:element>

Elementi complessi

2014/2015 Programmazione Web - XML 30

Page 31: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 32: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 33: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 34: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 35: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 36: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 37: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 38: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 39: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 40: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

• 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

Page 41: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

XMLDTD

XML parser

Applicazione

XSD

Parser XML

2014/2015 Programmazione Web - XML 41

Page 42: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

• 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

Page 43: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

<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

Page 44: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

<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

Page 45: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

• 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

Page 46: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

• 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

Page 47: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

<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

Page 48: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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

Page 49: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.

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