Introduzione a XML

3 pagine in totale: <<Indietro 1 2 [3]

Adesso non rimane che una regola da enunciare. Tutti i documenti XML devono avere un tag 'radice' che comprende e racchiude tutto il documento. Ciò in pratica significa che il nostro documento dovrà apparire più o meno così:

<popolodidisperati>
<amico annoiscrizione="3" fuoricorso="true" matricola="1245632">
  <nome>Paolo Rossi</nome>
  <foto url="http://www.italia1.com/programmi/spettacoli/scatafascio/
mercato/images/paolo2.jpg" />
  <esame voto="25" lode="false">Storia del Gorgonzola II</esame>
  <esame voto="22" lode="false">Diritto Spaziale</esame>
  <esame voto="22" lode="false">Basi di Grammatica</esame>
</amico>
<amico annoiscrizione="12" fuoricorso="true" matricola="12452">
  <nome>Vasco Rossi</nome>
  <annoiscrizione>12</annoiscrizione>
  <fuoricorso>true</fuoricorso>
  <foto url="http://www.freeweb.org/musica/vascorossi/images/
vasco-03.jpg" />
  <esame voto="18" lode="false">Storia del Gorgonzola II</esame>
</amico>
</popolodidisperati>

Ci siamo. Il tag 'popolodidisperati' racchiude tutti gli altri elementi. Ecco un documento XML ben formato.

Vi anticipo un fatto abbastanza importante della terminologia XML. Vi può essere capitato di aver sentito che un documento XML è valido , e potrebbe venirvi il dubbio che si tratti di un sinonimo diben-formato. Non è così. Un documento XML ha due livelli di correttezza. Io vi ho spiegato il livello minimo, la buona-formattazione. Il livello superiore si chiama 'validità' ed indica che un documento XML, oltre a essere ben formato, rispetta determinati criteri riguardo alla sua struttura. Ad esempio quali elementi e con quali attributi hanno diritto di stare in un file XML valido.

Per il vostro bene sarà meglio riportare in una comoda lista le regole che rendono un documento XML ben formato. Imparatele a memoria:

  • tutti gli elementi devono essere terminati da un tag;
  • tutti gli elementi devono essere annidati (non sono ammesse sovrapposizioni di tag chiusi e aperti, per esempio:<a><b></a></b>);
  • i valori di tutti gli attributi devono essere racchiusi in apici (singoli o doppi).;
  • il documento XML deve avere un unico elemento 'radice' in cui tutti gli altri elementi sono annidati;
  • i tag sono sensibili alle maiuscole, contrariamente a ciò a cui potreste essere abituati con l'HTML. Per cui <amico> non fa coppia con </AMICO> (e nemmeno con </Amico>).

Riprendiamo le fila

Quanto detto finora serve a capire alcune regole di base dell'XML. Forse già ne intravvedete le potenzialità. Ad esempio vedete che l'XML può essere creato facilmente con un editor di testo, ma vedete anche come possa essere generato automaticamente da un database. Allo stesso tempo è possibile analizzare un file XML abbastanza facilmente in molti modi. L'idea che voglio favi capire è quella di un formato che permette di descrivere documenti (o più in generale) dati in un modo che sistemi diversi possono capire.

Se siete come la maggior parte dei lettori di questo sito, probabilmente state cercando di vedere un documento XML come un entità che prima o poi dovrà emergere come pagina web. Questo è probabilmente un uso molto comune di XML, ma al tempo stesso è fuorviante pensare in questi termini. Prendete per buono che generare la pagina web è possibile e confidate nel fatto che tra poco vi spiegherò come. Al tempo stesso, però, ignorate il fatto che il vostro XML rappresenti un documento. Pensate alla pagina Web come ad uno dei medium possibili, non al medium per eccellenza, come per deformazione professionale vi siete abituati a fare negli ultimi anni. Osservate i file XML come dei dati o spezzoni di dati che possono essere facilmente analizzati, modificati e manipolati in maniera sia manuale che automatica. Pensate a quanto sia facile estrarre informazione da un file XML, magari per costruirne un altro. Vi sarà forse capitato di dover manipolare dei file HTML cercando di cogliere pezzetti di testo qua e là tra i tag. Sapete quanto questa procedura sia complessa e si presti facilmente ad errori. Con i file XML questo sarebbe più facile, dal momento che i tag qualificano senza ambiguità gli elementi che intendete riconoscere.

Arrivati a questo punto dovreste riuscire a vedere il perchè della definizione "ASCII del futuro": Un formato che tutti i sistemi riconoscono e manipolano.

Riassumendo il tutto in una frase:dal momento che XML separa l'informazione dal suo uso finale, un qualsiasi sistema che possa leggere l'XML riuscirà anche a estrarne le parti di contenuto rilevanti.

