- Introduzione a XML -
|
|||
COSA SERVE PER QUESTO TUTORIAL | |||
Chiedi sul FORUM | Glossario | Un qualunque editor testuale e Internet Explorer, Opera o Firefox oppure un server che supporti ASP .Net o PHP | ||
Tipologie, componenti e requisiti di un documento XML | |||
DEFINIZIONE E TIPOLOGIE DI DOCUMENTI XML XML e le sue relazioni con i database, SGML e (X)HTML.
Si sente parlare tanto di XML, ma di cosa si tratta in realtà?
XML è un formato documentale, come RTF, CSV e così via. Il suo
nome è un acronimo per eXtensible Markup Language, il che significa che XML è un formato basato
su evidenziare informazioni tramite i tag. Esso è in sostanza un
sottoinsieme semplificato di SGML, come lo è anche HTML, ma la
conoscenza di SGML non è assolutamente richiesta per comprendere XML,
basti sapere che si tratta di un formato documentale ancora più ampio,
versatile e ricco di possibilità, al punto che sono davvero poche le sue
implementazioni complete e per questo si usa in genere limitarlo creando formati
proprio come XML e HTML. <clienti> <persona> <nome>Mario</nome> <cognome>Rossi</cognome> <altezza>1,80 m</altezza> <peso>75 Kg</peso> <professione>impiegato</professione> </persona> <persona> <nome>Carlo</nome> <cognome>Neri</cognome> <altezza>1,88 m</altezza> <peso>80 Kg</peso> <professione>insegnante</professione> </persona> <clienti> È facile intuire perché si tratti di un documento orientato ai dati:
il suo obiettivo è quello di descrivere una lista di clienti e fornire le
informazioni a loro riguardo. Si noti però che "orientato ai dati" non
significa che XML sia un database, XML non va mai usato come database:
il fatto di essere leggibile da una persona senza bisogno di strumenti
intermediari (necessari invece per qualsiasi formato binario) lo rende
molto prolisso, pesante e soprattutto non indicizzato. I documenti
orientati ai dati possono essere ad esempio utili per trasmettere le
informazioni attraverso la rete utilizzando XML, formato standard,
universale, versatile e multi-piattaforma, ma non va mai usato come se
fosse un database, se non per piccole quantità di dati. <mydoc> <corpo> <paragrafo> Questo è un <importante>documento</importante> orientato alla narrazione. Oggi bisogna comprare: </paragrafo> <lista> <linea>carne</linea> <linea>patate</linea> <linea>pesce</linea> </lista> <paragrafo> Tutto questo costerà <prezzo valuta="EUR">15</prezzo> </paragrafo> </corpo> </mydoc> Come si può vedere la struttura è più discorsiva e varia, un esempio sicuramente noto di documento XML orientato alla narrazione è un qualunque file XHTML. Che relazione c'è tra XML e XHTML? Semplicemente XHTML è HTML in tutto e per tutto se non per alcune questioni sintattiche dovute alle regole di ben-formazione (in inglese well-formedness) di XML. In generale si può dire che XML è più restrittivo rispetto ad HTML, ad esempio se in HTML è possibile avere un codice come quello che segue: <html> <body> <p> <!-- Questo P non si chiude --> <br> <!-- I tag BR si aprono solamente --> <!-- Il valore dell'attributo title che segue non è racchiuso tra tra virgolette e nell'attributo href è contenuto il carattere & (amperstand) invece della sua forma & --> <a title=Link href="http://sito/path?val1=34&val2=35">Link</a> </body> </html> In XHTML si dovrebbe invece usare quello che segue: <html> <body> <p> <br /> <!-- I tag BR devono essere chiusi --> <!-- Il valore dell'attributo title è stato racchiuso tra virgolette e nell'attributo href è contenuto il carattere & (amperstand) è stato riscritto nella forma & --> <a title="Link" href="http://sito/path?val1=34&val2=35">Link</a> </p> <!-- Tutti gli elementi devono chiudersi --> </body> </html> È estremamente importante capire che XML non è affatto solamente XHTML, esso può avere infinite applicazioni e in questo tutorial se ne useranno anche di inventate proprio per evitare questa confusione e riuscire ad approfondire le potenzialità di XML. LE PARTI DI UN DOCUMENTO XML Prendiamo ora in considerazione un documento XML e analizziamo ogni sua parte. Un documento XML è composto di nodi (secondo la terminologia del DOM), un nodo è l'unità minima che il parser riconosce: del testo normale è un nodo di testo, un elemento si definisce nodo di elemento e così via. <?xml version="1.0" encoding="utf-8" standalone="no" ?> <!DOCTYPE multa SYSTEM "multa.dtd"> <multa> <?miaapplicazione InserisciTimeStamp() ?> <!-- Ricordarsi di impostare l'autore --> <autore id="15"> Carlo Rossi </autore> <destinatario nome="Paolo" cognome="Neri" /> <motivazione> Intralcio al traffico </motivazione> <condizione> <![CDATA[ velocità < 20 Km/h ]]> </condizione> </multa> Analizziamo riga per riga il contenuto di questo ipotetico documento XML che descrive una multa: <?xml version="1.0" encoding="utf-8" standalone="no" ?> Questa riga è la dichiarazione XML, che indica la versione di XML in uso (in genere 1.0), la codifica usata e se il documento è autonomo (tramite l'attributo standalone), ovvero se è necessario accedere a risorse esterne per poter consultare correttamente il documento o meno. Esso non è indispensabile per ritenere un documento XML ben formato. <!DOCTYPE multa SYSTEM "multa.dtd"> Questa sintassi indica la dichiarazione del Document Type, ovvero l'insieme di regole che descrivono il documento XML in questione come quali elementi/attributi è permesso che un certo elemento abbia e così via. In questo caso tutte queste regole si trovano in un file esterno, ma spiegare la sua sintassi va oltre lo scopo di questo articolo. <multa> Questa riga contiene il tag di apertura dell'elemento radice (in inglese root element). Un elemento può essere vuoto (come vedremo in seguito) o avere dei nodi figlio, ovvero altri elementi, nodi di testo e così via. L'elemento radice deve essere unico ed è il solo nodo davvero indispensabile perché un documento XML possa dirsi tale. <?miaapplicazione InserisciTimeStamp() ?> Questa riga è una istruzione di elaborazione (in inglese processing instruction) e serve per dare istruzioni specifiche al parser (programma che sta analizzando il codice XML). In questo caso ad esempio si suppone che l'applicazione sia in grado di comprendere ed eseguire istruzioni di elaborazione miaapplicazione e che quindi venga richiamata una (ipotetica) funzionalità InserisciTimeStamp che potrebbe ad esempio inserire data e ora correnti nel risultato di un'elaborazione del documento XML. <!-- Ricordarsi di impostare l'autore --> Questo è un semplice commento. <autore id="15"> Questo è il tag di apertura dell'elemento autore, dotato di un attributo id con valore 15. Un elemento può avere quanti attributi (sempre formato da una coppia nome-valore) si desideri, a patto che abbiano nomi diversi. Carlo Rossi Un semplice nodo di testo, figlio dell'elemento autore. </autore> Il tag di chiusura dell'elemento autore. Tutti gli elementi in XML devono sempre chiudersi in questo modo, o se vuoti, in alternativa nelle modalità seguente: <destinatario nome="Paolo" cognome="Neri" /> Questo è un elemento destinatario dotato di due attributi ma senza
nessun nodo figlio, dunque vuoto. Si noti lo spazio e lo slash
alla fine del tag, che indicano che l'elemento vuoto e non è dunque
necessario specificare il tag di chiusura ("</destinatario>"). <![CDATA[ velocità < 20 Km/h ]]> Una sezione CDATA è una porzione di documento XML racchiusa tra
quadre come indicato (in questo caso il contenuto della sezione è
"velocità < 20 Km/h"). Si noti che al suo interno è stato usato
direttamente il simbolo "<" invece della sua rappresentazione sottoposta
a escape "<" come obbligherebbe XML in generale: questo proprio
perché ci si trova all'interno di una sezione CDATA, dove le regole XML
non valgono. Essa è stata studiata appositamente per contenere dati che
utilizzano una sintassi non XML e che potrebbero entrare in conflitto
con essa, si pensi ad esempio ad uno script JavaScript dove è a dir poco
frequente l'uso di simboli non validi in XML come "<" e "&". Per ovviare
a questo problema in HTML si è soliti inserire il codice di script e
fogli di stile CSS all'interno di commenti, ma le sezioni CDATA
risolvono il problema in maniera molto più efficiente. Requisiti di un documento XML e validità. Perché un documento XML possa dirsi tale deve essere ben formato (in inglese well-formed) ovvero deve seguire un serie di regole. Quelle che creano problemi più di frequente sono le seguenti:
Spesso si confonde la ben formazione con la validità di un documento. La ben formazione sono un'insieme di regole comuni a tutti i tipi di documenti XML ed è assolutamente indispensabile, se non si verifica non si sta parlando di XML; la validazione invece è specifica per ogni tipologia di applicazione XML e si riferisce al DTD (Document Type Definition, come già accennato) del documento, ad esempio XHTML ha delle sue regole, SVG altre e così via. La validazione si occupa di verificare che ogni elemento abbia come elementi figli o come attributi solamente quelli permessi per questo tipo di documento. La validazione anche se molto utile, non è un requisito indispensabile per un documento XML, che può anche non avere nessun DTD specificato. |
|||
<< INDIETRO | by VeNoM00 |