Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.
-
Upload
giuliana-melis -
Category
Documents
-
view
271 -
download
0
Transcript of Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.
![Page 1: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/1.jpg)
Programmazione WebeXtensible Markup Language (XML)
2014/2015 Programmazione Web - XML 1
![Page 2: Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/2.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/3.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/4.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/5.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/6.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/7.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/8.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/9.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/10.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/11.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/12.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/13.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/14.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/15.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/16.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/17.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/18.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/19.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/20.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/21.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/22.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/23.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/24.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/25.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/26.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/27.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/28.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/29.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/30.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/31.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/32.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/33.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/34.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/35.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/36.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/37.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/38.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/39.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/40.jpg)
• 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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/41.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/42.jpg)
• 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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/43.jpg)
<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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/44.jpg)
<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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/45.jpg)
• 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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/46.jpg)
• 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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/47.jpg)
<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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/48.jpg)
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.](https://reader034.fdocuments.net/reader034/viewer/2022052315/5542eb74497959361e8dcb36/html5/thumbnails/49.jpg)
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