Concetti principali Un documento XML contiente delle istruzioni particolari chiamate tag scritte in forma di coppia di parentesi (metalinguaggio con parentesi) Daniele Marini XML <warning> <para>questa sostanza è pericolosa rischiosa per la salute</para> <para>rispettate le procedure indicate nelle istruzioni e indossate indumenti protettivi.</para> <logo /> </warning> In questo esempio i tag identificano porzioni di testo che dovranno venire stampate in modo differente, ma non dice nulla su come effettivamente vanno stampate Risultato possibile Differenze tra XML e HTML WARNING Questa sostanza è pericolosa Rispettate le procedure indicate nelle istruzioni e indossate indumenti protettivi. HTML è il metalinguaggio che permette di definire come deve essere visualizzato il testo nella pagina WEB XML viceversa descrive il testo, associa al testo una semantica XML non fa nulla di particolare si limita appunto a definire la struttura XML può essere anche considerato come un metalinguaggio per definire una semantica dei dati XML è un complemento di HTML, non lo rimpiazza XML è uno strumento per registrare informazioni indipendenti da software e hardware
Dove si usa Un esempio di documento Dipartimento di Informatica e Comunicazione XML può essere usato non soltanto per applicazioni web ma anche per semplificare lo sviluppo di programmi applicativi <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/dtds/propertylist-1.0.dtd"> <plist version="1.0"> <dict> <key>buildversion</key> <string>2</string> <key>cfbundleshortversionstring</key> <string>4.1.1</string> <key>cfbundleversion</key> <string>703</string> <key>projectname</key> <string>browserkit</string> <key>sourceversion</key> <string>703000000000000</string> </dict> </plist> La prima riga definisce la versione di XML e la codifica utilizzata per i caratteri <?xml version="1.0" encoding="iso-8859-1"?> <note> <to>pippo</to> <from>topolino</from> <heading>da ricordare</heading> <body>non dimenticarti di questo weekend!</body> </note> Un documento XML definisce una struttura ad albero: <note> individua la radice, <to>, <from>, <heading>, <body> sono rami discendenti dalla radice; la radice ha 4 figli Il contenuto del documento è autodescrittivo!! Un esempio di documento Un esempio di documento <?xml version="1.0" encoding="iso-8859-1"?> <note> <to>pippo</to> <from>topolino</from> <heading>da ricordare</heading> <body>non dimenticarti di questo weekend!</body> </note> <?xml version="1.0" encoding="iso-8859-1"?> <appunto> <oggetto>da ricordare</oggetto> Notare che la radice e ogni figlio è definita da una coppia che ha la forma <start_tag> </end_tag> In questo modo abbiamo definito una semantica della entità note, una semantica operazionale, che dice che una nota è costituita da un mittente, un destinatario, una intestazione, un contenuto Abbiamo la liberta di chiamare questa cosa anche con altri nomi: Abbiamo usato denominazioni diverse (lingua italiana) per i componenti della nota
Una struttura ad albero Una struttura ad albero Vediamo un esempio E la sua descrizione XML <bookstore> <book category="cooking"> <title lang="en">everyday Italian</title> <author>giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">harry Potter</title> <author>j K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">learning XML</title> <author>erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> Regole sintattiche Regole sintattiche I tag si suddividono in start-tag ed end-tag, costituiscono cioè una coppia di parentesi. Il testo contenuto all interno della coppia start/end-tag è un elemento Gli elementi possono essere organizzati in due forme: Sequenza Gerarchia Elemento base è il documento Il primo elemento di un documento XML è la XML Declaration È in effetti una istruzione indirizzata al processore che esaminerà il documento Il formato della XML Declaration è ad esempio: I tag sono case-sensitive ovvero maiuscole e minuscole devono essere rispettate, <note> è diverso da <Note> e da <NOTE> <Message>Questo è giusto</message> <Message<Questo è sbagliato!</message> Gli elementi devono essere correttamente innestati (nested) <note><i>questo è giusto</i></note> <<note><i>questo è sbagliato</note></i> <?XML version= 1.0 encoding= UTF-8 standalone= YES?>
Attributi Caratteri speciali ed elementi Un attributo fornisce informazioni aggiuntive a un elemento; gli attributi sono definiti all interno dello start-tag dell elemento Un attributo è costituito da un nome e da un valore in quest ordine <appunto data = 9/02/2012 > <oggetto>da ricordare</oggetto> I simboli <, >,?,!, / sono caratteri speciali La coppia < > delimita un tag <nome_tag> Lo start_tag è denotato come: L end-tag è denotato come: </nome_tag> In generale la struttura gerarchica di un documento corrisponde alla organizzazione in capitoli, sezioni e paragrafi di un libro Il tag di paragrafo è <p> testo del paragrafo </p> L attributo data ha il valore 9/02/2012 Notare gli apici. Se non mettete gli apici è sbagliato Riferimenti a entità Commenti e spazi bianchi Se inserite il carattere < in un testo fate un errore, il simbolo < viene interpretato come inizio di un tag Per evitare l errore fate rimpiazzate il carattere < con un riferimento alla entità < che è codificata come < Le entità predefinite sono: < < > > & & ' " Racchiusi tra le parentesi: <!--.. --> Hanno quindi la forma: <! - Questo è un commento --> Gli spazi bianchi sono conservati: <note> Questo è un commento </note> Con HTML il risultato è: Questo è un commento Con XML il risultato è: Questo è un commento
Cosa sono gli Elementi? Un documento XML contiene elementi Un elemento è qualunque cosa compresa tra start_tag e end_tag (incluse le parentesi) Un elemento può contenere: Altri elementi Del testo Attributi Una miscela di essi Regole sull uso dei nomi In XML i nomi usati per i tag sono costituiti con le regole: Possono contenere lettere, numeri o altri caratteri Non possono incominciare con un numero o un segno di interpunzione Non possono incominciare con le lettere XML Xml xml Non possono contenere spazi bianchi Buone pratiche sui nomi Evitare il segno tra due stringhe, che alcuni programmi possono interpretare come operazione di sottrazione, meglio usare il segno _ (sottolineatura, underscore) Evitare il segno. tra due stringhe, che alcuni programmi possono interpretare come riferimento a un attributo di una variabile Evitare il segno : che è riservato al namespace di XML Scegliere nomi significativi e brevi Si possono usare lettere accentate èéòà øü ecc. Estensibilità La X di XML sta per estensibilità. Vediamo un esempio <appunto> Supponiamo sia stato fatto un programma che interpreta XML e genera: Messaggio Da: Pippo A: Topolino Non dimenticarti di questo weekend Estensibilità L autore del file XML lo modifica <appunto data= 9/02/2012 > <oggetto>da ricordare</oggetto> Il programma esistente continuerà a generare: Ma potremo anche scrivere un nuovo programma: Messaggio 9 febbraio 2012 Da: Pippo A: Topolino Oggetto: Da ricordare Non dimenticarti di questo weekend Messaggio Da: Pippo A: Topolino Non dimenticarti di questo weekend
Ancora sugli Attributi Ancora sugli Attributi Gli attributi forniscono informazioni addizionali agli elementi Le informazioni possono servire al programma applicativo, ad esempio: <file type= gif >immagine.gif</file> Facilita il compito al programma applicativa ad interpretare il formato del file Gli attributi devono essere quotati: valore_attributo Se il valore_attributo è una stringa che contiene i caratteri o la quotazione si fa con i simboli : <gangster name= Henry Billy the Kid MacCarthy > Oppure: <gangster name= Henry "Billy the Kid" MacCarthy > Attenzione alla differenza tra attributi ed elementi. Qui è un atttributo: Qui è un elemento: <person sex= female > <first_name>anna</first_name> <family_name>bolena</family_name> </person> <person> <sex>female</sex> <first_name>anna</first_name> <family_name>bolena</family_name> </person> Buone pratiche Ancora sugli Attributi <appunto data= 9/02/2012 > <appunto> <data>9/02/2012</data> Altri attributi che si possono definire riguardano i metadati (ricordate il concetto di paratesto) XML consente di definire liberamente i metadati oltre a quelli tipici come autore, data di pubblicazione. Ad esempio si possono definire privilegi di lettura o altro <appunto> <data> <giorno>9</giorno> <mese>02</mese> <anno>2012</anno> </data>
Attributi riservati Integrare HTML in XML Gli attributi riservati sono relativi a attributi non definiti dall utente e specifici dello standard XML e sono: la lingua da adottare e lo spazio che circonda il testo Gli attributi riservati vengono denotati come: xml:lang e xml:space Nell esempio un ascensore viene chiamato lift in inglese e elevator in americano, è così possibile modificare il testo in funzione della configurazione del browser utilizzato: <para xml:lang= en > <instruction xml:lang= en-gb > Take the lift to floor 3. </instruction> <instruction xml:lang= en-us > Take the elevator to floor 3. </instruction> Il documento XML può contenere comandi di marcatura come quelli di HTML, che permettono di selezionare il font (dimensioni, modalità italic, bold, normal, ), definire liste anche innestate tra di loro, tabelle, immagini e altro. <p>questo paragrafo contiene una frase <em>enfatizzata</em></p> Questo paragrafo contiene una frase enfatizzata <p>questo paragrafo contiene una figura <fig warn.jpg/> qui</p> Questo paragrafo contiene una figura qui Parsing Sezioni CDATA Un documento che rispetta la sintassi di XML è ben formato La verifica di correttezza di un file XML è fatta con una procedura di parsing Il parsing analizza l intero testo, anche parti di testo comprese entro le parentesi start_tag end_tag La stringa all interno della coppia <message>..</message> può infatti contenere altri tag: <Author><first_name>Daniele </first_name><second_name>marini</second_name></author> Produce infatti la struttura: <Author> <first_name<daniele </first_name> <second_name>marini</second_name> </author> CDATA (character data) sono sezioni di testo che non vengono analizzate dal parser, permettono quindi di inserire stringhe che fanno uso dei caratteri speciali in modo che la stringa venga riprodotto com è Esempio: <![CDATA[Premere il tasto <<<ENTER>>>]]> La sezione CDATA deve terminare con i simboli ]]>
Encoding Esempio di tabella ISO-8859-1 Abbiamo visto nella prima riga di un documento XML encoding: <?xml version="1.0" encoding="iso-8859-1"?>. Con questa espressione si indica al programma che elabora il documento qual è il codice da adottare per la codifica e decodifica dei caratteri del testo Esistono numerosi standard, di cui ISO-8859-1 riguarda la codifica dei caratteri cosiddetti latini, ovvero che usano il caratteri degli alfabeti delle lingue europee Altri standard permettono la codifica di altri caratteri. Lo standard che definisce i codici per tutte le lingue è UNICODE Per dettagli consultare WIKIPEDIA Unicode Esempio di tabella ISO-8859-1 Dichiarazioni Sono istruzioni al processore che elabora il documento XML Una declaration è delimitata dai caratteri: <! > Le declaration possono essere innestate gerarchicamente La prima declaration (se vengono usate) all inizio del documento deve essere (nella forma più semplice): <!DOCTYPE MyBook>
Istruzioni di elaborazione Concetto di struttura fisica Chiamate processing instruction contengono informazioni necessarie a una specifica applicazione che deve elaborare il documento XML Son racchiuse tra le parentesi: Ad esempio l istruzione: <?.?> Viene interpretata dallo specifico programma ACME-WP che sa come gestire una funzione nuova pagina <p> Interrompiamo la pagina <?ACME-WP (NEW PAGE)?> <?BigDTPSystem DO:page-break?> <pagebreak/> qui</p> XML permette di organizzare un documento complesso in singoli documenti separati (ad esempio ogni capitolo di un libro) Ciascuna unità di informazione viene chiamata entità Alle entità si assegna un nome, l unica entità priva di nome è la document entity che è il file che rappresenta l intero documento e viene pubblicato o passato al parser per essere esaminato La document entity può essere o l intero documento o una sorta di quadro all interno del quale sono definite le altre entità fisicamente separate Esamineremo meglio questi concetti dopo aver introdotto DTD Entità Entity declaration Le entità sono utili quando la stessa informazione è usata in più punti e la duplicazione è inutile L informazione può essere rappresentata in forma diversa da sistemi diversi Per suddividere un documento troppo grande L informazione richiama dati coerenti con formati diversi da XML Una entità viene richiamata da diversi punti nel documento principale Per dichiarare una entità: <!ENTITY.> Ad esempio: <!ENTITY UniMi Università degli Studi di Milano > Per riferirsi a una entity: <!title> &UniMi </title>
Riferimenti Neil Bradley, The XML Companion, Addison Wesley, 1998 http://www.w3schools.com/xml/xml_whatis.asp http://en.wikipedia.org/wiki/markup_language