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

Post on 02-May-2015

253 views 0 download

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

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