Post on 01-May-2015
transcript
Introduzione a XMLIntroduzione a XML
UNIVERSITA’ DI CAMERINOCorso di laurea in Informatica
Barbara Rebarbara.re@unicam.it
Anno Accademico 2006-07
Introduzione a XML Barbara Re 2
Agenda
La storia Vantaggi e svantaggi Caratteristiche Elementi Namespace Quando scegliere XML EDI
Introduzione a XML Barbara Re 3
La genesi - IBM, Fine anni ‘60
Incarico a Charles F. Goldfarb di costruire un sistema per la memorizzazione, la ricerca, la gestione e la pubblicazione di documenti legali
Goldfarb scoprì che molti sistemi, in IBM, non potevano comunicare tra loro
I formati dei file nelle diverse applicazioni sono proprietari
...e diversi tra loro!!!
Introduzione a XML Barbara Re 4
C. Goldfaarb, E. Mosher, R. Lorie
Costituito un team per risolvere il problema 3 fatti importanti
I diversi programmi avevano bisogno di supportare una rappresentazione comune dei documentiIl linguaggio comune doveva essere specifico per i documenti legaliIl linguaggio doveva essere specificato in una maniera formale, capace di delimitare in modo appropriato gli elementi
La risposta è stato GML (Generalized Markup Language), precursore di SGML (Standard GML), il linguaggio da cui deriva XML
Introduzione a XML Barbara Re 5
Perché non SGML?
SGML ha molti pregi, ma ha dalla sua una complessità d’uso e di comprensione notevole Non è pensato per la rete XML contiene tutte le caratteristiche di SGML che servono per creare applicazioni generali
... senza scendere nel livello di dettaglio e pedanteria richiesti da SGML
Inoltre, il successo di HTML ha fatto capire cheIl mondo degli sviluppatori è pronto ad accogliere il modello basato sul markupLa semplicità è un punto di forza fondamentale
Introduzione a XML Barbara Re 6
XML: le origini
XML è stato sviluppato dal World Wide Web
XML deriva da SGML, pubblicato ufficialmente nel 1986 con la sigla ISO 8879
XML nasce come un sottoinsieme semplificato di SGML orientato all’uso sul World Wide Web …
… ma ha assunto ormai un ruolo autonomo e una diffusione maggiore del suo progenitore
Introduzione a XML Barbara Re 7
Il caso HTML
XML non è un sostituto di HTML
HTML nasce per la pubblicazione di semplici documenti testuali con qualche immagine e collegamento ipertestuale
Vengono implementate nel tempo molte estensioni proprietarie che creano barriere all’interoperatività degli strumenti
I browser (parser) rilassano le regole sintattiche ed interpretano anche documenti HTML “scorretti”
HTML è per presentare informazioni, XML è per descrivere informazioni.
Introduzione a XML Barbara Re 8
Vantaggi
XML permette agli sviluppatori di creare facilmente strutture ad-hoc per contenere informazione strutturata
I parser XML sono diffusi su tutte le piattaforme e free Gli sviluppatori possono appoggiarsi a questi per decodificare e validare le strutture XML, limitandosi poi a gestire solo l'informazione contenuta usando API specifiche (DOM, SAX)
XML è completamente text-based, quindi leggibile anche dagli esseri umani e facilmente editabile anche a mano
Supporta UNICODE, quindi è adatto a ogni tipo di scrittura. Essendo dati testuali strutturati esattamente come
HTML, i dati XML possono essere trasportati usando il protocollo HTTP anche attraverso firewall (SOAP)
Introduzione a XML Barbara Re 9
Svantaggi
I documenti XML, a causa delle struttura testuale e dei tag, tendono ad essere molto più ingombranti di quelli in formato binario, quindi la loro trasmissione sulla rete non è ottimale
I parser XML non sono veloci come quelli scritti ad-hoc per formati specifici, soprattutto se binari
Introduzione a XML Barbara Re 10
XML: caratteristiche
XML è indipendente dal tipo di piattaforma hardware e software su cui viene utilizzato
XML è uno standard di pubblico dominio
XML è indipendente dai dispositivi di archiviazione e visualizzazione
un documento XML può essere archiviato su qualsiasi tipo di supporto digitale (attuale e… futuro!)un documento XML può essere visualizzato su qualsiasi dispositivo di output
Introduzione a XML Barbara Re 11
XML: caratteristiche
XML può essere usato come formato di scambio dati in applicazioni middleware
XML permette la rappresentazione di qualsiasi tipo di documento (e di struttura testuale) indipendentemente dalle finalità applicative
Sono disponibili numerose applicazioni e librerie open source per la manipolazione di dati in formato XML basate su diversi linguaggi di programmazione (Java, .NET, C, Python, Perl…)
Introduzione a XML Barbara Re 12
Il concetto di metalinguaggio
XML è un metalinguaggio
XML definisce un insieme regole (meta) sintattiche, attraverso le quali è possibile descrivere formalmente un linguaggio di markup, detto applicazione XML
Gli autori di un documento possono creare i loro elementi di markup (tag)
Introduzione a XML Barbara Re 13
Dato che XML è un metalinguaggio per specificare altri linguaggi, costituisce un “livello comune” per il dialogo in ambienti differenti
XML non dice nulla su che tag utilizzare, ma fissa solo delle regole comuni per eseguire correttamente il parsing del file
E’ possibile usare XML per gli scopi più disparati, a seconda delle operazioni che verranno eseguite dalla specifica applicazione di fronte al markup utilizzato
Regole XML
Tag specifici
Appl.
xmlparser
Dati (file XML)
Il concetto di metalinguaggio
Introduzione a XML Barbara Re 14
File di un’applicazione XML
Il file con estensione XML contiene i dati del documenti
Rappresenta la parte semantica dell’applicazione
La DTD (Document Type Definition) o schemaDefinisce la struttura degli elementi, degli attributi e dei dati e le loro relazioni logiche all’interno del documento XMLLa presenza di un DTD non è obbligatoria ma determina la well formed
Introduzione a XML Barbara Re 15
Regole
Un documento XML è definito come una sequenza di caratteri organizzati in costrutti chiamati entità
L’entità che racchiude il documento si chiama radice
1. Il nome di un elemento XML deve iniziare con una lettere o un carattere di sottolineatura I caratteri successivi possono essere numeri trattini punti o altri caratteri
di sottolineatura Non c’è limite al numero di caratteri per elemento
2. E’ ammesso specificare i due punti solo per specificare i namespace3. Gli spazi vuoti e i simboli non sono ammessi nei nomi degli elementi4. Gli elementi non vuoti devono avere un tag iniziale ed uno finale5. XML supporta gli elementi vuoti6. I tag XML devono essere annidati correttamente
Se un documento rispetta queste regole sintattiche si dice well-formed
Introduzione a XML Barbara Re 16
Il primo documento XML
<?xml version="1.0"?>
<proverbio>
<primo> Un viaggio di mille miglia inizia con un passo.</primo>
</proverbio>
Introduzione a XML Barbara Re 17
XML linguaggio case-sensitive
XML è un linguaggio case sansitive
Le dichiarazioni e il markup devono essere scritti con caratteri maiuscoli e minuscoli corrispondenti
Il nome XML o anche xml è riservato quindi non si può creare un elemento/attributo che inizi con XML o xml
Introduzione a XML Barbara Re 18
Documento che descriva il Kraski Teran
<?xml version="1.0"?><wine><name>Kraski Teran</name><country> Slovenia</country><location> Sepulje</location><history> Some oenologists believe that Kraski Teran goes back to Roman times.</history><color>dark ruby-red wine - traditionally, it is called,<span> "black as rabbit's blood</span>"</color><perfect>Kraski Teran and prsut (prosciutto or air-dried ham) are the legendary pair of Kras cuisine, but the wine is also perfect with other pork dishes, sausages, or boiled ham with horseradish</perfect><served>Kraski Teran should be served at 15 - 16 _C (59 - 60.8 _F)</served></wine>
Introduzione a XML Barbara Re 19
Attributi e sottoelementi
Gli attributi forniscono informazioni aggiuntive su di un elemento
Gli attributi sono formati da un nome ed un valore Il valore dell’attributo deve essere racchiuso tra
virgolette (doppie o semplici)
Trasformare il documento traslando gli attributi in elementi
<wine location="Primorska Slovenia" winemaker="Kraski Teran"></wine><wine location="Monterey California winemaker="Morgan Pinot Noir Monterey"></wine><wine location="Paso Robles California" winemaker"Seven Peaks Shiraz"></wine>
Introduzione a XML Barbara Re 20
Risoluzione
Non esiste un metodo chiaro per stabilire quando preferire gli attributi ai sottoelementi
<wine><location>Slovenia</location><winemaker>Kraski Teran</winemaker></wine><wine><location>Monterey California</location><winemaker>Morgan Pinot Noir Monterey</winemaker>
</wine><wine><location>Paso Robles California</location><winemaker>Seven Peaks Shiraz</winemaker></wine>
Introduzione a XML Barbara Re 21
Commenti
I commenti aiutano a capire il processo del codice I commenti non possono essere annidati all’interno
di altri tag e non possono essere inseriti prima della dichiarazione XML
Evitare di esagerare … l’importante è essere chiari e concisi
<?xml version="1.0"?><!-- Comment. --><a>a</a>
<!--flight schedule application--><?xml version="1.0"?>
legale illegale
Introduzione a XML Barbara Re 22
Caratteri speciali
& & < < > > " " ' ‘
<testo> il simbolo < indica minore di</testo>
Introduzione a XML Barbara Re 23
Si consideri il caso in cui un blocco di testo illustri proprio delcodice XML
<codice> <libro> <capitolo> </capitolo> </libro></codice>
In questo caso, al posto di sostituire tutte le occorrenze dei simboli speciali con le corrispondenti entità è possibile utilizzare una sezione CDATA.
CDATA in un documento XML
Introduzione a XML Barbara Re 24
Una sezione CDATA (Character DATA) è un blocco di testo cheviene considerato sempre come testo, anche se contiene codiceXML o altri caratteri speciali
Per indicare una sezione CDATA è sufficiente racchiuderla tra lesequenze di caratteri <![CDATA[ e ]]>.
<codice> <![CDATA[ <libro> <capitolo> </capitolo> </libro> ]]></codice>
CDATA in un documento XML
Introduzione a XML Barbara Re 25
Il prologo
La dichiarazione XML è obbligatoria e deve essere posta all’immediato inizio del documento
Gli attributi sonoversion: (obbligatorio) la versione di XML usata encoding: (opzionale) nome della codifica dei caratteri usata nel documento
default: UTF-8 o 16
standalone: (opzionale) se vale yes indica che il file non fa riferimento ad altri file esterni
default: no
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Introduzione a XML Barbara Re 26
Esercizio 1
<?xml version=_1.0_?><!-- Address Book/><addressbook><persons><name>Tech Cafe</name><adress>2500 Lawrence Expressway</adress></city>Sunnyvale</city><@state>CA<\@state><County>US</Country><zip>94087</ZIP></person><ADDRESSBOOK>
Correggere gli errori
Introduzione a XML Barbara Re 27
Soluzione Esercizio 1
Introduzione a XML Barbara Re 28
Esercizio 2
<!-- Ship Manifest --><?xml version="1.0" ><fleet><ship>Hood<ship><Country>UK</country><type>Destroyer<\type><19 year of production>1934</19 year of production></fleat>
Correggere gli errori
Introduzione a XML Barbara Re 29
Soluzione: Esercizio 2
Introduzione a XML Barbara Re 30
Namespace
Introduzione a XML Barbara Re 31
Mischiare i tag
Sistema di elaborazione semplice: il documento viene elaborato da una sola applicazione (esempio il viewer)
Sistema complesso: parti diverse del documento vengono elaborate da applicazioni diverse
<html>…
</html>
ParserXML viewer
<html><book/></html>
ParserXML
viewer
Bookagent
Introduzione a XML Barbara Re 32
Mischiare i tag
Cosa accade se due applicazioni definiscono lo stesso elemento?
<?xml version=“1.0”?><table><tr> <td>nome</td> <td>cognome</td></tr><tr> <td>Mario</td> <td>Bianchi</td></tr><tr> <td>Luca</td> <td>Rossi</td></tr></table>
<?xml version=“1.0”?><table><name>Comodino001</name><price curr=“EU”>100</price><width u=“cm”>50</width><length u=”cm”>80</length></table>
<?xml version=“1.0”?><table><tr><td>ordine</td><td>prodotto</td></tr><tr><td>1</td><td> <table> <name>Comodino</name> <price>100</price> <width um=“cm”>50</width> <length um=”cm”>80</length> </table></td></tr></table>
<table> viene riconosciutodal viewer HTML o dalgestore dell’arredo?
Introduzione a XML Barbara Re 33
I namespace
Ogni nome di elemento (tag) XML è preceduto da un prefisso che lo rende univoco (tag qualificato)
La struttura del tag è: prefisso:nometag
<?xml version=“1.0”?><h:table>
<h:tr><h:td>ordine</h:td><h:td>prodotto</h:td></h:tr><h:tr><h:td>1</h:td><h:td>
<fur:table><fur:name>Comodino</fur:name><fur:price>100</fur:price><fur:width u=“cm”>50</fur:width><fur:length u=”cm”>80</fur:length>
</fur:table></h:td></h:tr>
</h:table>
Introduzione a XML Barbara Re 34
I namespace
Ma non bastaIl prefisso potrebbe ripetersiDocumenti diversi potrebbero identificare lo stesso namespace “logico” con identificativi differentiImporre l’unicità porterebbe a ns lunghissimi ed a codici illeggibili
I prefissi usati vengono introdotti tramite l’attributo predefinito xmlns
Quello che conta è l’URI univoco associato al prefisso
<h:table xmlns:h=“http://www.w3.org/HTML/1998/html4/”> <pippo:table xmlns:pippo=“http://www.w3.org/HTML/1998/html4”>
<?xml version=“1.0”?><h:table xmlns:h=“http://www.w3.org/HTML/1998/html4/”
xmlns:fur=“http://www.elet.polimi.it/furniture/”></h:table>
<?xml version=“1.0”?><http://www.w3.org/HTML/1998/html4/table></http://www.w3.org/HTML/1998/html4/table>
Introduzione a XML Barbara Re 35
Namespace di default
Quando l’argomento di un XML è prevalentemente riferito ad un namespace è possibile definirlo come default e sottointendere la qualificazione
<?xml version=“1.0”?><table xmlns=“http://www.w3.org/HTML/1998/html4/” xmlns:fur=“http://www.elet.polimi.it/furniture/”>
<tr><td>ordine</td><td>prodotto</td></tr><tr><td>1</td><td>
<fur:table><fur:name>Comodino</fur:name><fur:price>100</fur:price><fur:width u=“cm”>50</fur:width><fur:length u=”cm”>80</fur:length>
</fur:table></td></tr>
</table>
Introduzione a XML Barbara Re 36
Scope dei prefissi
I prefissi possono essere definiti all’interno di ogni tag di inizio o vuoto.
L’associazione tra prefisso e NS dura per tutto l’elemento Se un prefisso viene ridefinito in un sottoelemento valgono
le solite regole di visibilità (il blocco interno nasconde quello esterno)
<?xml version=“1.0”?><table xmlns=“http://www.w3.org/HTML/1998/html4/”>
<tr><td>ordine</td><td>prodotto</td></tr><tr><td>1</td><td>
<table xmlns=“http://www.elet.polimi.it/furniture/”><name>Comodino</name><price>100</price><width u=“cm”>50</width><length u=”cm”>80</length>
</table></td></tr>
</table>
Introduzione a XML Barbara Re 37
Attributi
Anche gli attributi, essendo legati alla particolare applicazione, possono essere qualificati con un prefisso
Il namespace contiene tre partizioni di nomi:Element Type Partition: contiene i nomi degli elementi del namespaceGlobal Attribute Partition: nomi degli attributi qualificatiPer-Element Partition: nomi non qualificati degli attributi locali ad un elemento
<fur:table fur:xmlns=“http://www.elet.polimi.it/furniture”><fur:name>Comodino</fur:name><fur:price>100</fur:price><fur:width fur:u=“cm”>50</fur:width><fur:length fur:u=”cm”>80</fur:length>
</fur:table>
<fur:width fur:u=“cm”>50</fur:width><fur:width u=“cm”>50</fur:width>
Introduzione a XML Barbara Re 38
Struttura gerarchica di un documento
Gli elementi, nidificandosi, creano la struttura ad albero tipica dei documenti XML
All’interno di questa struttura si definiscono alcuni “rapporti di parentela” utili per individuare gli elementi
•a è il nodo radice
•b e c sono figli di a, il testo è figlio di b, d è figlio di c
•c è il padre di d, b è il padre del testo, a è il padre di b e c
•b e c sono fratelli
•b, c, d e il testo sono discendenti di a, d è un discendente di c, il testo è un discendente di b
•a è un predecessore di b, c, d e del testo, b è un predecessore del testo, c è un predecessore di d.
Introduzione a XML Barbara Re 39
Per fissare le idee prendiamo in considerazione larappresentazione di un generico articolo a caratteretecnico e proviamo a rappresentarlo secondo il modelloXML, come mostrato in figura
articolo
testo
paragrafoparagrafo
testo
immagine
paragrafo
codice
testo
titolo
titolo
titolotitolo
file
Sintassi di un documento XML
Introduzione a XML Barbara Re 40
<?xml version="1.0" ?><articolo titolo="Titolo dell’articolo"> <paragrafo titolo="Titolo del primo paragrafo"> <testo> Blocco di testo del primo paragrafo </testo> <immagine file="immagine1.jpg"> </immagine> </paragrafo> <paragrafo titolo="Titolo del secondo paragrafo"> <testo> Blocco di testo del secondo paragrafo </testo> <codice> Esempio di codice </codice> <testo> Altro blocco di testo </testo> </paragrafo> <paragrafo tipo="bibliografia"> <testo> Riferimento ad un articolo </testo> </paragrafo></articolo>
Documento XML
Introduzione a XML Barbara Re 41
Parser validanti e non validanti
Introduzione a XML Barbara Re 42
Quando scegliere XML?
Quali sono le condizioni per adottare XML in un progetto?
E’ nuovo ed è di moda ...ma ciò è banale!Alcune buone e vere ragioni per l’uso di XML:
Produzione di documenti automaticiGestione indipendente di produzione e uso di datiElaborazione di dati con aspetti strutturali complessi
Introduzione a XML Barbara Re 43
Produzione di documenti automaticiXML è la soluzione in assoluto più elegante (anche se ad oggi ancora faticosa) per integrare collezioni di dati strutturati sul WebDocumenti dinamici, sono facilmente esprimibili in XML, e gli strumenti attuali si concentrano su questo
Quando scegliere XML?
Introduzione a XML Barbara Re 44
Gestione indipendente di produzione ed uso di datiSpesso l’interscambio di dati avviene all’interno di un workflow controllato e noto. In questo caso, data producers e data consumers sono creati ad hoc per lo specifico flusso informativo. XML è una complicazione inutileTuttavia esistono delle situazioni in cui non c’è progettazione integrata di producer e consumer. In questo caso, un’adeguata progettazione del producer facilita molto il lavoro di tutti i possibili consumerXML è strutturato, auto-esplicativo, enfatizza la descrizione del dato più che del suo scopo nella elaborazione. E’ quindi ideale per le situazioni in cui l’elaborazione non è nota in anticipo.
Quando scegliere XML?
Introduzione a XML Barbara Re 45
Elaborazione di dati con aspetti strutturali complessiI database utilizzano le relazioni per ogni tipo di esigenzaComplicato gestire, in una tabella, record con un numero variabile di campi, o situazioni alternative complesseXML prevede strutture con blocchi ripetuti, alternativi, facoltativi. La descrizione di queste strutture in XML è molto più naturale che con DB relazionali
Quando scegliere XML?
Introduzione a XML Barbara Re 46
XML ed EDI
Cosa è l’Electronic Data Interchange Il vecchio EDI Il nuovo EDI: XML e Internet
Introduzione a XML Barbara Re 47
XML ed EDI
EDI è lo scambio tra computer di informazioni strutturate, che aderiscono a standard di messaggi, con il minimo intervento umano
Comprende:Un set di regole sintattiche per strutturare i dati Un protocollo per lo scambio interattivo Messaggi standard
Le organizzazioni che inviano o ricevono documenti sono chiamate in terminologia EDI "trading partners"
Introduzione a XML Barbara Re 48
XML ed EDI
Negli ultimi 40 anni le aziende hanno investito migliaia di miliardi (di $!) nell’automazione dei loro processi interni
Gli investimenti hanno portato ad un notevole miglioramento dell’efficienza
Questa efficienza non è ancora stata estesa ai processi esterni
Le aziende hanno creato isole di automazione, isolate dai loro partner - clienti, fornitori, etc.Le interazioni esterne sono inefficienti perché spesso basate su processi manuali
Introduzione a XML Barbara Re 49
Cosa è EDI… e cosa non è!
EDI è stata proposta come la soluzione ai problemi di integrazione fra processi di aziende diverse
EDI è interazione effettiva tra i sistemi EDI, dentro una grande corporation, è interazione
tra i processi delle diverse divisioni Cosa non è EDI
EDI non è import/export di dati fra sistemiEDI non sono i batch serali …
Introduzione a XML Barbara Re 50
Il vecchio EDI
Formati diversi per ciascuna applicazione
Il codice applicativo non ha una vista univoca
Nuovi attori hanno impatti devastanti
Introduzione a XML Barbara Re 51
Il vecchio EDI
Può soltanto condividere elementi definiti in precedenza
I nuovi bisogni non possono essere facilmente soddisfatti
Introduzione a XML Barbara Re 52
Il vecchio EDI
Ci sono notevoli differenze tra quanto promesso e le attuali implementazioni di EDI, fondamentalmente errate
Difficili e costose da implementare Richiedono soluzioni specifiche per ogni coppia di
partnerE’ come se fosse necessario disporre di una linea telefonica dedicata per ogni persona con la quale si comunicaInternet è la soluzione?
...XML può esserlo
Introduzione a XML Barbara Re 53
XML può essere la soluzione
XML è una notazione universale che consente ai sistemi di memorizzare e trasferire dati che possono essere compresi da qualunque altro sistema
Mantiene il contenuto e la strutturaSepara le business rule dai dati
Introduzione a XML Barbara Re 54
XML può essere la soluzione
Formati diversi per ciascuna applicazione
XML fornisce una singola vista logica
L’architettura flessibile supporta nuovi componenti
Introduzione a XML Barbara Re 55
Ci sono domande?