Corso di Laurea Specialistica in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web A.A. 2011-2012 XML (extensible Markup Language) Eufemia TINELLI
Contenuti Vista logica di XML Vista fisica di XML Caratteristiche sintattiche: elementi, attributi, istruzioni di elaborazione Altro: sezioni CDATA, riferimenti a entità, Whitespace XML e Namespace Esempi: RecipeML, RSS, ebxml, SVG 2012 2
XML Un framework per definire linguaggi di markup XML è un meta-linguaggio di markup, progettato per lo scambio e la interusabilità di documenti strutturati sul Web XML prevede una sintassi semplificata rispetto a SGML e definisce una serie di linguaggi associati ogni linguaggio ha il suo proprio dominio di riferimento (application domain) con i suoi propri tags di markup Facile da gestire esistono diversi tool per processare documenti XML XML si basa su Unicode internazionalizzazione e indipendenza dalla piattaforma Sviluppato dal W3C, standardizzato nel 1998 2012 3
Cosa c èc oltre ad XML? 2012 4
XML: Vantaggi Documenti auto-descrittivi Scelta dei nomi degli elementi può facilitare la comprensione del ruolo strutturale degli stessi Struttura navigabile dei documenti La rigida struttura ad albero e l assenza di regole di minimizzazione rendono semplice l analisi della struttura del documento Struttura gerarchica Diversamente dai formati di dati generici per l interscambio di dati organizzati linearmente XML permette strutture ad albero Ripetibilità degli elementi XML permette di definire formalmente elementi ripetibili Content Model misti elementi possono contenere sia altri elementi sia testo 2012 5
Quando usare XML Produzione di documenti automatici Integrare collezioni di dati strutturati sul web Gestione indipendente di produzione ed uso di dati Data consumers e data producers non sono progettati insieme e l elaborazione non è nota in anticipo Elaborazione di dati in contenitori semi-strutturati Evitare di estrarre forzatamente informazioni atomiche da fonti semi-strutturate Elaborazione di dati con aspetti strutturali complessi Es. gestire in una tabella record con un numero variabile di campi 2012 6
XML: Applicazioni Data-oriented languages Linguaggi usati per descrivere informazioni che tradizionalmente sarebbero memorizzate in un database Document-oriented languages Linguaggi per descrivere la struttura logica dei documenti Protocols and programming languages Linguaggi con una struttura sintattica più complessa Hybrids Linguaggi che gestiscono informazione fortemente strutturata (data-oriented) con una più lasca (document-oriented) 2012 7
SGML HTML XML SGML - XML XML contiene tutte le caratteristiche di SGML che servono per creare applicazioni generali senza scendere nel livello di dettaglio e pedanteria richiesti da SGML. HTML XML HTML definisce una grammatica per la descrizione e la formattazione di pagine web e, più in generale, di ipertesti, il secondo è un meta-linguaggio utilizzato per creare nuovi linguaggi, atti a descrivere documenti strutturati. Mentre l'html ha un insieme ben definito e ristretto di tag, con l'xml è invece possibile definirne di propri a seconda delle esigenze Semplicità di HTML e flessibilità di SGML 2012 8
Un po di storia - http://www.w3.org/xml/ 1986: Standard Generalized Markup Language (SGML) ISO 8879-1986 Aug 1997: XML W3C Working Draft Feb 10, 1998: XML 1.0 Recommendation Dec 13, 2001: XML 1.1 W3C Working Draft Oct 15, 2002 : XML 1.1 W3C Candidate Recommendation Aug 16, 2006: XML 1.1, Recommendation Nov 26, 2008: XML 1.0 (5th edition) Recommendation 2012 9
Criteri di progettazione Goals del progetto iniziale XML Draft (Nov 1996) 1. XML deve essere utilizzabile in modo diretto sul web 2. XML deve supportare un gran numero di applicazioni 3. XML deve essere compatibile con SGML 4. Deve essere facile lo sviluppo di programmi che elaborino documenti XML 5. Il numero di caratteristiche opzionali deve essere mantenuto al minimo possibile, idealmente a zero 6. I documenti XML dovrebbero essere leggibili da umani e ragionevolmente chiari 7. La specifica del linguaggio XML deve avvenire rapidamente. 8. La progettazione XML deve essere formale e concisa 9. I documenti XML devono essere facili da creare 10. Non ha importanza l'economicità del markup XML 2012 10
XML Tree Concettualmente un documento XML è un albero costituito da: nodi, archi figlio, padre sibling (ordinati), antenati, discendenti 2012 11
I nodi di un XML tree Text nodes: corrispondono all informazione reale del documento (nodi foglia) Element nodes: definisce un raggruppamento logico dell informazione dei sue discendenti, ogni elemento ha 1 nome Attribute nodes: non importa l ordine, ogni attributo è associato ad 1 elemento, è costituito dalla coppia name -value Comment nodes: rappresentano meta-informazione che molti tools ignorano (nodi foglia) Processing instructions: istruzioni di specifica per l elaborazione costituite dalla coppia target -value Root nodes: ogni documento XML inizia con 1 nodo radice che rappresenta l intero documento 2012 12
Rappresentazione testuale Text nodes: semplicemente il testo che essi rappresentano Element nodes: tags di apertura e chiusura Attribute nodes: name= value nei tags di apertura Comment nodes: <!-- bla bla bla --> Processing instructions: <?target value?> Root nodes: è implicito!! REGOLE GENERALI XML è case-sensitive Caratteri validi: caratteri vuoti o whitespace (spazi, caratteri di tabulazione, carriage return, line feed), caratteri unicode Sezioni CDATA (es. <ex><![cdata[ errore ]]> ]]></ex>) Riferimenti alle entità (es. & per il carattere &) utile anche per inserire caratteri Unicode in documenti XML o entità definite nella DTD 2012 13
Elementi e attributi in XML - Esempi Solo elementi Solo testo Una combinazione Vuoto 2012 14
Dichiarazione XML <?XML version= 1.0 encoding= UTF-16 standalone= yes?> Un documento XML può includere una dichiarazione XML. Questa specifica le caratteristiche opzionali del documento in questione. La sintassi usata per la dichiarazione XML è quella delle Processing Instructions La non obbligatorietà della dichiarazione XML è dovuta a motivi di convenienza. In assenza di dichiarazione XML, si assume la forma: <?XML version= 1.0?> Dichiarazione XML Version Encoding Standalone 2012 15
Un documento XML 2012 16
Documenti ben-formati e validi XML distingue due tipi di documenti rilevanti per le applicazioni XML: i documenti ben formati ed i documenti validi. In SGML, un DTD è necessario per la validazione del documento. Anche in XML, un documento è valido se presenta un DTD ed è possibile validarlo usando il DTD. XML permette anche documenti ben formati, ovvero documenti che, pur essendo privi di DTD, presentano una struttura sufficientemente regolare e comprensibile da poter essere controllata: Tutti i tag di apertura e chiusura corrispondono e sono ben annidati <x><y></y></x> <z><x><y></x></y> Esiste un elemento radice che contiene tutti gli altri I tag vuoti (senza contenuto) utilizzano un simbolo speciale di fine tag: <elementovuoto/> Tutti gli attributi sono sempre racchiusi tra virgolette Tutte le entità sono definite 2012 17
Parser XML Modulo che legge il documento XML e ne crea una rappresentazione interna utile per successive elaborazioni Un parser validante, in presenza di un DTD, è in grado di verificare la validità del documento, o di segnalare gli errori di markup presenti. Un parser non validante invece, anche in presenza di un DTD è solo in grado di verificare la buona forma del documento. Un parser non validante è molto più semplice e veloce da scrivere, ma è in grado di fare meno controlli. In alcune applicazioni, però, non è necessario validare i documenti, solo verificare la loro buona forma. 2012 18
Namespace Nella visione XML, i tipi di documenti si mescolano e si fondono tra loro in maniera complessa. Lo stesso documento potrebbe avere alcuni elementi definiti in un tipo ed altri in un altro. I namespace in XML si propongono per risolvere questi problemi. XML-Namespaces è una recommendation di W3C del 1999. Ogni nome (elementi, attributi, entità, ecc.) del documento XML è preceduto da un prefisso che specifica l origine del nome stesso. Il prefisso è separato da il carattere : dal nome dell elemento o dell attributo. Poiché ogni namespace userà un prefisso diverso,è possibile capire quali elementi appartengono all uno e all altro, e di evitare qualunque problema di collisione. L attributo predefinito xmlns serve per introdurre i prefissi usati dai namespace del documento. Il valore dell attributo è un URI che non ha nessun valore dichiarativo, ma solo informativo. Un nome (di elemento o di attributo) che contiene prefisso di namespace e nome locale viene detto nome qualificato. 2012 19
Uso dei namespace - Esempio <?xml version="1.0"?> <data:root xmlns:data= http://www.microsoft.com/data"> <data:header isbn= 07356-0831-8" /> <myorg:book xmlns:myorg= http://www.microsoft.com/myorg"> <title>xhtml Pocket Consultant</title> <creator>william R. Stanek</creator> <chapter number= 3" title= XHTML Essentials" > <page>xhtml Definitions <data:page>this is a paragraph in a page</data:page> </page> <main_text>xhtml Definitions Main <data:main_text>this is a paragraph in the main text</data:main_text> </main_text> </chapter> </myorg:book> <data:footer>copyright 2001 William R. Stanek</data:footer> </data:root > 2012 20
Namespace di default Nella dichiarazione xmlns si pone il nome del prefisso che si intende usare nel corso del documento per gli elementi definiti in quel namespace. L assenza di tale prefisso in xmlns indica la presenza di un namespace di default, per cui tutti i nomi privi di prefisso di debbono intendere appartenenti a quel namespace. I namespace di default non si applicano agli attributi <?xml version="1.0"?> <data:root xmlns:data= http://www.microsoft.com/data"> <data:header isbn= 07356-0831-8" /> <book xmlns= http://www.microsoft.com/myorg"> <title>xhtml Pocket Consultant</title> <creator>william R. Stanek</creator> <chapter number= 3" title= XHTML Essentials" > <page>xhtml Definitions <data:page>this is a paragraph in a page</data:page> </page> <main_text>xhtml Definitions Main <data:main_text>this is a paragraph in the main text</data:main_text> </main_text> </chapter> <book> <data:footer>copyright 2001 William R. Stanek </data:footer> </data:root > 2012 21
Namespace e DTD I namespace sono stati introdotti dopo i DTD, e quindi esprimere namespace nei DTD non è facile. L'unico modo è di esprimere come nomi validi i nomi qualificati, bloccando il prefisso. Elemento dichiarato con un prefisso (N.B. Tale dichiarazione non è necessaria per gli elementi figlio che ereditano il namespace oppure se l elemento è incluso in un namespace di default) <!ELEMENT prefix:element_name (#PCDATA) > Attributo dichiarato con un prefisso <!ATTLIST prefix:element_name prefix:attrib_name #IMPLIED> Dichiarazione dell attributo xmlns <!ATTLIST prefix:element_name xmlns:prefix CDATA #FIXED "http://www.betterbooks.org"> N.B la dichiarazione di namespace va sia nel DTD (viene considerata un attributo), sia nel documento (come dichiarazione vera e propria) 2012 22
RecipeML - DTD 2012 23
RecipeML XML tree 2012 24
RecipeML rappresentazione testuale <collection> <description>recipes suggested by Jane Dow</description> <recipe id="r117"> <title>rhubarb Cobbler</title> <date>wed, 14 Jun 95</date> <ingredient name="diced rhubarb" amount="2.5" unit="cup"/> <ingredient name="sugar" amount="2" unit="tablespoon"/> <ingredient name="fairly ripe banana" amount="2"/> <ingredient name="cinnamon" amount="0.25" unit="teaspoon"/> <ingredient name="nutmeg" amount="1" unit="dash"/> <preparation> <step> Combine all and use as cobbler, pie, or crisp. </step> </preparation> <comment> Rhubarb Cobbler made with bananas as the main sweetener. It was delicious. </comment> <nutrition calories="170" fat="28%" carbohydrates="58%" protein="14%"/> <related ref="42">garden Quiche is also yummy</related> </recipe> </collection> 2012 25
RecipeML Browsing (senza XSLT) http://www.brics.dk/ixwt ixwt/examples/recipes.xml 2012 26
RSS - Really Simple Syndication RSS 2.0 è conforme a XML 1.0 Formato standard basato su XML che ha come scopo quello di facilitare la diffusione e la promozione dei contenuti di un sito web, nonché lo scambio e l inclusione di tali contenuti da un sito all altro Feed RSS: documento XML collegato alle nostre pagine web che permette ai nostri visitatori di restare sempre al corrente nostri aggiornamenti e sui nuovi contenuti che andiamo ad inserire (articoli, post, video, ecc.), senza dovere ogni volta collegarsi direttamente al sito La codifica di default di un documento RSS è UTF-8 Un feed RSS non appartiene di default a nessun namespace identificato da un URI ma possiamo usare il namespace XHTML (http://www.w3.org/1999/xhtml) o il namespace Dublin Core (http://purl.org/dc/elements/1.1/) Feed RSS 2.0 validator http://feed2.w3.org/docs/rss2.html 2012 27
RSS - Elementi channel - definisce i nostri contenuti con maggiore precisione. Questo elemento ospita sia informazioni sul nostro sito che i contenuti veri e propri suddivisi per voci (item). I figli di channel: title - ogni feed RSS deve avere un titolo link - accetta come valore un URL assoluto che definisce l indirizzo web del feed description - serve a far visualizzare una breve descrizione del feed language - specifica la lingua del feed pubdate e lastbuilddate - indicano, rispettivamente, la data di pubblicazione e di ultima modifica del nostro feed. Sono fondamentali (ma non obbligatori) per l aggiornamento dei contenuti da parte delle applicazioni che gestiscono i feed RSS item - contiene le risorse che vogliamo condividere con il nostro feed. Ci può essere più di un elemento item all interno di un elemento channel e un elemento item può contenere gli elementi elencati prima ( tranne l elemento channel) 2012 28
RSS - Esempio <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>acme News</title> <link>http://www.acme.com/news</link> <description>ultime news da ACME</description> <language>it</language> <pubdate>sun, 7 Feb 2010 20:00:00 GMT</pubDate> <lastbuilddate>sun, 7 Feb 2010 20:00:00 GMT</lastBuildDate> <item> <title>lorem ipsum</title> <link>http://www.acme.com/news/07/02/2010/lorem-ipsum</link> <description>lorem quondam scripsit articulum de originibus librorum et ivit via sicut eius est mos, sed nescit quod meditavit nugarum totus in illis. </description> <pubdate>sun, 7 Feb 2010 20:00:00 GMT</pubDate> </item> </channel> </rss> 2012 29
ebxml Elettronic Business XML initiative 2012 30
SVG Scalable Vector Graphics 2012 31
Limiti di XML Verbosità e complessità Mapping relazionale Leggibilità per l uomo Meglio orientato ai documenti che ai dati Competitors: JSON (JavaScript Object Notation) - Uno standard leggero progettato per lo scambio di dati derivato da JavaScript YAML (Yet Another Markup Language) formato per la serializzazione di dati utilizzabile dagli esseri umani, derivato da C, Perl e Python 2012 32
Lista dei vini - XML 2012 33
Lista dei vini - JSON 2012 34
Riferimenti Specifiche http://www.w3.org/xml/ http://www.w3.org/tr/xml/ http://www.w3.org/tr/xml11/ http://www.w3.org/tr/xml-names11/ http://www.w3.org/tr/rec-xml-names/ Testo consigliato A. Moller and M. Schwartzbach, An Introduction to XML and Web Technologies, Addison Wesley, 2006 [cap. 2] 2012 35