Trovo verosimile che tra pochi anni nessuno avrà bisogno di leggere articoli sui concetti di base di XML, non più di quanto oggi c'è bisogno di leggere articoli sulla natura del codice ASCII.

Un pensiero sull'HTML dei vecchi tempi

Se avete imparato l'HTML prima del 96, vi sarete sicuramente sorbiti anche voi la vecchia pappina dell'HTML che era struttura e non presentazione. A mio modesto parere, si tratta di un fantastico esempio di nozze con i fichi secchi, dal momento che da una parte l'HTML non era abbastanza potente per rappresentare decentemente una struttura logica che fosse di una certa (minima) complessità, dall'altra il mondo smaniava di usare internet, ma gli sfondi grigi non erano certo un granchè belli e nessuno aveva ancora pensato a come supportare le fantasie più sfrenate dei designer.

In pratica l'HTML ha finito per essere usato per definire il design (e non la struttura). Bene, l'XML ha serie possibilità di rendere finalmentela separazione tra contenuto e presentazione una realtà.

Come processare l'XML

Poco sopra vi ho detto che è molto più facile analizzare un documento XML più facilmente che uno HTML. Se questa affermazione vi ha lasciato scettici, approfondisco un pò il concetto.

Con HTML avete a che fare con tag che non identificano la semantica, per cui può essere difficile identificare un pattern che vi permetta di pescare determinati elementi di un documento HTML.

La situazione è ancora peggiore quando, dopo aver creduto nell'identificazione di un tale pattern, vi accorgete che il vostro processore di HTML fallisce a causa di alcuni tag per la presentazione semanticamente insignificanti. Il massimo che potete fare con l'HTML è quello di considerarlo un file ASCII++ in cui andare a rinvenire, magari tramite espressioni regolari, dei pezzi di testo qua e là. Benchè ciò sia una possibilità anche per XML di processarlo come un qualsiasi file di testo, esistono due standard molto più avanzati: analisi event-driven e navigazione del Document Object Model XML.

Il concetto di base è quello che un documento XML ben formato può essere visto come una struttura gerarchica ad albero in cui gli elementi del documento sono i nodi dell'albero e l'inclusione di un elemento dentro un altro rappresenta la relazione padre-figlio tra nodo e nodo. Se non sapete cosa intendo con struttura ad albero, l'esempio più tipico è quello della struttura delle directory sul vostro hard-disk in cui una directory è contenuta dentro un'altra e può, a sua volta, contenere altre directory.

Analisi event-driven

Per quanto riguarda l'analisi event-driven, se siete programmatori, questo termine vi ricorderà certamente un concetto di base della programmazione delle interfacce grafiche. L'utente clicca da qualche parte e il programma riceve un evento al quale può rispondere attivando l'event-handler che il programmatore ha associato a quell'evento.

Quindi, vi chiederete che diavolo c'entra tutto ciò con XML. Ebbene, se vi muovete lungo il documento XML incontrerete la radice, i vari elementi, un commento e altre cose. Ogni incontro può essere visto come un 'evento' a cui può corrispondere una certa azione.

Esistono programmi che vi permettono di definire che azioni intramprendere quando incontrate un certo tag durante l'analisi event-driven. Il vantaggio dell'analisi a eventi è quello di essere molto veloce e molto semplice da capire.

Lo svantaggio è quello che durante il processo vedete solo un ristretto insieme di informazioni del file che state parsando. Se vi basta, siete a posto.

Nel caso in cui abbiate bisogno di analizzare il file XML in modo da poter accedere a qualsiasi parte dell'informazione contenuta a prescindere dal nodo in cui il processo si trovi, avete bisogno dell'analisi basata sul DOM (Document Object Model).

Programmazione col DOM

Il software che analizza i file XML basandosi sul DOM costruisce una rappresentazione ad albero interna del documento e poi vi permette tramite un'API standard di navigare in vari modi attraverso l'albero.

Questo significa che, ad esempio, trovandovi ad analizzare il nodo

<amico>
di Paolo Rossi, potete, se volete, riferirvi alla foto di Vasco invocando alcune funzioni. Ciò non era possibile con l'analisi a eventi.

Naturalmente questo approccio richiede che il software si costruisca l'albero e se lo tenga in memoria. Questo approccio ribalta vantaggi e svantaggi di quello event-driven: avete il controllo totale, ma la velocità e l'efficienza ne risntono notevolmente.

Il concetto di DOM, vi tornerà utile per capire come funzionano i trasformatori XSL, oggetto di un articolo futuro.

3 pagine in totale: <<Indietro 1 2 [3]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC