Laboratorio di reti II: Extensible Markup Language · E’ inoltre possibile raggruppare vari...
Transcript of Laboratorio di reti II: Extensible Markup Language · E’ inoltre possibile raggruppare vari...
Laboratorio di reti II: Extensible Markup Language
Stefano [email protected]
20 aprile, 2009
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 1 / 27
Il linguaggio XML
Il linguaggio XML
L’ XML (eXtensible Markup Language) e un linguaggio a tag per ilsalvataggio di dati
L’ XML nasce con l’obiettivo di fornire un linguaggio universale concui definire l’informazione, comprensibile indipendentementedall’applicazione che la ha generata
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 2 / 27
Il linguaggio XML
XML ben formati
Per essere ben formato, un file XML deve soddisfare i seguentisemplici requisiti:
Un documento XML e formato da una serie di tag per cui ad ogni tagaperto corrisponde un tag chiuso
Non ci sono tag predefiniti: qualsiasi tag puo essere definito edutilizzato da chi scrive l’XMLCome in HTML, e possibile specificare degli attributi per i tag
I tag devono essere correttamente annidati
Deve esistere un tag, detto radice, che contiene tutto il documento
All’inizio del documento specificare la versione dell’XML e la codificadel file tramite la sintassi
<?xml version="1.0" encoding="ISO-8859-1"?>
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 3 / 27
Il linguaggio XML
XML
Un esempio di file XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mail>
<da> Marco Rossi </da>
<a> Giulio Bianchi </a>
<soggetto> XML </soggetto>
<corpo> Una mail in XML </corpo>
</mail>
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 4 / 27
Il linguaggio XML
Portabilita ed estendibilita
Se nell’esempio due diverse applicazioni volessero manipolare filerappresentanti una mail, potrebbero semplicemente creare file XML especificare il significato del contenuto dei vari tag
Un’altra caratteristica fondamentale dell’XML e l’estendibilita: ad unfile XML possono venir aggiunti ulteriori tag senza precluderel’interpretazione di quelli gia esistenti
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 5 / 27
Il linguaggio XML
Esempio di estendibilita
Supponiamo che un’applicazione crei il file XML vistoprecedentemente e vi aggiunga la riga
<priorita> alta </priorita>
Se un’altra applicazione legge il file e non sa interpretare il tag<priorita> nulla le vieta di processare correttamente gli altri campi
Inoltre scrivendo tag con un nome che esprime chiaramente il lorosignificato, e possibile che anche senza una specifica ufficiale se unprogramma non comprende il tag questo potrebbe esserecomprensibile da un utente
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 6 / 27
Il linguaggio XML Document Type Definition
Document Type Definition
Per definire una famiglia di documenti XML che rispetta determinateproprieta si puo definire un Document Type Definition (DTD)
Proposte ultimamente diverse alternative ai DTD, come per esempiogli XML schema
Un DTD permette di specificare che in un documento XML devonoessere presenti dei determinati tag strutturati in un certo modo
Due modi per specificare un DTD per un documento XML:
Direttamente nel file XML, con la sintassi<!DOCTYPE tagradice [ ... ] >
In un file esterno tramite la sintassi<!DOCTYPE tagradice SYSTEM "filedtd ">
Dove tagradice rappresenta il tag che contiene tutto il documento
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 7 / 27
Il linguaggio XML Document Type Definition
Dichiarazioni in un DTD
In un DTD vengono specificate delle dichiarazioni su cosa undeterminato tag deve contenere con la seguente sintassi
<!ELEMENT nometag contenuto >
Nometag rappresenta il nome del tag da descrivere
Contenuto rappresenta cio che il tag deve contenere e puo averevalore:
EMPTY se il tag deve essere vuotoANY se il tag puo avere qualsiasi contenuto(contenuto) se si vuole specificare che il tag deve contenere altri tage/o altro contenuto
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 8 / 27
Il linguaggio XML Document Type Definition
Dichiarazioni in un DTD
Nel contenuto di un tag, la stringa #PCDATA rappresenta uncontenuto che non contiene tag
Il contenuto di un tag deve essere specificato tramite la sintassi delleespressioni regolari
Un elenco separato da virgole specifica che devono essere presenti tuttigli elementiIl simbolo ’*’ dopo un simbolo specifica ’un qualsiasi numero di questielementi’Il simbolo ’+’ dopo un simbolo specifica ’uno o piu di questi elementi’Il simbolo ’?’ significa ’uno o zero di questi elementi’Il simbolo ’|’ tra due elementi e un ’o’ logicoE’ inoltre possibile raggruppare vari elementi tramite le parentesi
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 9 / 27
Il linguaggio XML Document Type Definition
Esempio di DTD
Un semplice DTD per una mail in XML potrebbe essere per esempioil seguente
<!DOCTYPE mail [
<!ELEMENT mail (da,a,cc*,soggetto,corpo,priorita?)>
<!ELEMENT da (#PCDATA)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT cc (#PCDATA)>
<!ELEMENT soggetto (#PCDATA)>
<!ELEMENT corpo (#PCDATA)>
<!ELEMENT priorita (#PCDATA)>
]>
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 10 / 27
Il linguaggio XML Document Type Definition
Attributi in un DTD
Nei DTD e possibile specificare delle direttive anche per gli attributirelativi ad un determinato tag
Un esempio che impone che un attributo debba essere necessariamentespecificato<!ATTLIST nome-tag nome-attributo CDATA #REQUIRED>
Altri esempi di vincoli che si possono specificare: che un attributopossa avere solo determinati valori, oppure che possa essere omesso edin tal caso che assuma un valore di default
Non entreremo nel dettaglio, anche perche spesso gli attributi XMLnon vengono impiegati a favore dell’utilizzo di sottotag
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 11 / 27
Il linguaggio XML XHTML
XML ed HTML
L’HTML non e un caso particolare di XML
Nell’HTML non tutti i tag devono essere necessariamente chiusi
Alcuni ammettoni per esempio chiusura implicita (come <li>), altrinon richiedono affatto tag di chiusura (come <br> o <img>)
Inoltre l’XML, al contrario dell’HTML, e case sensitive
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 12 / 27
Il linguaggio XML XHTML
Extensible HyperText Markup Language
Per esprimere pagine web tramite XML, e stato definito un linguaggioche estende l’HTML in modo da essere conforme all’XML
Nasce cosı l’ Extensible HyperText Markup Language (XHTML)
Semplicemente, un documento XHTML e un documento HTML doveogni tag aperto viene anche chiuso
Tag con chiusura implicita vanno chiusi esplicitamente:<li> 1 <li> 2 diventa <li> 1 </li><li> 2</li>
Tag che non richiedevano tag di chiusura vanno chiusi senza corpo:<br> diventa <br/>, <img src=’img.jpg’> diventa <img
src=’img.jpg’/>
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 13 / 27
Il linguaggio XML XHTML
Extensible HyperText Markup Language
Pagine in XHTML possono essere cosı processate e validate tramitestrumenti che supportano l’XML
La dichiarazione del tipo di documento per pagine XHTML deveessere conforme a questo tipo di file
Per esempio <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 14 / 27
Il linguaggio XML Gestione di XML in Java
Gestione di XML in Java
In Java sono presenti delle librerie per l’elaborazione di documentiXML
Le classi fornite nel JRE rappresentano solo le interfacce di questiparser; varie implementazioni sono disponibili in rete
Due diversi tipi di parser: SAX (Simple Api for XML) e DOM(Documento Object Model)
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 15 / 27
Il linguaggio XML Gestione di XML in Java
Parser di tipo SAX
In SAX la gestione delle informazioni ottenute dall’XML vengonogestite tramite eventi
La classe che effettua il parsing contiene dei metodi che vengonorichiamati via via che il documento viene analizzato
Esistera per esempio un metodo per quando viene trovato un tagaperto o un metodo per quando viene trovato del contenuto di un tag
Per utilizzare SAX si dovra quindi estendere il parser ed implementarequesti metodi per realizzare il comportamento desiderato
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 16 / 27
Il linguaggio XML Gestione di XML in Java
Parser di tipo DOM
In DOM invece quando il documento viene analizzato viene generatol’intero albero XML relativo
Le informazioni nel documento (tag aperti e chiusi, contenuti)vengono incapsulati in appositi oggetti
Dopo il parsing si puo ottenere l’albero del documento ed estrarre glioggetti in esso contenuti
Si possono recuperare tag sia per identificativo che navigando l’alberoXML (es. dato un tag ottenere tutti i figli di quel tag)Il Document Object Model e lo stesso modello che viene utilizzato, peresempio, da Javascript per la manipolazione dell’HTML
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 17 / 27
Il linguaggio XML Gestione di XML in Java
SAX e DOM: confronto
La scelta tra DOM e SAX deve essere fatta soppesando i vantaggio diuno o dell’altro nel contesto dell’applicazione che ne deve fare uso
Visto che SAX scorre il documento senza ricostruirne tutta lastruttura, richiede una quantita minore di memoria e tempo
Evitare di costruire tutto l’albero XML puo essere inoltre convenientequando ci interessa solo una piccola parte dei dati contenuti
L’avere a disposizione l’intero albero XML puo essere tuttavia piucomodo per alcune applicazioni
Questo permette per esempio di visitare i tag XML in modo nonsequenziale
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 18 / 27
Il linguaggio XML Un esempio di XML: gli RSS
Really Simple Syndacation
Gli RSS (Really Simple Syndacation) rappresentano un tipo didocumento XML per pubblicare delle informazioni frequentementeaggiornate
Gli RSS vengono creati ed aggiornati regolarmente da molti siti webin modo da pubblicare una sorta di riassunto delle principali novita delsito
D’altra parte utenti interessati al sito configureranno opportuniprogrammi (o semplicemente il proprio browser) per leggereregolarmente il file RSS e visualizzare le informazioni contenute
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 19 / 27
Il linguaggio XML Un esempio di XML: gli RSS
Really Simple Syndacation
Un tipico RSS generato da un sito contiene una lista di collegamenti adelle pagine nuove, dove per ognuno e specificato un titolo ed unadescrizione
Essendo questi file in XML e seguendo un DTD ben definito, qualsiasiapplicazione puo estrarre i dati contenuti e visualizzarli nel modo piuopportuno
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 20 / 27
Il linguaggio XML Un esempio di XML: gli RSS
Utilizzo di RSS
Gli RSS sono utilizzati dai browser per creare dei segnalibri dinamiciche puntano alle ultime pagine segnalate da un sito
Il browser periodicamente scarichera il file dalla URL specificata edaggiornera i segnalibri grazie alle informazioni estratte
Spesso gli RSS sono utilizzati in siti web per segnalare informazioniriguardanti altri siti considerati interessanti
Un esempio: Gmail visualizza per le ’web clips’ informazioni ottenuteda RSSNumerosi siti forniscono servizi che generano automaticamente ilcodice di un box HTML con i dati estratti da un RSS specificato
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 21 / 27
Il linguaggio XML Un esempio di XML: gli RSS
Un DTD semplificato per RSS
Vediamo una versione semplificata del DTD relativo alla specificaRSS 0.91
<!DOCTYPE rss [
<!ELEMENT rss (channel)>
<!ATTLIST rss version CDATA #REQUIRED>
<!ELEMENT channel (title | link | description | item+)*>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT item (title | link | description)*>
]>
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 22 / 27
Il linguaggio XML Un esempio di XML: gli RSS
Esempio di RSS
Un esempio di file costruito secondo il precedente DTD:
<rss version="0.91">
<channel>
<title>RSS di esempio</title>
<description>Un esempio di feed RSS</description>
<link>http://www.miosito.com</link>
<item>
<title>Nuova pagina web su miosito.com !</title>
<link>http://www.miosito.com/pagina8379.html</link>
<description>Descrizione nuova pagina web</description>
</item>
<!-- Altri oggetti <item> ... -->
</channel>
</rss>
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 23 / 27
Il linguaggio XML Un esempio di XML: gli RSS
Collegamento di RSS ad una pagina web
Un RSS si puo associare automaticamente ad una pagina web tramiteil tag link con la seguente sintassi:
<link rel = "alternate" type = "application/rss+xml"
title = "RSS title" href = "RSS url">
Negli attributi title e href andranno specificati il titolo e l’indirizzodell’RSS da associare alla pagina
In questo modo si rende possibile effettuare la sottoscrizione ad unRSS associato ad una pagina web in modo molto semplice
Firefox per esempio visualizza in questo caso un apposito pulsante
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 24 / 27
Il linguaggio XML Esercizio
Esercizio
Inserire nel forum una pagina accessibile da amministratori chepermetta di generare o aggiornare un file RSS relativo agli ultimithread del forum
Aggiuntivamente possono essere generati RSS relativi ai post di uno opiu determinati threadSarebbe inoltre interessante dare la possibilita di gestire un processoche aggiorni l’RSS periodicamente senza ulteriori istruzioni
Per verificare rapidamente se l’RSS e stato generato correttamente, epossibile utilizzare strumenti a disposizione in rete perl’interpretazione degli RSS o verificare sottoscrivendo al feed con unbrowser
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 25 / 27
Il linguaggio XML Esercizio
Esercizio
Puo essere utile iniziare creando manualmente un file statico perstabilire una struttura corretta da utilizzare
In seguito modificare gli script del forum per generare file similiautomaticamente
Infine associare il file RSS alle pagine web del forum
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 26 / 27
Il linguaggio XML Esercizio
Esercizio
Alternativamente, inserire nel proprio sito un box contenenteinformazioni ottenute da un generico RSS
Questo potrebbe avvenire ad esempio nel box personalizzato, o in unbox aggiuntivo creato appositamente
Scaricare tramite Java il file RSS desiderato ed eseguirne il parsing inmodo da estrarne le informazioni ritenute piu importanti
Visualizzare le informazioni tramite codice HTML come piu sipreferisce
Stefano Brocchi Laboratorio di reti II: XML 20 aprile, 2009 27 / 27