Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium (W3C) a metà degli anni ’90 XML è un «metalinguaggio» che consente di definire altri linguaggi E’ uno strumento utilizzato principalmente per definire: - documenti con marcatori in cui i tag non sono predefiniti - collezioni di dati semi-strutturati rappresentati in formato testuale. È lo standard più utilizzato per l’interscambio di documenti prodotti con applicazioni software diverse e di dati tra DBMS di diversi produttori. A differenza di HTML, XML è un linguaggio finalizzato solo alla memorizzazione e all’interscambio di dati, non alla loro visualizzazione
Il seguente file di testo è un documento XML che rappresenta gli indirizzi di posta elettronica e le password degli utenti di un sistema informatico: Pippo 0A1B2C3D4E5F Pluto A9B8C7D6E5F4
I documenti in formato XML hanno una struttura ad albero Esempio: struttura ad albero del documento XML precedente Pippo 0A1B2C3D4E5F Pluto A9B8C7D6E5F4
Sintassi dell’XML 1.riga iniziale: 2.tag iniziano con caratteri alfabetici o _ (es.:Sì:,, NO:, ) 3.tag: solo simboli alfanumerici. Ammessi: “-” “_” “.” NO spazi. 4.chiusura tag obbligatoria: 5.nidificazione tag gerarchica, es: tutto il documento XML deve essere compreso in unico tag radice aperto e chiuso,es:... 7.i tag possono avere attributi, i cui valori sono compresi tra apici o doppi apici, es: ciao 8.commenti compresi tra 9.simboli chiave: << >> && “" ‘'
Giorgio Fiorenzo C'erano molti alunni a scuola? Esempio: documento XML che rappresenta un messaggio SMS Qui l’elemento radice è MESSAGE; timestamp è un suo attributo Un elemento XML è ciò che è compreso tra un tag di apertura e il corrispondente tag di chiusura. Un elemento può contenere: testo (es.: gli elementi from,to, text contengono testo) attributi (es.: l’elemento MESSAGE contiene l’attributo timestamp) altri elementi (es.: l’elemento MESSAGE contiene tre elementi: from, to, text) nulla (elemento vuoto) (es: )
Sintassi abbreviata per elementi vuoti: ( anziché ) Attributo predefinito xml:lang per specificare la lingua usata in un elemento (possibili valori: it,es,en,fr,de, ecc.) Giorgio Fiorenzo Giorgio Fiorenzo C'erano molti alunni a scuola? La riga: equivale a:
Per qualificare il contenuto di un elemento come CDATA (Character Data) lo si inserisce tra Giorgio Fiorenzo <!CDATA[ Ti invio un esempio di XML:... ]]> In questo modo il contenuto dell’elemento non viene analizzato. Ad esempio così è possibile inserire del codice HTML all’interno di un elemento in un file XML.
Se nel documento XML ci sono caratteri non standard ASCII (es.caratteri accentati), bisogna specificare il tipo di codifica utilizzata. Windows-1252Codifica a 8 bit dei caratteri dell’Europa occidentale adottata dai sistemi operativi Windows ISO Codifica standard a 8 bit dei caratteri dell’Europa occidentale UTF-8Codifica Unicode che utilizza da 8 a 32 bit per il singolo carattere UTF-16Codifica Unicode che utilizza 16 bit per il singolo carattere adottata dal linguaggio Java Giorgio Fiorenzo Perché... più di così...
E’ sempre possibile rappresentare la struttura di un documento XML mediante un diagramma ad albero Stefano Benni Terra! Feltrinelli 1983
Un documento XML che rispetta le regole sintattiche di base è denominato ben formato La verifica del rispetto delle regole sintattiche di un documento XML può essere effettuata utilizzando specifici strumenti software: molti browser o editor specializzati per programmatori sono in grado di verificare che un documento XML sia ben formato. All’URL validator.w3.org è disponibile uno strumento utilizzabile on-line per la verifica sintattica di documenti XML e di pagine HTML. Anche se un documento XML è ben formato (cioè sintatticamente corretto) rimane il problema di verificare che impieghi effettivamente i tag previsti e in modo corretto; inoltre il contenuto di un elemento rappresenta spesso un dato che deve rispettare regole di tipizzazione.
Perché un documento XML sia ben formato deve rispettare le seguenti regole: 1.Ogni documento XML deve contenere un unico elemento di massimo livello (root) che contenga tutti gli altri elementi del documento. Le sole parti di XML che possono stare all'esterno di questo elemento sono i commenti e le direttive di elaborazione (per esempio, la dichiarazione della versione di XML) 2.Ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>) 3.Gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l'ordine inverso dei rispettivi tag di apertura 4.XML fa distinzione tra maiuscole e minuscole, per cui i nomi dei tag e degli attributi devono coincidere nei tag di apertura e chiusura anche in relazione a questo aspetto 5.I valori degli attributi devono sempre essere racchiusi tra singoli o doppi apici
... abcdefghi... </testo Nel codice XML seguente ci sono diversi errori e il documento pertanto non né ben formato.
Stefano Benni Terra! Feltrinelli 83 Mark Twain Le avventure di Huckleberry Finn 1884 Herman Melville Moby Dick milleottocentocinquantuno Il seguente documento XML che rappresenta una collezione di libri è ben formato Tuttavia i dati relativi ai singoli libri non sono presenti in modo coerente. Riesci a individuare le 5 anomalie? (Se no, fai click) libro 3: elemento editore vuoto libro 3: l’anno è espresso in caratteri libro 2: manca elemento editore libro 2: usa il tag anziché libro 1: l’anno è in forma abbreviata
Per evitare i problemi dell’esempio precedente, ci vuole un metodo per: a)definire la struttura che un dato documento XML deve avere; b)definire la tipologia che i dati contenuti negli elementi devono rispettare. Il metodo più comune per definire uno schema di validazione per un documento XML è XSD (XML Schema Definition). Uno schema XSD definisce: gli elementi di un documento XML e la loro relazione gerarchica; gli eventuali attributi degli elementi; il numero e l’ordinamento degli elementi; gli eventuali elementi vuoti; il tipo dei dati contenuti negli elementi e negli attributi; i valori predefiniti o costanti del contenuto degli elementi e degli attributi. Note: il linguaggio XSD per definire lo schema è a sua volta un linguaggio XML prima di XSD si usava DTD (Document Type Definition), che però presenta diverse limitazioni
Un possibile schema XSD per un documento XML che rappresenta un singolo libro potrebbe essere il seguente: Se il precedente schema XSD è salvato nel file libro.xsd, un documento XML che si attiene a tale schema potrebbe essere il seguente: <libro xmlns:xsi=" xsi:noNamespaceSchemaLocation="libro.xsd"> Stefano Benni Terra! Feltrinelli 1983
Progettare un linguaggio XML significa definirne lo schema, cioè la sintassi che un qualsiasi documento XML deve rispettare per appartenere al linguaggio. Un documento XML valido è un documento XML ben formato che rispetta le regole dello schema che riferisce. La validazione di un documento XML rispetto allo schema riferito viene normalmente effettuata mediante strumenti software automatici (es.: software open source XSV)
Il successo di XML è legato alla sua flessibilità: spesso le aziende e gli sviluppatori software definiscono schemi XML per i file che costituiscono l’input o l’output delle applicazioni che realizzano. Per esempio, i formati dei file prodotti dalle applicazioni Office di Microsoft sono in formato XML (docx, xslx, ecc.) CML (Chemical Markup Language), che è usato per la definizione di strutture molecolari; EPUB (Electronic Publication), che è un formato aperto per la pubblicazione di e-book; GML (Geographic Markup Language) In alcuni casi sono stati definiti dei veri e propri linguaggi XML aventi scopi specifici; tra questi ricordiamo:
Il linguaggio di programmazione Java prevede una API (Application Program Interface) standard per la gestione di documenti XML denominata JAXP (Java API for XML Processing). Le classi del package JAXP consentono di effettuare le seguenti elaborazioni: validazione di un documento XML rispetto a uno schema XSD; produzione di un nuovo documento XML ed eventuale salvataggio in un file di testo; lettura di un documento XML contenuto in un file di testo o reso disponibile come risorsa in rete ed eventuale verifica della correttezza; trasformazione di un documento XML La lettura di un documento XML in una struttura dati che è possibile gestire da parte del codice di un programma è tecnicamente definita parsing.
Il parsing di un documento XML può avere 2 modalità: SAX (Simple API for XML) DOM (Document Object Model) I package JAXP consentono di effettuare il parsing sia con modalità SAX che con modalità DOM SAX lettura sequenziale del documento non consente di modificare il documento analizzato più efficiente ma piuttosto rigido DOM memorizzazione dell’intero albero del documento maggiore flessibilità consente di modificare il documento analizzato e/o costruirne uno nuovo richiede molta più memoria