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.
[modifica] A cosa serve l'XML
Rispetto all'HTML, l'XML ha uno scopo ben diverso: mentre il primo è un linguaggio per la realizzazione della struttura di template di pagine Web, il secondo è un linguaggio utile allo scambio dei dati, quindi di back-office e non di front-office, o di esposizione che dir si voglia.
Per scambio dei dati si intende la conservazione in una struttura XML di dati presi, presumibilmente, da un database o da altre fonti, oppure memorizzati direttamente all'interno di una struttura XML.
[modifica] Sintassi
Prima di proseguire e di capire meglio, ecco un esempio tipico di file XML. Lo si può visualizzare su un browser qualsiasi semplicemente salvandolo in un file di testo, poi rinominandolo con estensione .xml.
<?xml version="1.0" encoding="ISO-8859-1"?> <utenti> <utente> <nome>Luca</nome> <cognome>Ruggiero</cognome> </utente> <utente> <nome>Max</nome> <cognome>Rossi</cognome> </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
La struttura vera e propria dell'XML è composta dai tag creati dallo sviluppatore, che hanno due caratteristiche: (1) Devono essere comprensibili in funzione dello scopo del tag stesso (onde evitare di non capirci nulla ad una seconda lettura e per facilitare la comprensione agli altri utenti); (2) Devono rispettare delle regole, come la differena tra maiuscolo e minuscolo; non possono iniziare con numeri o caratteri speciali e non possono contenere spazi. In generale si devono rispettare le regole di assegnazione dei nomi alle variabili comuni a tutti i linguaggi di programmazione.
Ogni record, per dirla in termini familiari a chi vuol pensare ad XML come ad un database, viene chiamato nodo ed ogni tag può essere corredato da attributi. Ad esempio, la struttura precedente può essere modificata come segue:
<?xml version="1.0" encoding="ISO-8859-1"?> <utenti> <utente nome="Luca" cognome="Ruggiero" /> <utente nome="Ruggiero" cognome="Rossi" /> </utenti>
I tag che non hanno l'omonimo tag di chiusura vanno chiusi con uno slash (/) finale, prima della fine del tag stesso. Per maggiore compatibilità con i browser più vecchi è preferibile far precedere lo slash da uno spazio, come indicato nell'esempio qui sopra.
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 chiusi. Per esempio: il tag <html> va chiuso con </html>, anche il tag <br> deve essere chiuso con </br>, o in questo caso più semplicemente possiamo scrivere <br/>.
[modifica] Accesso ad un file XML
Questa struttura non ha interfaccia ma è accessibile da qualsiasi linguaggio di programmazione Web (sia lato server che lato client) o meno. Il rispetto delle regole esposte in precedenza ed il fatto che questi dati saranno accessibili, in una semplice struttura, a qualsiasi tipo di applicazione, locale o remota, fanno dell'XML uno standard che si caratterizza per la sua portabilità.
L'accesso ad una struttura XML può avvenire attraverso diversi sistemi, il più comune ma rudimentale dei quali è lo sfruttamento del filesystem del server su cui gira il motore del linguaggio in uso.
Ogni linguaggio ha poi dei suoi componenti di tipo ActiveX oppure delle classi native per l'accesso ad una struttura XML: Microsoft, ad esempio, mette a disposizione di ASP e di Visual Basic l'oggetto XMLDOM (acronimo di XML Document Object Model) mentre altri come Java e PHP hanno, rispettivamente, delle classi e dei packages dedicati allo scopo.
Stesso discorso per la piattaforma .NET che ha integrato oggetti e funzioni che supportano nativamene XML.
[modifica] Linguaggi derivati dall'XML
L'XML non si esaurisce qui: esistono diversi linguaggi basati sull'XML, ognuno con uno scopo differente, ma derivato e legato in qualche modo ad esso. In questo paragrafo li passeremo in esame tutti, senza omettere qualche riga di spiegazione sul loro scopo.
- DTD (acronimo di Document Type Definition): è il linguaggio che specifica le caratteristiche del tipo di documento 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 grammatica del 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: è una tecnologia legata ad XSL ed XSLT ed il suo scopo, attraverso un linguaggio semplice ma potente, è quello di recuperare e gestire i nodi di un documento XML. Mette a disposizione anche una serie di funzioni predefinite che effettuano una pseudo gestione delle stringe basate sul principio delle espressioni regolari e finalizzate allo scopo per cui XPath esiste.
- XPointer: serve ad identificare univocamente precise porzioni di un documento XML; consente poi il loro accesso ad altri linguaggi o oggetti di interfaccia.
- XQuery: serve per effettuare ricerche all'interno di un documento XML; viene definito come una sorta di SQL per XML. Non trattandosi di un compito semplice, è sempre soggetto a cambiamenti ed implementazioni da parte degli organi che lavorano al suo sviluppo, primo tra i quali il W3C.
- SAX (Simple API for XML): è un'interfaccia di programmazione, implementabile in numerosi linguaggi, che permette di leggere e modificare i documenti XML.
- 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 apro un Tag e prima di chiuderlo ne apro un altro, devo 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) funziona comunque anche se scritta scorrettamente, solo che non rispetta lo standard e non gode dei suoi vantaggi, primo tra i quali la portabilità su browser e client differenti.
[modifica] W3C e XML
Qui di seguito si trova la traduzione di un articolo in inglese edito dal W3C. Il documento originale (rivisto il 13 novembre 2001) è disponibile qui.
[modifica]
L'XML in dieci punti
XML, XLink, Namespace, DTD, XML Schema, CSS, XHTML ... Se non conosci l'XML, può essere difficile capire da dove cominciare. Questo elenco in 10 punti cerca di catturare sufficienti concetti base per far vedere al neofita la foresta in mezzo agli alberi. E se stai preparando una presentazione sull'XML, perché non iniziare con questi 10 punti?
[modifica] 1. XML serve a strutturare i dati
I dati strutturati modellano entità come fogli di calcolo, rubriche, parametri di configurazione, transazioni finanziarie e disegni tecnici. XML è un insieme di regole (puoi anche pensare che siano delle linee guida o delle convenzioni) per formulare dei file in formato testo che ti permettano di strutturare i tuoi dati. XML non è un linguaggio di programmazione, e non devi essere un programmatore per usarlo od impararlo. XML rende facile la generazione di dati tramite un computer, la lettura dei dati e il controllo sulla struttura in modo che non sia ambigua. XML evita le pecche comuni dei linguaggi: è estensibile, indipendente dalla piattaforma e supporta i parametri internazionali e locali. Inoltre è pienamente compatibile con Unicode.
[modifica] 2. XML assomiglia un po' all'HTML
Come HTML, XML (eXtensible Markup Language) fa uso di tag (parole racchiuse tra le parentesi angolari < e >) e attributi (della forma name="value"). Mentre HTML specifica come il testo e le altre componenti di layout debbano essere visualizzati in un browser, XML usa i tag solo per delimitare pezzi di dati, lasciandone completamente l'interpretazione all'applicazione che li legge. In altre parole, se si vede <p> in un file XML, non si è sicuri che esso sia un paragrafo. A seconda del contesto, potrebbe essere un prezzo, un parametro, una persona, una p... (e chi l'ha detto che dev'essere una parola con la "p"?).
[modifica] 3. L'XML è un testo, ma non da leggere
I programmi che producono fogli di calcolo, rubriche e altri dati strutturati, spesso salvano i dati sul disco, usando sia il formato binario che quello testuale. Uno dei vantaggi del formato testo è che permette, se necessario, di dare un'occhiata ai dati pur non disponendo del programma che li ha prodotti; all'occorrenza, si può leggere un file con il proprio editor di testi preferito. Inoltre i formati testo permettono agli sviluppatori un debug più semplice delle applicazioni. Come l'HTML, i file XML sono file di testo che non è necessario leggere, tranne quando non ne sorga il bisogno. Confrontate con l'HTML, le regole per i file XML permettono pochissime variazioni. Un tag dimenticato, o un attributo senza virgolette rendono il file XML inutilizzabile, mentre in HTML tali pratiche sono spesso esplicitamente permesse. Le specifiche ufficiali dell'XML proibiscono alle applicazioni di tentare di indovinare cosa intendesse il creatore di un file non utilizzabile; se il file non è corretto, una applicazione deve fermarsi e segnalare l'errore.
[modifica] 4. XML è troppo prolisso per la progettazione
Poiché XML è un formato di testo e usa i tag per delimitare i dati, i file XML sono praticamente sempre più grandi degli analoghi file in binario. Questa è stata una decisione presa coscientemente dagli sviluppatori dell'XML. I vantaggi del formato testo sono evidenti (vedi il punto precedente), e gli svantaggi possono solitamente essere compensati a livelli diversi. Lo spazio su disco diventa sempre meno costoso ed i programmi di compressione come zip e gzip sono in grado di ridurre lo spazio occupato dai file in maniera efficiente. Inoltre, i protocolli di comunicazione usati tra dispositivi di rete (come il protocollo PPP usato nella connessione del modem ad internet, o l'HTTP), possono comprimere i dati al volo, risparmiando banda esattamente come per i file binari.
[modifica] 5. XML è una famiglia di tecnologie
XML 1.0 è la specifica che definisce cosa sono i "tag" e gli "attributi". Oltre ad XML 1.0, "la famiglia XML " è un insieme in crescita costante di moduli che offrono servizi utili per attività importanti e comunemente eseguite. XLink descrive una modalità standard per aggiungere collegamenti ipertestuali ad un file XML. XPointer è una sintassi in sviluppo per puntare a parti di un documento XML; un XPointer è simile ad un URL, ma invece di puntare a un documento sul web, punta a porzioni di dati all'interno di un file XML. Il CSS, il linguaggio dei fogli di stile, è applicabile all'XML così come all'HTML. XSL è il linguaggio avanzato per scrivere i fogli di stile; XSL è basato su XSLT, un linguaggio di trasformazione usato per riarrangiare, aggiungere e cancellare tag e attributi. Il DOM è un insieme standard di funzioni impiegato per manipolare i file XML (e HTML) da un linguaggio di programmazione. XML Schemas 1 e 2 aiutano gli sviluppatori a definire precisamente le strutture basate sui loro propri formati XML. Ci sono ancora un'infinità di moduli e strumenti disponibili o in fase di sviluppo. Date un occhio alla W3C's technical reports page.
[modifica] 6. XML è nuovo, ma poggia su solide radici
Lo sviluppo dell'XML è iniziato nel 1996 ed è una W3C Recommendation dal febbraio 1998, la qual cosa può far sospettare che sia una tecnologia piuttosto immatura. Infatti, la tecnologia non è molto nuova. Prima di XML c'era SGML, sviluppato nei primi anni 80, standard ISO dal 1986, e ampiamente usato per progetti di documentazione. Lo sviluppo dell'HTML è iniziato nel 1990. Gli sviluppatori dell'XML semplicemente presero le parti migliori dell'SGML, guidati dall'esperienza fatta con l'HTML, e produssero qualcosa che non è meno potente dell'SGML, ma molto più regolare e facile da usare. Alcune evoluzioni, tuttavia, sono difficili da distinguere dalle rivoluzioni... E bisogna dire che mentre SGML è soprattutto usato per la documentazione tecnica e meno per gli altri tipi di dati, con XML è esattamente l'opposto
[modifica] 7. XML porta dall'HTML all'XHTML
Esiste un'importante applicazione dell'XML che è un formato di documento: l'XHTML del W3C, il successore dell'HTML. XHTML ha molti elementi analoghi all'HTML. La sintassi è stata leggermente cambiata per conformarsi alle regole dell'XML. Un formato che sia basato su XML eredita la sintassi dall'XML e in un certo modo la restringe (ad es., XHTML permette <p>, ma non <r>); inoltre aggiunge significato alla sintassi (l'XHTML dice che <p> sta per "paragrafo", e non per "prezzo", "persona", o altro).
[modifica] 8. XML è modulare
XML permette di definire un nuovo formato di documento combinando o riutilizzando altri formati. Poiché due formati sviluppati indipendentemente possono avere elementi o attributi con lo stesso nome, occorre prestare attenzione quando si combinano quei formati (<p> significa "paragrafo" secondo questo formato o "persona" come nell'altro?). Per eliminare la confusione sui nomi durante l'unione dei formati, XML fornisce un meccanismo di namespace. XSL e RDF sono buoni esempi di formati basati su XML che usano i namespace. XML Schema è studiato per rispecchiare questo supporto per la modularità al livello di definizione delle strutture del documenti, rendendo facile combinare due schemi per produrne un terzo che comprenda una struttura di documento unione delle due.
[modifica] 9. XML è la base per l'RDF e il Web Semantico
Il Resource Description Framework (RDF) del W3C è un documento formatato con standard XML che supporta la descrizione di risorse e applicazioni che trattano metadati come liste musicali, album di foto e bibliografie. Ad esempio, RDF potrebbe permettere di identificare una persona su un album fotografico sul Web usando delle informazioni prese dalla lista personale di contatti; poi il client di posta potrebbe automaticamente inviare un messaggio a queste persone dicendo che le loro foto sono sul Web. Come HTML ha integrato documenti, immagini, sistemi a menu e form per lanciare il Web originale, RDF fornisce strumenti per integrare anche di più, per avvicinare il Web ancora un po' al Web Semantico. Esattamente come le persone devono accordarsi sul significato delle parole che impiegano nelle loro comunicazioni, i computer necessitano di meccanismi per accordarsi sul significato dei termini in modo da comunicare effettivamente. Le descrizioni formali dei termini in certe aree (acquisti o settore manufatturiero, ad esempio) sono dette ontologie e sono una parte necessaria del Web Semantico. RDF, ontologie e la rappresentazione del significato in modo che possano aiutare le persone a fare dei lavori, sono tutti argomenti della Semantic Web Activity.
[modifica] 10. XML è gratis, portabile e ben supportato
Scegliendo XML come base per un processo, si guadagna l'accesso ad un'ampia comunità in espansione di strumenti (uno dei quali potrebbe già fare quello che desideri!) e ingegneri con esperienza nella tecnologia. Optare per l'XML è un po' come scegliere SQL per le basi di dati: devi ancora costruire il tuo database, i tuoi programmi e le procedure che lo manipolano, ma ci sono molti strumenti disponibili e molte persone che ti possono aiutare. E poiché XML è gratis, puoi costruirci il tuo software senza pagare niente a nessuno. Il grande e crescente supporto significa che non sei vincolato ad un unico venditore. XML non è sempre la miglior soluzione, ma vale sempre la pena di prenderlo in considerazione.
[modifica] Verificatore W3C
Il W3C permette la validazione del codice XHTML all'indirizzo http://validator.w3.org/
[modifica] Collegamenti esterni
[modifica] Documentazione
- Guida su XML
- Manuale e Tutorial XML
- XML: un linguaggio estensibile per il World Wide Web
- (EN) W3C Documentation
- (EN) XML-DEV Mailing List