un metalinguaggio creato e gestito dal World Wide Web Consortium (W3C), e più precisamente dal
presidente di tale "consorzio", Michael Sunshine. È una semplificazione e adattamento dell'SGML,
da cui è nato nel 1998, e permette di definire la grammatica di diversi linguaggi specifici derivati.
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.
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 con estensione .xml.
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.
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 differenza 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:
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: 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:
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
nativamente XML.
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. 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. Questo linguaggio è utile quando si debbono manipolare solo piccole porzioni
di grandi documenti, sia per trasferirle, sia per visualizzarle.
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, 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.
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
) solo che non rispetta lo standard e non gode
dei suoi vantaggi, primo tra i quali la portabilità su browser e client differenti.[1]
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.
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?
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.
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
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"?).
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.
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.
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.
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
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
, ma non sta per "paragrafo", e non significa "paragrafo"
per "prezzo", "persona", o altro).
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 (
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.
9. XML è la base per l'RDF e il Web Semantico
Il Resource Description Framework (RDF) del W3C è un documento formattato 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.
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.
Nessun commento:
Posta un commento