|
Lo scopo del lavoro è quello di guadagnarsi il tempo libero
|
|
| Home Page |
|
| Articoli |
|
| News |
|
| Forum |
|
| Classi |
|
|
|
|
|
Xml - eXtensible Markup Language. Introduzione
By
Marco Bonadonna
12 settembre 2005
Valutazione Acquisita:
40
|
 |
|
Questo articolo si prefigge lo scopo di introdurre al linguaggio XML, con la descrizione della sintassi di base e del Document Type Definition (DTD). Negli articoli seguenti si discuterà dell'utilizzo dei due modelli di parsing, DOM e SAX per l'interpretazione di un documento XML, con un esempio esaustivo.
|
|
|
Xml Introduzione
|
top
|
|
Un markup language è un linguaggio che permette di definire tag personalizzati per differenti classi di documenti. Il padre di tutti i metalinguaggi descrittivi è GML (Generalized Markup Language - Godfarb, Mosher & Lorie). GML venne creato dall'IBM negli anni '60 per essere usato come sistema di pubblicazione dei documenti interni che sfruttasse la standardizzazione della struttura dei documenti, semplificandone lo scambio e la modifica del contenuto. SGML (Standard Generalized Markup Language) è un potente metalinguaggio in grado di definire nuovi linguaggi di markup tramite la definizione degli elementi accettabili in un documento e le relazioni ammissibili tra gli elementi. SGML venne creato dall'IBM e adottato come ISO standard nel 1986. Rappresenta una estensione di GML per supportare architetture aperte e nuove piattaforme. Ha il vantaggio di essere estremamente potente e robusto ma lo svantaggio di essere complesso, costoso e processing overhead. HTML (HyperText Markup Language) è un markup language particolare che deriva da SGML. HTML venne sviluppato alla fine degli anni '80 dalla European Lab for Particle Physics (CERN). E' un linguaggio basato su tag usato inizialmente per pubblicare su internet documentazione tecnica e scientifica, divenuto poi lo "standard information format for the Intenet". XML (eXtensible Markup Language) è un sistema per la descrizione di strutture di dati attraverso l'uso di un set di markup tags definito dal World Wide Web Consortium (W3C). Il linguaggio XML è descritto e definito nel documento W3C Standard for XML 1.0 rilasciato il 10 - Feb - 1998 dal W3C (http://www.w3.org/TR/1998/REC-xml-19980210). L'XML venne sviluppato da un XML Working Group (conosciuto originariamente come SGML Editorial Review Board) formato sotto la supervisione del W3C nel 1996. Il gruppo era diretto da Jon Bosak della Sun Microsystems con la partecipazione attiva di un XML Specialist Interest Group (precedentemente conosciuto come SGML Working Group) organizzato dal W3C.
|
|
Gli obiettivi progettuali di XML sono
|
top
|
|
1. XML deve essere utilizzabile in modo semplice su Internet: in primo luogo, l'XML deve operare in maniera efficiente su Internet e soddisfare le esigenze delle applicazioni eseguite in un ambiente di rete distribuito. 2. XML deve supportare un gran numero di applicazioni: deve essere possibile utilizzare l'XML con un'ampia gamma di applicazioni, tra cui strumenti di creazione, motori per la visualizzazione di contenuti, strumenti di traduzione e applicazioni di database. 3. XML deve essere compatibile con SGML: questo obiettivo è stato definito sulla base del presupposto che un documento XML valido debba anche essere un documento SGML valido, in modo tale che gli strumenti SGML esistenti possano essere utilizzati con l'XML e siano in grado di analizzare il codice XML. 4. Deve essere facile lo sviluppo di programmi che elaborino documenti XML: l'adozione del linguaggio è proporzionale alla disponibilità di strumenti e la proliferazione di questi è la dimostrazione che questo obiettivo è stato raggiunto. 5. Il numero di caratteristiche opzionali deve essere mantenuto al minimo possibile: al contrario dell'SGML, l'XML elimina le opzioni, in tal modo qualsiasi elaboratore potrà pertanto analizzare qualunque documento XML, indipendentemente dai dati e dalla struttura contenuti nel documento. 6. I documenti XML dovrebbero essere leggibili da un utente e ragionevolmente chiari: poiché utilizza il testo normale per descrivere i dati e le relazioni tra i dati, l'XML è più semplice da utilizzare e da leggere del formato binario che esegue la stessa operazione; inoltre poiché il codice è formattato in modo diretto, è utile che l'XML sia facilmente leggibile da parte sia degli utenti che dei computer. 7. La progettazione di XML dovrebbe essere rapida: l'XML è stato sviluppato per soddisfare l'esigenza di un linguaggio estensibile per il Web. Questo obiettivo è stato definito dopo aver considerato l'eventualità che se l'XML non fosse stato reso disponibile rapidamente come metodo per estendere l'HTML, altre organizzazioni avrebbero potuto provvedere a fornire una soluzione proprietaria, binaria o entrambe. 8. La progettazione di XML deve essere formale e concisa: questo obiettivo deriva dall'esigenza di rendere il linguaggio il più possibile conciso, formalizzando la formulazione della specifica. 9. I documenti XML devono essere facili da creare: i documenti XML possono essere creati facendo ricorso a strumenti di semplice utilizzo, quali editor di testo normale. 10. Non è di nessuna importanza l'economicità nel markup XML: nell'SGML e nell'HTML la presenza di un tag di apertura è sufficiente per segnalare che l'elemento precedente deve essere chiuso. Benché così sia possibile ridurre il lavoro degli autori, questa soluzione potrebbe essere fonte di confusione per i lettori, nell'XML la chiarezza ha in ogni caso la precedenza sulla concisione. L'uso di tag per la rappresentazione dei dati è una caratteristica presente in altri markup language, per esempio nel linguaggio HTML (HyperText Markup Language). La differenza sta nel fatto che nell'HTML vengono utilizzati dei tag prefissati, nell'XML è possibile realizzare tag specifici per i dati che devono essere rappresentati ("eXtensible" ossia possibilità di creare facilmente nuovi tag) ed inoltre l'XML si occupa di definire la struttura dei dati, l'HTML descrive il modo in cui i dati sono rappresentati. Un esempio di file XML è il seguente:  Fig. 1 Xml - eXtensible Markup Language La rappresentazione della canzone è interamente strutturale, non ha niente a che fare con la modalità di visualizzazione della stessa. Questo proprio perché l'XML focalizza la sua attenzione sulla struttura. I dati rappresentati tramite XML possono essere facilemente estratti tramite applicazioni per la ricerca testuale. Se un documento XML deve essere interpretato da un Web browser per esempio, può essere facilmente convertito tramite un XLS style sheet. L'interpretazione di un file XML è compito dei cosiddetti XML parser, di cui si tratterà in profondità nel resto dell'articolo.
|
|
XML Sintassi
|
top
|
|
Un documento XML è costituito da elementi, ognuno dei quali ha uno start tag, un body, e un end tag. In base all'esempio di documento XML precedente: <tempo> Andante con moto </tempo> Lo start tag <tempo> consiste nel nome del tag incluso nei caratteri "<" e ">". L'end tag </tempo> è simile al tag precedente ma con un forward slash subito dopo l'apertura del tag "</" e ">". Il body consiste in tutto ciò che è compreso tra lo start tag e l'end tag. Questo può essere testo ordinario o altri elementi XML. Uno start tag può includere attributi, rappresentati nella forma nome = valore inserito dopo il nome del tag ma prima la chisura dello stesso: <traccia nome="Prima"> …. </traccia> Il valore di un attributo deve essere incluso tra singoli o doppi apici. Se il body di un elemento è vuoto, può essere utilizzata una forma abbreviata per la rappresentazione dell'elemento. In questa forma il forward slash viene incluso nella parte finale dello start tag, poco prima della sua chiusura. Le due forme seguenti sono esattamente uguali: <totale ore="0" minuti="3" secondi="22"></totale> <totale ore="0" minuti="3" secondi="22"/> Gli elementi possono essere inclusi l'uno dentro l'altro senza limiti di profondità ma gli end tag devono apparire esattamente nell'ordine opposto nel quale appaiono gli start tag. <canzone> <traccia nome="Prima"> <totale ore="0" minuti="3" secondi="22"> </totale> </traccia> </canzone> La scrittura seguente risulta errata: <B><I> Errato !!!</B></I> Per i dettagli completi riguardo la sintassi XML è possibile consultare le specifiche XML 1.0, seconda edizione, dettate nel W3C Recommendation del 6 Ottobre 2000, reperibile presso http://www.w3.org/TR/REC-xml.
|
|
Il Document Type Definition
|
top
|
|
Ragionevolmente una applicazione che utilizza un documento XML ha necessità di conoscere quali elementi costituiscono il documento, come gli elementi possono essere utilizzati, quali attributi accettano etc. Le stesse informazioni devono essere disponibili ad uno sviluppatore di un documento XML. Queste informazioni "strutturali" vengono fornite dal document type definition (DTD). Il DTD definisce quindi i tag e gli attributi presenti all'interno del documento XML. Un documento XML specifica l'utilizzo di un DTD e la locazione dello stesso tramite il tag <!DOCTYPE> immediatamente prima il document element (ossia l'elemento più esterno della struttura del documento, che contiene tutti gli altri elementi): <?xml version="1.0"?> <!DOCTYPE canzone SYSTEM "canzone.dtd"> <canzone> …… </canzone> Il DTD può anche essere incluso nel documento stesso <?xml version="1.0"?> <!DOCTYPE canzone [ …… ]> <canzone> …… </canzone> o può essere contenuto in un "public repository": <?xml version="1.0"?> <!DOCTYPE canzone PUBLIC publicId URL> <canzone> …… </canzone> Il DTD non è necessario ma, se è presente, il documento deve seguire le specifiche dettate dal DTD. In base alle specifiche XML, un documento si dice well formed se aderisce alle regole sintattiche (tutti gli elementi chiusi, tutti gli attributi inclusi tra singoli o doppi apici etc.). Se il documento ha un DTD, si considera valid se è well formed e rispetta le informazioni strutturali contenute nel DTD. Il DTD per il file XML canzone, del paragrafo precedente, è il seguente: | <!ELEMENT | canzone | (titolo?, | | | | parole-scritte-da?, | | | | musica-realizzata-da?, | | | | traccia+ ) > | | <!ELEMENT | titolo | (#PCDATA ) > | | <!ELEMENT | parole-scritte-da | (#PCDATA ) > | | <!ELEMENT | musica-realizzata-da | (#PCDATA ) > | | <!ELEMENT | traccia | (tempo,durata)* > | | <!ATTLIST | traccia | | | nome | CDATA | #IMPLIED > | | <!ELEMENT | tempo | (#PCDATA) > | | <!ELEMENT | durata | (totale?,note*) > | | <!ELEMENT | totale | EMPTY > | | <!ATTLIST | totale | | | ore | CDATA | #REQUIRED | | minuti | CDATA | #REQUIRED | | secondi | CDATA | #IMPLIED > | | <!ELEMENT | note | EMPTY > | | <!ATTLIST | note | | | lunghezza | CDATA | #IMPLIED > | | valore | CDATA | #IMPLIED > | | ottava | (1|2|3|4|5|6|7|8) | #REQUIRED > | Un DTD consiste in una lista di elementi e attributi. Ogni definizione di un elemento ne fornisce il nome, seguita da una rigorosa descrizione degli elementi che può contenere, il loro ordine, dove sono richiesti necessariamente, dove possono essere ripetuti: - Il testo ordinario viene indicato con (#PCDATA) per gli elementi, con CDATA per gli attributi. In particolare CDATA fa si che una parte del documento XML non venga interpretata letteralmente (perchè per esempio fa uso di caratteri speciali come ">" che può essere interpretato come chiusura del tag). Nell'attributo ottava dell'esempio precedente CDATA non è specificato perché tale attributo accetta solo valori interi (uno a scelta da 1 a 8).
- I sottoelementi sono elencati in ordine, separati da virgole.
- Per evidenziare la possibilità di selezionare un unico elemento fra una lista di disponibili viene utilizzato il simbolo | per rappresentare l'operatore logico OR (per esempio (totale | note), nel mio elemento potrò utilizzare o totale o note, ma non tutti e due insieme).
- I sottoelementi e le parentesi che li contengono possono essere seguiti da un simbolo di ripetizione: ? indica la presenza di zero o una occorrenza dell'elemento, * indica la presenza di zero o più occorrenze dell'elemento, + indica la presenza di una o più occorrenze dell'elemento.
- Gli elementi che non possono avere un body sono descritti con EMPTY.
- Gli attributi non necessari vengono specificati con #IMPLIED, gli attributi necessari con
#REQUIRED, gli attributi con valore di default no modificabile vengono indicati con #FIXED.
|
|
Conclusioni
|
top
|
|
In questo articolo è stata fatta una breve panoramica delle caratteristiche principali del linguaggio XML che per complessità e vastità non poteva certo essere presentato nella suo totalità, in poche righe. L'articolo deve essere considerato come punto di partenza per una eventuale ricerca approfondita. Ulteriori link per documentarsi, oltre hai collegamenti già forniti all'interno dell'articolo, sono: - The World Wide Web Consortium's XML page: http://www.w3.org/XML - Il sito di James Tauber: http://www.xmlinfo.com - Robin Cover's XML: http://www.oasis-open.org - XML.com: http://www.xml.com - La documentazione sul sito della Sun: http://java.sun.com/xml/tutorial_intro.html Nei prossimi articoli riguardanti il linguaggio XML verrà introdotto il concetto di "parsing" di un document XML, con particolare attenzione hai due modelli DOM e SAX.
|
|
|

Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons
|
|
|