Rapida introduzione
a XML
Extensible Markup
Language , rappresenta un sotto-set del SGML , così come l'HTML
con il quale condivide anche la struttura a tag. Ma qui si fermano le similitudini.
Rispetto a HTML, XML è infatti infinitamente più estensibile
e preciso ( non è ad esempio ammessa la non chiusura di un tag che
invece la richieda, come invece avviene in HTML).
Il 10 Febbraio
1998 il W3C ha pubblicato lo standard XML 1.0, che si è ben presto
conquistato un posto di rilievo come formato di scambio dati universale.
Ma più di qualsiasi spiegazione, vale una piccola porzione di codice
XML :
10
<?xml version="1.0"?>
20 <Articolo>
30 <Titolo>
XML & Java </Titolo>
40 <Autore>
M. Molino </Autore>
50 <Rivista>
MokaByte </Rivista>
60 </Articolo>
Come è possibile
vedere, XML permette di definire dei propri tag, consentendo così
di strutturare in maniera estremamente precisa i propri dati. Vediamo una
rapida spiegazione del codice appena visto; alla riga 10 abbiamo la dichiarazione
XML, che specifica la versione XML utilizzata. Non è obbligatoria
, ma è buona norma inserirla ugualmente.
Le righe successive
definiscono degli elementi, e nel caso specifico abbiamo una struttura
composta, in quanto l'elemento <Articolo> contiene a sua volta degli
altri elementi. Gli elementi rappresentano solo una delle classi di tag
presenti in XML. Ad esmpio la riga 10 rappresenta una istruzione di processo
(processing instruction), altra classe di tag.
Scopo di questi
articoli non è quello di addentrarsi nella struttura di XML, ma
di vederne alcuni aspetti utili alla comprensione dell'interazione tra
XML stesso e Java, per cui in questa sede non andremo oltre per ciò
che riguarda le specifiche XML. Per chi fosse interessato ad approfondire
il linguaggio, nella bibliografia di questo articolo ho indicato alcuni
link a mio parere interessanti al riguardo.
L'approccio
degli scettici è che si, la tecnologia XML è interessante,
ma quale può essere l'utilizzo reale, e a cosa serve poter definire
nuovi tag quando il browser utilizzato non li riconosce ? La chiave sta
nelle applicazioni associate a XML. Un programma che debba gestire un documento
XML saprà esattamente cosa fare con i vari tag. Ad esempio, un programma
che dovesse visualizzare il documento in formato HTML, avrà la corrispondenza
precisa del tag <Titolo> con il o i corrispondenti HTML, che potrebbero
riguardare il font, le dimensioni etc., mentre un programma che dovesse
inserire i dati in un database, avrebbe la corrispondenza fra lo stesso
tag <Titolo> e il campo di database in cui salvare il dato.
Ma i tag <Articolo>,
<Titolo> etc. da dove vengono fuori ? Molto semplicemente li abbiamo
creati noi. In pratica abbiamo creato un nostro piccolo linguaggio XML.
E' anche possibile definire quali elementi formino un documento valido.
Questo viene fatto mediante la creazione di un DTD ( Document Type Definition).
Per ora non tratteremo i DTD, però ricordiamoci che questi rappresentano
un punto importante nella tecnologia XML e permettono un maggior controllo
sul documento XML.
XML vs HTML
-
Ma cosa c'è
che non và nell'HTML ? E' semplice da imparare, portabile, permette
di integrare oggetti diversi come ActiveX e JavaBean , etc. Vero, però
ci sono fra i vari difetti soprattutto due che lo rendono inadatto alla
gestione avanzata di dati:
E' orientato
alla visualizzazione e non al trattamento dei dati. I tag servono a definire
un formato di visualizzazione del dato, non ne permettono una classificazione
o manipolazione.
Partito come
snello linguaggio per lo scambio dei dati , è diventato sempre più
grosso, perdendo le pregresse doti di eleganza e semplicità.
Soprattutto il primo
rappresenta il vero limite di HTML. Per spiegare meglio il concetto, vediamo
un esempio. Il seguente codice HTML crea una semplice tabella :
<TABLE>
<TR ALIGN="CENTER" BGCOLOR="#009040">
<TD><B>
Rivista </B></TD>
<TD><B>
Mese</B></TD>
<TD><B>
Anno</B></TD>
<TD><B>
Autore</B></TD>
<TD><B>
Titolo</B></TD> </TR>
<TR>
<TD><B>
MokaByte</B></TD>
<TD><B>
Ott.</B>ltTD>
<TD><B>
1998<B></TD>
<TD><B>
Mauro Molino</B></TD>
<TD><B>
XML & Java</B></TD> <TR>
</TABLE>
E' immediatamente
visibile l'assoluta assenza di classificazione dei dati presenti nella
tabella. Il codice si occupa solo di presentare i dati disponibili, ma
non esiste alcuna associazione con il dato stesso. In questa situazione,
l'impresa di utilizzare per qualsivoglia scopo i dati della tabella risulta
oltremodo ardua. Teniamo a mente queste considerazioni, prechè qualche
riga più avanti torneremo sull'argomento.
Vantaggi di
XML
Fra i vantaggi
che XML è in grado di apportare nella gestione dati ricordiamo:
Elevato strutturazione,
con possibilità di utilizzare un unico documento per diversi scopi
(visualizzazione, trattamento dei dati etc.)
Estensibilità,
uno dei maggiori punti di forza di XML.
Indipendenza
da piattaforma e produttori.
Standardizzazione.
Le specifiche rilasciate dal W3C, sottolineano la necessità di apportare
il minor numero possibile di variazioni al XML, possibilmente nessuna.
Pensiamo solo alla
situazione di un'azienda che debba gestire tutta una serie di documenti
in vari formati. Dopo un'analisi preventiva sarebbe possibile mettere a
punto una struttura XML adatta alla gestione di tutti i documenti presenti,
e dopo averli convertiti in XML, sarebbe possibile effettuare dei trattamenti
su di essi in maniera estremamente semplice, come ad esempio la creazione
di un database con titoli, autori etc., la pubblicazione sull'intranet
, la creazione di indici di ricerca etc. A questo scopo, alcuni produttori
di formati di word processing stanno implementando nei loro prodotti la
possibilità di salvare direttamente anche in formato XML . La Microsoft
stessa si sta orientando in questa direzione, seppure con alcune limitazioni.
Torniamo ora, come promesso, alla semplice tabella generata prima in HTML.
Vediamo come potrebbe essere resa in XML:
<?xml
version="1.0">
<Rivista>MokaByte</Rivista>
<Mese>
Oct.</Mese>
<Anno>
1998</Anno>
<Autore>
<Nome>
Mauro</Nome>
<Cognome>
Molino</Cognome>
</Autore>
<Titolo>
XML & Java</Titolo>
In questo caso,
a differenza che in HTML, ci troviamo di fronte ad una strutturazione dei
dati molto efficace. I tag definiti permettono sia di visualizzare i dati
come si vuole, sia di trattare i dati stessi, visto che in questo caso
è sempre possibile risalire al significato preciso del dato .La
visualizzazione è resa possibile tra l'altro da XSL, che sta a XML
come CSS (Cascading Style Sheets) sta a HTML. XLS è in grado di
convertire XML in HTML, in modo che sia visualizzabile in un qualsiasi
browser. Allo stesso tempo però, a livello client è possibile
utilizzare i dati presenti nella tabella per fare ad esempio delle statistiche,
in quanto ogni dato è inconfondibilmente riconoscibile dal suo tag.
Notate come
sia possibile avere degli elementi all'interno di altri elementi, come
nel caso di <Nome> e <Cognome> che sono sottoelementi di <Autore>.
Questo ci dà la possibilità di creare vere e proprie strutture
di dati. Torneremo su questo nel prossimo articolo, quando ci occuperemo
del Document Object Model.
Java e XML.
Due facce della stessa tecnologia
Esiste un legame
tra Java e XML ? Sicuramente si , ed è fortissimo. Da un lato Java
permette di scrivere codice che garantisca la massima portabilità
fra piattaforme, dall'altro XML fa esattamente la stessa cosa con i dati.
In realtà quindi la complementarietà fra i due è totale.
In quest'ottica Sun stessa, avendo realizzato le potenzialità insite
nel connubio, sta definendo una estensione Java standard per la manipolazione
del XML. A detta della Sun , questa estensione standard sarà disponibile
su tutte le piattaforme Java, in modo che gli sviluppatori non debbano
costruirsi delle classi proprie, cosa che porterebbe rapidamente ad implementazioni
non standard, riportando il tutto alla solita accozzaglia di versioni pseudo-compatibili.
In più, divenendo estensione standard della piattaforma Java, non
sarebbe necessario distribuirne le classi con le proprie applicazioni.
Fra le varie
caratteristiche interessanti, si può citare la possibilità
di inserire codice Java all'interno di un documento XML. Questo significa
che sarebbe possibile distribuire una struttura di dati assieme al codice
necessario per manipolarla, il tutto nello stesso documento. Inoltre non
è difficile rendersi conto che Java rappresenta forse la piattaforma
ideale per chi voglia cimentarsi con XML. Non a caso infatti, molti dei
parser XML attualmente in circolazione sono scritti proprio in Java.
Se si volesse
fare un paragone fra le tecnologie HTML/CGI e XML/Java, si potrebbe dire
che mentre nel primo caso le funzionalità sono totalmente demandate
al server, nel secondo si permette una immensamente maggiore capacità
di manipolazione dei dati a livello client, riducendo nel contempo il traffico
di rete. In quest'ottica , nel momento in cui si passano dei dati ad un
browser, gli stessi dati, inviati una volta sola possono essere trattati
dal client stesso in modo da ottenerne allo stesso tempo: tabelle, grafici,
statistiche, report e quant'altro sia utile. Se il trattamento dal lato
browser viene fatto da un applet Java, ecco che abbiamo trovato un formato
di scambio dati semplice, potente, rapido e scalabile.
Un altro utilizzo
in fase di ascesa nell'indice di gradimento degli sviluppatori Java è
l'utilizzo di XML come formato di serializzazione. Ci sono in giro svariati
esempi di integrazione fra Java e XML in cui XML si occupa di definire
dei tag che permettano di creare e assegnare proprietà a dei Java
Bean.
Conclusioni
Abbiamo accennato
alle affinità fra esso e Java, mettendo in risalto come le due tecnologia
siano in grado di fondersi in maniera molto proficua. Nel prossimo articolo,
entreremo nel dettaglio delle tecniche di integrazione fra Java e XML,
soprattutto per ciò che riguarda il parsing e l'incapsulamento dei
Java Bean.
Bibliografia
- Extensible
Markup Language (XML) 1.0, W3c Reccomendation 10-February-1998.
http://www.w3.org/TR/1998/REC-xml-19980210.html(presente
anche in formato pdf,xml,ps)
- CO-STARS IN
NETWORKING- XML and Java Techologies, Jon Byous.
http://www.javasoft.com/features/1999/03/xml.html |