XML
Da Wikipedia, l'enciclopedia libera.
L'XML, acronimo di eXtensible Markup Language, ovvero «Linguaggio di marcatura estensibile» è un metalinguaggio creato e gestito dal World Wide Web Consortium (W3C). È una semplificazione e adattamento dell'SGML, da cui è nato nel 1998, e permette di definire la grammatica di diversi linguaggi specifici derivati.
Indice |
[modifica] A cosa serve l'XML
Rispetto all'HTML, l'XML ha uno scopo ben diverso: mentre il primo è un linguaggio creato principalmente per la descrizione e la formattazione di pagine web e, più in generale, di ipertesti, il secondo è un meta linguaggio utilizzato per creare nuovi linguaggi, atti a descrivere documenti strutturati. Mentre l'HTML ha un insieme ben definito e ristretto di tag, con l'XML è invece possibile definirne di propri a seconda delle esigenze.
L'XML è oggi molto utilizzato anche come mezzo per l'esportazione di dati tra diversi DBMS.
[modifica] Sintassi
Prima di proseguire ecco un esempio tipico di file XML. Questo esempio è visualizzabile all'interno di un browser qualsiasi semplicemente salvando il testo in un file con estensione .xml.
<?xml version="1.0" encoding="ISO-8859-1"?> <utenti> <utente> <nome>Luca</nome> <cognome>Ruggiero</cognome> <indirizzo>Milano</indirizzo> </utente> <utente> <nome>Max</nome> <cognome>Rossi</cognome> <indirizzo>Roma</indirizzo> </utente> </utenti>
La prima riga indica la versione di XML in uso e specifica la codifica ISO per la corretta interpretazione dei dati. L'XML non riconosce i caratteri speciali all'interno di una sua struttura: le lettere accentate, la & (e commerciale) ed altri vanno quindi sostituiti con le rispettive sequenze Unicode.
[modifica] I tag
L'XML, come l'HTML, utilizza dei marcatori, detti tag, per assegnare una semantica al testo. L'XML è molto rigido sulla sintassi da seguire rispetto all'HTML ed è pertanto necessario rispettare alcune regole: i tag non possono iniziare con numeri o caratteri speciali e non possono contenere spazi; i tag devono essere bilanciati, ovvero non sono consentiti errori di annidamento, ad esempio:
<rubrica> <nome>Mario</nome> <cognome>Rossi </rubrica>
Il tag cognome non è stato chiuso, l'XML risulta quindi non valido.
<rubrica> <nome>Mario</nome> <cognome>Rossi </rubrica></cognome>
Il tag cognome è stato chiuso dopo il tag rubrica, anche in questo caso l'XML non è valido.
<rubrica> <nome>Mario</nome> <cognome>Rossi</COGNOME> </rubrica>
XML è case sensitive quindi il tag cognome e il tag COGNOME sono considerati come due tag diversi; l'XML ancora una volta è non valido.
E' possibile anche definire tag vuoti che vengono aperti e immediatamente chiusi:
<rubrica></rubrica>
Oppure in maniera abbrieviata:
<rubrica />
Per poter essere correttamente interpretato da un browser, un documento XML deve essere ben formato, deve cioè possedere le seguenti caratteristiche:
- Un Prologo, che è la prima istruzione che appare scritta nel documento. Nel nostro caso: <?xml version="1.0" encoding="ISO-8859-1"?>
- Un unico Elemento radice (ovvero il nodo principale) che contiene tutti gli altri nodi del documento. Nel nostro esempio: <utenti>
- All'interno del documento tutti i Tag devono essere bilanciati.
[modifica] XML Well Formed e Valid
Un documento XML viene considerato Well Formed se non contiene errori di sintassi, tutti tag sono bilanciati ed esiste un unico nodo radice che contiene tutti gli altri. Se il documento è well formed e in più rispetta i requisiti strutturali definiti nel DTD o nell'XML Schema si dice Valid.
[modifica] Strumenti aggiuntivi per l'XML
L'XML non si esaurisce qui: esistono diversi strumenti legati all'XML, ognuno con uno scopo differente:
- DTD (acronimo di Document Type Definition): è un documento attraverso cui si specificano le caratteristiche strutturali di un documento XML attraverso una serie di "regole grammaticali". In particolare definisce l'insieme degli elementi del documento XML, le relazioni gerarchiche tra gli elementi, l'ordine di apparizione nel documento XML e quali elementi e quali attributi sono opzionali o meno.
- XML Schema: come la DTD, serve a definire la struttura di un documento XML. Oggi il W3C consiglia di adottarlo al posto della DTD stessa, essendo una tecnica più nuova ed avanzata. La sua sigla è XSD, acronimo di XML Schema Definition.
- XLink: serve a collegare in modo completo due documenti XML; al contrario dei classici collegamenti ipertestuali che conosciamo in HTML, XLink permette di creare link multidirezionali e semanticamente avanzati.
- XSL (acronimo di eXtensible Stylesheet Language): è il linguaggio con cui si descrive il foglio di stile di un documento XML. La sua versione estesa è l'XSLT (dove la T sta per Trasformations).
- XPath: è un linguaggio con cui è possibile individuare porzioni di un documento XML e sta alla base di altri strumenti per l'XML come XQuery.
A supporto di questo scopo principale, fornisce anche elementari funzionalità per trattare stringhe, numeri e dati booleani. Il suo funzionamento si basa sulla creazione di un albero a partire dal documento e la sintassi succinta permette di indirizzare una specifica parte attraverso i nodi dell'albero con la semplice parola path.
- XPointer: serve ad identificare univocamente precise porzioni di un documento XML; consente poi il loro accesso ad altri linguaggi o oggetti di interfaccia.
- XQuery: è un linguaggio di query concepito per essere applicabile a qualsiasi sorta di documento XML e si basa sull'utilizzo di XPath per la specificazione di percorsi all'interno di documenti. XQuery ha funzionalità che consentono di poter attingere da fonti di dati multiple per la ricerca, per filtrare i documenti o riunire i contenuti di interesse.
- SAX (Simple API for XML): è un'interfaccia di programmazione, implementata in numerosi linguaggi, che permette di leggere e modificare i documenti XML. Attraverso SAX è possibile implementare dei parser XML specifici. SAX è event base, al contrario di DOM, e reagisce agli eventi di parsing facendo rapporto all'applicazione. È compito del programmatore implementare i metodi per reagire agli eventi di parsing.
- DOM: è un'interfaccia di programmazione, come SAX, implementata in una moltitudine di linguaggi di programmazione, per la manipolazione di file XML. DOM costruisce partendo dal file XML un albero dove ogni nodo dell'albero corrisponde ad un elemento del file; per questo motivo è detta tree based.
- VTD-XML
DOM è più facile ed immediata da utilizzare rispetto a SAX ed è pertanto preferita solitamente dai programmatori per manipolare un file XML; purtroppo l'albero generato da DOM va mantenuto completamente nella memoria RAM e di conseguenza non è possibile utilizzare questa interfaccia per manipolare file che siano più grandi della memoria disponibile sul computer.
- XForms: come il suo nome lascia intendere, è un linguaggio nato per creare moduli (forms) di tipo HTML all'interno di un documento XML.
- RSS: è uno standard che serve a creare un documento con una struttura di tipo XML univoca, atta allo sviluppo di un semplice scambio dati tra pagine Web ed accessibile da qualsiasi linguaggio di scripting. In sostanza si tratta di un documento XML la cui struttura dei nodi ed i relativi tag hanno lo stesso nome.
- SVG (Scalable Vector Graphics): è uno standard per la creazione di immagini vettoriali che sfrutta dei documenti formattati in XML. Serve inoltre a descrivere immagini bidimensionali, statiche e dinamiche. Leggendo le istruzioni contenute nel documento sorgente XML, l'interprete disegna le figure-base fino al completamento dell'immagine.
[modifica] XML e le pagine web: XHTML
L'HTML tradizionale non è un vero standard data la sua eccessiva flessibilità ed il suo funzionamento immutato anche in presenza di errori semantici, sintattici e grammaticali. Ad affiancarlo c'è XHTML, ovvero l'HTML tradizionale basato su XML, con la sua struttura rigida e con le sue stesse regole.
Ad esempio in XHTML, al contrario che in HTML tradizionale, i tag vuoti vanno chiusi con uno slash (/) finale, gli attributi vuoti devono essere valorizzati con true o false, la chiusura dei tag dev'essere a specchio (se viene aperto un Tag e prima di chiuderlo ne viene aperto un altro, è necessario chiudere prima il secondo tag e poi il primo), molti Tag e molti attributi sono scomparsi, i caratteri speciali vanno gestiti, insieme ad altre peculiarità, ma soprattutto esiste una DTD dedicata.
Una pagina XHTML (ovvero un codice XHTML, dato che l'estensione della pagina prescinde dal codice in questo caso) non funziona se scritta scorrettamente e inviata con il mime type corretto (application/xhtml+xml). Quando è inviata come text/html funziona perché viene interpretata come html (con degli errori, quali i tag chiusi come <br />) solo che non rispetta lo standard e non gode dei suoi vantaggi, primo tra i quali la portabilità su browser e client differenti.[1]
[modifica] Voci correlate
[modifica] Altri progetti
[modifica] Collegamenti esterni
[modifica] Documentazione
- Guida su XML
- Manuale e Tutorial XML
- XML: un linguaggio estensibile per il World Wide Web
- Corso su XML
- (EN) W3C Documentation
- (EN) XML-DEV Mailing List
- Introduzione a XBRL: eXtensible Business Reporting Language
- Corso di XML all'Università di Catania
- XeML.net - XML Tutorial (EN)
[modifica] Editor
- (EN) <Editix> editor XML (prodotto commerciale)
- (EN) <oXygen> editor XML (prodotto commerciale)
- (EN) <Stylus Studio> editor XML (prodotto commerciale)
- (EN) <XMLSpy> editor XML (prodotto commerciale)
- (EN) XML Document Authoring Tools