Sistemi per il recupero delle informazioni XML Sommario

  • Slides: 164
Download presentation
Sistemi per il recupero delle informazioni XML

Sistemi per il recupero delle informazioni XML

Sommario n Esaminiamo: ¨ ¨ ¨ Parte I: Parte III: Parte IV: Parte VI:

Sommario n Esaminiamo: ¨ ¨ ¨ Parte I: Parte III: Parte IV: Parte VI: Cos’è il markup Storia e Introduzione all’XML Documenti, dati e rappresentazioni Definizione e applicazione di grammatiche Modelli di presentazione dei documenti XML Strumenti e indirizzi per XML

Parte I Cos’è il markup Definizione di markup Tipi di markup Il markup procedurale

Parte I Cos’è il markup Definizione di markup Tipi di markup Il markup procedurale Il markup dichiarativo

Perché tutto questo chiasso? n n n Quando si porta una collezione di documenti

Perché tutto questo chiasso? n n n Quando si porta una collezione di documenti in forma elettronica, si ha di solito in mente in generale una specifica applicazione (metterla in rete, prepararla per la stampa, ecc. ). Di solito, si cerca di trasformare il documento nella forma più opportuna perché venga utilizzato nell’applicazione suddetta. Spesso per questo si fanno delle scelte che impediscono o ostacolano notevolmente un ulteriore riuso della stessa collezione per una diversa applicazione. L’impaginato poco si adatta ad un’indicizzazione per la rete, o viceversa i linguaggi di visualizzazione su rete sono troppo poco sofisticati per una produzione tipografica di buon livello, ecc. I linguaggi di markup derivati da SGML sono i linguaggi più opportuni per strutturare e marcare i documenti in maniera indipendente dall’applicazione, favorendo la riusabilità, la flessibilità e la apertura ad applicazioni complesse.

Cos’è il markup? (1) n Definiamo markup ogni mezzo per rendere esplicita una particolare

Cos’è il markup? (1) n Definiamo markup ogni mezzo per rendere esplicita una particolare interpretazione di un testo. ¨ per esempio, tutte quelle aggiunte al testo scritto che permettono di renderlo più fruibile. n Oltre a rendere il testo più leggibile, il markup permette anche di specificare ulteriori usi del testo. n Con il markup per sistemi informatici, specifichiamo le modalità esatte di utilizzo del testo nel sistema stesso.

Cos’è il markup? (2) n Quando un autore scrive, da millenni a questa parte,

Cos’è il markup? (2) n Quando un autore scrive, da millenni a questa parte, specifica anche i delimitatori di parola (chiamati spazi), i delimitatori di frase (chiamati virgole) e i delimitatori di periodo (chiamati punti). n La numerazione delle pagine o l’uso dei margini per creare effetti sul contenuto sono noti da centinaia di anni. n Eppure questo a stretto rigore non fa parte del testo, ma del markup: nessuno dirà ad alta voce ‘virgola’ o ‘punto’ nel leggere un testo, ma creerà adeguati comportamenti paralinguistici (espressioni, toni, pause) per migliorare in chi ascolta la comprensione del testo.

Tipi di markup n Il markup assolve a diversi ruoli a seconda del sistema

Tipi di markup n Il markup assolve a diversi ruoli a seconda del sistema di elaborazione, dell’applicazione, dello scopo a cui il documento è soggetto. ¨ Puntuazionale: punteggiatura, spazi, ecc. ¨ Presentazionale: ritorni a capo, allineamenti, cambi pagina, ecc. ¨ Procedurale: le istruzioni di computer da eseguire per ottenere un certo effetto ¨ Descrittivo: l’associazione ad ogni porzione di un documento dell’etichetta che ne descrive il senso e il ruolo ¨ Referenziale: l’uso di abbreviazioni e sigle che fanno riferimento e vengono sostituite con entità più lunghe e complesse.

Un testo su carta Capitolo primo Tre Uomini in Barca Tre invalidi - Le

Un testo su carta Capitolo primo Tre Uomini in Barca Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - […] Jerome K. Jerome Eravamo in quattro: George, William Samuel Harris, e io, Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. Ci sentivamo tutti piuttosto giù di corda, . . . 1889 3

Il testo senza markup n Questo è il testo completamente senza markup, come poteva

Il testo senza markup n Questo è il testo completamente senza markup, come poteva essere scritto su un papiro della biblioteca di Alessandria, nel II o III secolo a. C. Treuominiinbarcajeromekjerome 1889 capitolopri motreinvalidilesofferenzedigeorgeeharrislavittim adicentosettemalattieinguaribilieravamoinquattr ogeorge, williamsamuelharrisioemontmorencyst andocenesedutiincameramiafumavamoeparlav amodiquantofossimomalridottidalpunt odivistadellasaluteintendonaturalmentecisentiv amotuttipiuttostogiùdicorda

Markup metabolizzato n Aggiungiamo markup puntuazionale e presentazionale: maiuscole/minuscole, punteggiatura, spazi e ritorni a

Markup metabolizzato n Aggiungiamo markup puntuazionale e presentazionale: maiuscole/minuscole, punteggiatura, spazi e ritorni a capo sono essi stessi elementi di markup. Tre Uomini in Barca Jerome K. Jerome (1889) Capitolo primo Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - […] Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. Ci sentivamo tutti piuttosto giù di corda, . . .

Markup procedurale n Sono comandi, o istruzioni che il sistema di lettura (umano o

Markup procedurale n Sono comandi, o istruzioni che il sistema di lettura (umano o elettronico) deve eseguire sul testo. Ad esempio, istruzioni su come andare a capo, come decidere i margini, ecc. Questo è RTF. {rtf 1 mac ansicpg 10000 uc 1 pard plain s 15 qc widctlpar adjustright f 4 fs 48 cgrid {Tre Uomini in Barca par } pard plain widctlpar adjustright f 4 cgrid { line par par } pard plain s 1 qc keepn widctlpar outlinelevel 0 adjustright i f 4 fs 36 cgrid {Jerome K. Jerome par } pard plain qc widctlpar adjustright f 4 cgrid { fs 36 […] par 1889 line par } pard widctlpar adjustright { page } { b fs 36 Capitolo primo} { par line } { i Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - [ u 8230 'c 9] par } { line } { fs 28 Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti u 8230 'c 9 malridotti, dal punto di vista della salute, intendo, naturalmente. line Ci sentivamo tutti piuttosto gi u 249 '9 d di corda, . . . par }}

Il markup procedurale n Basato sull’aspetto ¨ Ad ogni elemento del documento viene associata

Il markup procedurale n Basato sull’aspetto ¨ Ad ogni elemento del documento viene associata la procedura per visualizzarlo in maniera voluta: font, dimensione, corsivi, grassetti, margini, interlinea, ecc. n Dipendente dal sistema ¨ ogni sistema di visualizzazione impone le proprie regole e la propria sintassi. n Associato agli individui ¨ ogni elemento possiede le proprie procedure per la visualizzazione, che possono anche essere tutte diverse anche per elementi dello stesso tipo. n Non contestuale ¨ le regole di visualizzazione non dipendono dal contesto in cui vengono fatte, ma ognuna fa specie a sé.

Markup descrittivo n Sono informazioni (descrizioni) sugli elementi del documento, che ne specificano il

Markup descrittivo n Sono informazioni (descrizioni) sugli elementi del documento, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi. <ROMANZO> <TITOLO>Tre Uomini in Barca</TITOLO> <AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO> <CAPITOLO> <TITOLO>Capitolo primo</TITOLO> <INDICE> <EL>Tre invalidi</EL> <EL>Le sofferenze di George e Harris </EL> <EL>La vittima di centosette malattie inguaribili</EL> </INDICE> <PARA>Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. </PARA> <PARA>Ci sentivamo tutti piuttosto giù di corda, </PARA> </CAPITOLO>… </ROMANZO>

Il markup descrittivo n Basato sul ruolo ¨ di ogni elemento viene descritto il

Il markup descrittivo n Basato sul ruolo ¨ di ogni elemento viene descritto il ruolo all’interno del testo, più che le regole per la sua visualizzazione: n n ad esempio: “questo è un titolo, questo è un paragrafo, questo è il nome dell’autore, questa è una citazione. ” Indipendente dal sistema ¨ poiché il markup descrittivo assegna ruoli (e non regole di visualizzazione) agli elementi del testo, questi sono intrinseci agli elementi stessi, e non alle funzionalità disponibili nel sistema di visualizzazione. ¨ un sistema incapace di variare l’interlinea, o con un elenco limitato di font e dimensioni, può aver problemi ad interpretare un markup procedurale troppo ricco, ma la differenza tra (per esempio) un “titolo” o un “elenco” o un “paragrafo” non dipende dalla sofisticazione del sistema di visualizzazione.

Il markup descrittivo n Basato su categorie ¨ i ruoli sono categorie. Ogni elemento

Il markup descrittivo n Basato su categorie ¨ i ruoli sono categorie. Ogni elemento è associato ad una categoria, e ne riflette tutte le caratteristiche automaticamente. n Contestuale ¨ con il markup dichiarativo è possibile definire delle regole che permettano o impediscano l’assegnazione di una categoria (ruolo) ad un elemento del testo a seconda del contesto. ¨ ad esempio, si può richiedere che il titolo vada all’inizio del testo, o che una lista sia composta solo di elementi della lista, e non da paragrafi, ecc.

La storia del markup n n n n 1969 : Charles Goldfarb (IBM) dirige

La storia del markup n n n n 1969 : Charles Goldfarb (IBM) dirige lo sviluppo di GML 1974 : Charles Goldfarb inventa SGML, il padre dei linguaggi di marcatura 1986: SGML diventa uno standard ISO (ISO 8879 – “Standard Generalized Markup Language'') 1989: Tim-Berners Lee (CERN di Ginevra) inventa HTML 1995: Fondazione del World Wide Web Consortium (W 3 C) 1996: Inizio dello sviluppo di XML presso il W 3 C 1998: XML 1. 0 diventa una raccomandazione W 3 C

SGML n SGML (Standard Generalized Markup Language) è un meta-linguaggio standard e non proprietario

SGML n SGML (Standard Generalized Markup Language) è un meta-linguaggio standard e non proprietario per il markup dichiarativo. Facilita markup leggibili, generici, strutturati, gerarchici. ¨ Un meta-linguaggio è un linguaggio per definire linguaggi, una grammatica di costruzione di linguaggi. ¨ non proprietario significa che non esiste un’unica ditta o casa produttrice che ne detiene il controllo. In SGML il markup è posto in maniera leggibile a fianco degli elementi del testo a cui si riferiscono. n SGML ha teorizzato l’uso del markup per informazioni (descrizioni) sugli elementi dei documenti, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi. n SGML permette di definire delle strutture, suggerite o imposte, a cui i documenti si debbono adeguare. ¨ le strutture imposte da SGML sono tipicamente a livelli di dettaglio successivi. n

Parte II Storia e Introduzione a XML

Parte II Storia e Introduzione a XML

INTRODUZIONE - I n L'e. Xtensible Markup Language (XML) non è l'ennesimo linguaggio di

INTRODUZIONE - I n L'e. Xtensible Markup Language (XML) non è l'ennesimo linguaggio di markup né l'evoluzione dell'HTML. n Esso è un meta- linguaggio di markup, cioè un linguaggio che permette di definire altri linguaggi di markup. ¨ progettato per lo scambio e la interusabilità di documenti strutturati su Internet. n A differenza di HTML, XML non ha tag predefiniti e non serve per definire pagine Web né per programmare. n Serve esclusivamente per definire altri linguaggi.

INTRODUZIONE - II XML di per sé è un insieme standard di regole sintattiche

INTRODUZIONE - II XML di per sé è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati. Questo insieme di regole, dette specifiche, definiscono le modalità secondo cui è possibile crearsi un proprio linguaggio di markup. Le specifiche ufficiali sono state definite dal W 3 C (Worl Wide Web Consortium) e sono consultabili a partire dall'indirizzo http: //www. w 3. org/XML.

PERCHE’ ? Ma perché si sente tanto parlare di XML? Perché tutti ne parlano

PERCHE’ ? Ma perché si sente tanto parlare di XML? Perché tutti ne parlano quasi come una rivoluzione in ambito informatico? Cosa è possibile fare con questo meta- linguaggio? Come è possibile definire ed utilizzare un proprio linguaggio di markup?

UN PO’ DI STORIA n n Internet ed il Web hanno bisogno di standard

UN PO’ DI STORIA n n Internet ed il Web hanno bisogno di standard per poter essere utilizzabili e per poter evolvere senza forzature. A questo scopo è stato istituito il Worl Wide Web Consortium nel dicembre del 1994 con l'obiettivo di definire standard accettati dai maggiori produttori di software per il Web, primo fra tutti il linguaggio HTML. n L'assalto commerciale ad Internet degli anni '90 e la rapida diffusione del Web ha scatenato una delle lotte più agguerrite sul piano tecnico e commerciale: la guerra dei browser tra Netscape e Microsoft. ¨ ciascun contendente introduceva, con ogni nuova versione del proprio browser, una estensione proprietaria all'HTML. n Risultato: un sito Web che usava le estensioni proprietarie di un browser rischiava di risultare inaccessibile agli altri browser.

UN PO’ DI STORIA – NASCITA DELL’XML n In questo contesto cominciò a delinearsi

UN PO’ DI STORIA – NASCITA DELL’XML n In questo contesto cominciò a delinearsi la necessità di un linguaggio di markup che offrisse maggiore libertà nella definizione dei tag pur rimanendo nell'ambito del rispetto di uno standard. n n Nel 1996 si costituì l'XML Working Group nell'ambito del W 3 C. ¨ lo scopo del gruppo di lavoro era quello di definire un linguaggio che salvasse gli standard e offrisse libertà di estensione. La ricerca partì dall’SGML un meta-linguaggio per la definizione di linguaggi di markup. ¨ questo linguaggio risultava troppo complesso per gli scopi della ricerca e fu semplificato n Nel dicembre '97 le specifiche di XML venivano pubblicate.

UN PO’ DI STORIA n Anche se gli obiettivi iniziali della nascita di XML

UN PO’ DI STORIA n Anche se gli obiettivi iniziali della nascita di XML erano rivolti alla soluzione di un problema di standard per il Web, ben presto ci si accorse che XML non era limitato al solo contesto Web. n L’XML risulta essere abbastanza generale per poter essere utilizzato nei più disparati contesti: dalla definizione della struttura di documenti allo scambio di informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati. ¨ questo aspetto rappresentava una rivoluzione

IL MONDO DI XML n Dopo aver conosciuto la storia dell'origine di XML, la

IL MONDO DI XML n Dopo aver conosciuto la storia dell'origine di XML, la domanda che sorge è: allora XML sostituirà l'HTML? n Anche se il dubbio risulta legittimo, possiamo dire che XML e HTML non sono in diretta concorrenza. n Le specifiche di HTML sono ferme alla versione 4. 0 del dicembre 1997 (ignorando le piccole revisioni della 4. 01) , tuttavia XML contribuisce proprio all'evoluzione dell'HTML.

IL LINGUAGGIO XHTML n n n L'evoluzione del linguaggio HTML è XHTML (e. Xtensible

IL LINGUAGGIO XHTML n n n L'evoluzione del linguaggio HTML è XHTML (e. Xtensible HTML), una ridefinizione di HTML in termini di XML. XHTML è HTML definito secondo le regole di XML. Le differenze più evidenti si riassumono brevemente: ¨ tutti i tag e i loro attributi sono espressi in minuscolo ¨ è obbligatorio inserire il tag di chiusura n ¨ i valori degli attributi devono essere specificati tra doppi apici o singoli apici n ¨ (es. se usiamo <p> dobbiamo chiudere con </p>) (es. <table width="30%">) i tag vuoti seguono la cosiddetta sintassi minimizzata n (es, il tag diventa <br/>)

IL LINGUAGGIO XHTML n Possono sembrare differenze di poco conto, soprattutto perché la tolleranza

IL LINGUAGGIO XHTML n Possono sembrare differenze di poco conto, soprattutto perché la tolleranza dei browser ci ha abituato a commettere errori sintattici, ma sono molto importanti. n Le pagine strutturate in XHTML possono essere elaborate da software diversi dai classici browser ¨ ad es. gli spider dei motori di ricerca, i sintetizzatori vocali, i dispositivi wireless, …

XML: standardizzato e strutturato n Abbiamo detto che XML è un insieme standard di

XML: standardizzato e strutturato n Abbiamo detto che XML è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati. n Due parole sono di fondamentale importanza: standard e struttura. n Le regole sono standard e questo garantisce l'indipendenza da una specifica piattaforma hardware e software o da uno specifico produttore. n Le regole di XML consentono di definire la struttura di documenti e dati, ma non altre caratteristiche come il tipo o la presentazione dei dati o documenti. Questo compito non è di XML ma è delegato ad altre tecnologie, alcune delle quali sono basate sullo stesso XML.

I vantaggi di XML n n Documenti auto-descrittivi ¨ la scelta dei nomi degli

I vantaggi di XML n n Documenti auto-descrittivi ¨ la scelta dei nomi degli elementi può essere fatta per facilitare la comprensione del ruolo strutturale dell’elemento. Struttura navigabile dei documenti ¨ la rigida struttura ad albero e l’assenza di regole di minimizzazione rendono semplice la visualizzazione Platform-independence ¨ XML è uno standard aperto, e chiunque può realizzare strumenti che lo usino come formato di dati. Facile convertibilità a formati Web ¨ la totale interdipendenza tra XML, SGML, HTML etc. fa sì che la conversione tra formati interni e formati per il Web sia facile.

Cosa c’è con XML? n n XML è in realtà una famiglia di linguaggi,

Cosa c’è con XML? n n XML è in realtà una famiglia di linguaggi, alcuni già definiti, altri in corso di completamento. Alcuni hanno l’ambizione di standard, altri sono solo proposte di privati o industrie interessate. Alcuni hanno scopi generali, altri sono applicazioni specifiche per ambiti più ristretti. Noi ci occupiamo, tra gli altri, di: ¨ XML 1. 0: un meta-linguaggio di markup, sottoinsieme di SGML ¨ XML-Namespace: un meccanismo per la convivenza di nomi di tag appartenenti a DTD diversi ¨ XPath per la creazione di link ipertestuali ¨ XSL: un linguaggio di stylesheet per XML ¨ XML schema: un linguaggio per la specifica di criteri di validazione di documenti XML

Cosa si fa con XML? n Data Interchange ¨ Ogni volta che più programmi

Cosa si fa con XML? n Data Interchange ¨ Ogni volta che più programmi si debbono scambiare dati, ci sono problemi di compatibilità. Ogni programma ha le proprie assunzioni in termini di caratteri, separatori, ripetibilità di elementi, differenza tra elementi vuoti e assenti, ecc. ¨ XML si propone come la sintassi intermedia più semplice per esprimere dati anche complessi in forma indipendente dall’applicazione che li ha creati. n Document publishing ¨ XML è ideale come linguaggio per esprimere documenti strutturati o semi strutturati, e per esprimerli in maniera indipendente dalla loro destinazione finale. ¨ Lo stesso documento XML può essere preso e trasformato per la stampa, il Web, il telefonino, l’autoradio.

Cosa si fa con XML? (2) n Interazione tra database eterogenei ¨ Ogni volta

Cosa si fa con XML? (2) n Interazione tra database eterogenei ¨ Ogni volta che è necessario trasferire dei dati da un database all’altro, la soluzione più economica è stampare i dati dal primo DB su carta e ribatterli a mano sul secondo. ¨ Idealmente si vorrebbe accedere via Web ai dati del primo DB, selezionare quelli di interesse, e spostarli sul secondo DB, che si preoccupa di adattarli alle sue esigenze. ¨ Il secondo DB, dunque, deve essere in grado di comprendere la sintassi dei dati, di interpretare la struttura e di isolare le informazioni di suo interesse. ¨ Per questo potrebbe essere aiutato da un formato di interscambio tipo XML, che permetterebbe di etichettare i dati esplicitamente.

HTML vs XML Cosa è questo ? <td> 12 </td> • Il numero civico

HTML vs XML Cosa è questo ? <td> 12 </td> • Il numero civico di una via ? • Il numero di telefono per ottenere informazioni sugli abbonati ? • Entrambe le cose ? • Nessuna delle due ?

HTML vs XML n HTML nacque come evoluzione del SGML, che permetteva di mettere

HTML vs XML n HTML nacque come evoluzione del SGML, che permetteva di mettere in rete documenti di un tipo molto specifico, semplici documenti di testo con qualche immagine e dei link ipertestuali. n Con il successo del WWW, HTML venne iniziato ad usare per molti scopi, molti più di quelli per cui era stato progettato. n Si iniziò ad abusare dei tag di HTML per gli effetti grafici che forniva, più che per gli aspetti strutturali o semantici. n Si iniziarono a desiderare elaborazioni sofisticate sui dati HTML, elaborazioni che non era possibile fornire. n Si iniziò a trovare limitata la capacità grafica di HTML, anche abusando dei tag.

Un markup con HTML <p> <b> Sig. Mario Rossi </b> Via Verdi, 12 56100,

Un markup con HTML <p> <b> Sig. Mario Rossi </b> Via Verdi, 12 56100, Pisa Sig. Mario Rossi Via Verdi, 12 56100, Pisa

Interpretazione dell’HTML Il nostro algoritmo per trovare il numero civico: Se un paragrafo contiene

Interpretazione dell’HTML Il nostro algoritmo per trovare il numero civico: Se un paragrafo contiene due tag allora la prima parola dopo la prima virgola dopo il primo tag è il numero civico.

Un semplice markup in XML <business-card> <persona> <titolo> Sig. </titolo> <nome> Mario </nome> <cognome>

Un semplice markup in XML <business-card> <persona> <titolo> Sig. </titolo> <nome> Mario </nome> <cognome> Rossi </cognome> </persona> <indirizzo> <strada> Via Verdi </strada> <numero-civico> 12 </numero-civico> <cap> 56100 </cap> <città> Pisa </città> </indirizzo> </business-card>

Visualizzazione dell’XML Come l’HTML Sig. Mario Rossi Via Verdi, 12 56100, Pisa ma anche…

Visualizzazione dell’XML Come l’HTML Sig. Mario Rossi Via Verdi, 12 56100, Pisa ma anche… Sig. Mario Rossi Via Verdi, 12 56100, Pisa

Interpretazione dell’XML Un algoritmo migliore e più semplice per trovare il numero civico: il

Interpretazione dell’XML Un algoritmo migliore e più semplice per trovare il numero civico: il numero civico è il contenuto del tag <numero-civico>

Un Esempio in XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Un Esempio in XML <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> La nota si descrive da sola: ha un mittente, un destinatario, un’intestazione e un messaggio.

XML: gli obiettivi n Questi gli obiettivi progettuali di XM secondo il W 3

XML: gli obiettivi n Questi gli obiettivi progettuali di XM secondo il W 3 C XML Working Group: ¨ XML deve essere utilizzato in modo semplice su Internet. ¨ XML deve supportare un gran numero di applicazioni. ¨ XML deve essere compatibile con SGML. ¨ Deve essere facile lo sviluppo di programmi che elaborino XML. ¨ Il numero di caratteristiche opzionali deve essere mantenuto al minimo possibile, idealmente a zero. ¨ I documenti XML dovrebbero essere leggibili da un uomo e ragionevolmente chiari. ¨ La progettazione XML dovrebbe essere rapida. ¨ La progettazione XML dovrebbe essere formale e concisa. ¨ I documenti XML devono essere facili da creare. ¨ Non è di nessuna importanza l’economia nel markup XML.

Parte III Documenti, dati e rappresentazioni

Parte III Documenti, dati e rappresentazioni

STRUTTURA DEI DOCUMENTI XML n n Concretamente, un documento XML è un file di

STRUTTURA DEI DOCUMENTI XML n n Concretamente, un documento XML è un file di testo che contiene una serie di tag, attributi e testo secondo regole sintattiche ben definite. ¨ documento va inteso nel senso generale di contenitore di informazioni Analizziamo ora XML dal punto di vista logico e sintattico e i documenti che con esso si possono creare dando uno sguardo alla struttura logica. Un documento XML è intrinsecamente caratterizzato da una struttura gerarchica. E’ composto da componenti denominati elementi. ¨ ciascun elemento rappresenta un componente logico del documento e può contenere altri elementi (sottoelementi) o del testo. ¨ gli elementi possono avere associate altre informazioni che ne descrivono le proprietà, chiamate attributi. L'organizzazione degli elementi segue un ordine gerarchico o arboreo che prevede un elemento principale (root element o radice). ¨ la radice contiene l'insieme degli altri elementi del documento.

Struttura gerarchica di un documento XML Possiamo rappresentare graficamente la struttura di un documento

Struttura gerarchica di un documento XML Possiamo rappresentare graficamente la struttura di un documento XML tramite un albero, noto come document tree. Prendiamo in considerazione la rappresentazione di un generico articolo a carattere tecnico e proviamo a rappresentarlo secondo il modello XML.

Struttura gerarchica di un documento XML Root elementi Attributo

Struttura gerarchica di un documento XML Root elementi Attributo

Struttura logica di un documento XML n La struttura logica di un documento XML

Struttura logica di un documento XML n La struttura logica di un documento XML dipende dalle scelte progettuali. Siamo noi a decidere come organizzare gli elementi all'interno di un documento XML. ¨ non esistono regole universali per l'organizzazione logica di un documento. n La struttura logica di un documento XML viene tradotta in una corrispondente struttura fisica composta di elementi sintattici chiamati tag. ¨ questa struttura fisica viene implementata tramite un file di testo creato con un qualsiasi editor.

Struttura logica di un documento XML <? xml version="1. 0" ? > <articolo titolo="Titolo

Struttura logica di un documento XML <? xml version="1. 0" ? > <articolo titolo="Titolo dell'articolo"> <paragrafo titolo="Titolo del primo paragrafo"> <testo> Blocco di testo del primo paragrafo </testo> <immagine file="immagine 1. jpg"> </immagine> </paragrafo> <paragrafo titolo="Titolo del secondo paragrafo"> <testo> Blocco di testo del secondo paragrafo </testo> <codice> rappresentazione fisica Esempio di codice del documento XML </codice> <testo> visto prima Altro blocco di testo </testo> </paragrafo> <paragrafo tipo="bibliografia"> <testo> Riferimento ad un articolo </testo> </paragrafo> </articolo>

Struttura logica di un documento XML n La prima riga del documento lo identifica

Struttura logica di un documento XML n La prima riga del documento lo identifica come un documento XML e ne specifica la versione (in questo caso la 1. 0): <? xml version="1. 0" ? > n Il corpo del documento segue questa prima riga, rappresentando gli elementi tramite tag, cioè sequenze di caratteri delimitate dai segni '<' e '>‘, come in HTML. Ma a differenza dell'HTML in cui i tag sono predefiniti, XML ci lascia liberi di definire i tag che vogliamo. Per specificare un attributo per un elemento inseriamo il nome dell’attributo con il relativo valore all’interno del tag di apertura dell’elemento ¨ l'organizzazione gerarchica degli elementi viene rappresentata in XML tramite il loro annidamento. n n Alcuni elementi possono essere vuoti, cioè possono essere privi di contenuto testuale. A differenza di quanto avviene per l'HTML, XML prevede che vengano sempre specificati i tag di apertura e chiusura. ¨ È questo il caso del tag immagine. ¨ Sintassi abbreviata: <immagine file="immagine 1. jpg“/>

DOCUMENTI BEN FORMATI n XML richiede un certo rigore sugli aspetti sintattici. ¨ ad

DOCUMENTI BEN FORMATI n XML richiede un certo rigore sugli aspetti sintattici. ¨ ad es. un tag vuoto deve prevedere il tag di chiusura o la sua forma abbreviata n Un principio fondamentale a cui tutti i documenti XML devono sottostare è infatti: ¨ tutti i documenti XML devono essere ben formati (well formed). ¨ questo concetto è assimilabile in qualche modo alla correttezza ortografica di una lingua ed è un principio a cui i documenti XML non possono sottrarsi.

DOCUMENTI BEN FORMATI n Perché un documento XML sia ben formato deve rispettare le

DOCUMENTI BEN FORMATI n Perché un documento XML sia ben formato deve rispettare le seguenti regole: ¨ ogni documento XML deve contenere un unico elemento di massimo livello (root) che contenga tutti gli altri elementi del documento. Le sole parti di XML che possono stare all'esterno di questo elemento sono i commenti e le direttive di elaborazione ¨ ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>) ¨ gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l'ordine inverso dei rispettivi tag di apertura ¨ XML fa distinzione tra maiuscole e minuscole, ¨ i valori degli attributi devono sempre essere racchiusi tra singoli o doppi apici

DOCUMENTI non BEN FORMATI La violazione di una qualsiasi di queste regole fa in

DOCUMENTI non BEN FORMATI La violazione di una qualsiasi di queste regole fa in modo che il documento risultante non venga considerato ben formato. Codice del tipo <articolo titolo=test>. . . </Articolo> darà qualche problema, e lo stesso dicasi per situazioni analoghe alla seguente: <paragrafo> <testo> abcdefghi. . . </paragrafo> </testo> Anche la scelta dei nomi dei tag deve seguire alcune regole. Un tag può iniziare con un lettera o un underscore (_) e può contenere lettere, numeri, il punto, l'underscore (_) o il trattino (-). Non sono ammessi spazi o altri caratteri. XML è sensibile all'uso di maiuscolo e minuscolo, quindi i tag <prova> e <Prova> sono considerati diversi.

DOCUMENTI BEN FORMATI – contenuto n n Un documento XML può contenere potenzialmente qualsiasi

DOCUMENTI BEN FORMATI – contenuto n n Un documento XML può contenere potenzialmente qualsiasi carattere dell'alfabeto latino, cifre e punteggiatura. ¨ normalmente vengono accettati come caratteri validi in un documento XML i primi 128 caratteri della codifica ASCII (lettere dell'alfabeto latino minuscole e maiuscole, cifre, segni di punteggiatura, ecc. ). ¨ se un documento contiene caratteri che non rientrano tra questi (es. : lettere accentate, simboli di valuta, ecc. ) è necessario specificare lo schema di codifica utilizzato. Lo schema di codifica ed altre informazioni dirette al software incaricato di elaborare il documento XML sono indicate tramite elementi speciali detti direttive di elaborazione o processing instruction. ¨ ad esempio, la seguente direttiva di elaborazione: <? xml version="1. 0" encoding="iso-8859 -1"? > abilita l'uso del set di caratteri noto come Latin 1 contenente le lettere accentate.

DOCUMENTI BEN FORMATI – commenti n In un documento XML possiamo trovare i commenti,

DOCUMENTI BEN FORMATI – commenti n In un documento XML possiamo trovare i commenti, cioè informazioni ignorate dai software che lo elaborano. n I commenti XML seguono la stessa sintassi dell'HTML, sono cioè racchiusi tra le sequenze di caratteri <!– e --> e possono trovarsi in qualsiasi punto del documento. ¨ <!– bla bla -->

DOCUMENTI BEN FORMATI – entità n Potrebbe essere necessario inserire in un documento XML

DOCUMENTI BEN FORMATI – entità n Potrebbe essere necessario inserire in un documento XML dei caratteri particolari che potrebbero renderlo non ben formato. ¨ ad esempio, se dobbiamo inserire del testo che contiene il simbolo <, corriamo il rischio che possa venire interpretato come l'inizio di un nuovo tag, come nel seguente esempio: <testo> il simbolo < indica minore di </testo> n Per evitare situazioni di questo tipo, XML prevede degli oggetti speciali detti entità che consentono di sostituire altri caratteri.

DOCUMENTI BEN FORMATI – entità n Cinque entità sono predefinite e consentono l'uso di

DOCUMENTI BEN FORMATI – entità n Cinque entità sono predefinite e consentono l'uso di altrettanti caratteri riservati all'interno di un documento: ¨ & definisce il carattere & ¨ < definisce il carattere < ¨ > definisce il carattere > ¨ " definisce il carattere “ ¨ &apos; definisce il carattere ‘ n Sfruttando le entità, l'esempio precedente diventa: <testo> il simbolo < indica minore di </testo>

DOCUMENTI BEN FORMATI – CDATA n In determinate situazioni gli elementi da sostituire con

DOCUMENTI BEN FORMATI – CDATA n In determinate situazioni gli elementi da sostituire con le entità possono essere molti, il che rischia di rendere illeggibile il testo ad essere umano. ¨ si consideri il caso in cui un blocco di testo illustri proprio del codice XML: <codice> <libro> <capitolo> </libro> </codice> n n In questo caso, al posto di sostituire tutte le occorrenze dei simboli speciali con le corrispondentità è possibile utilizzare una sezione CDATA. Una sezione CDATA (Character DATA) è un blocco di testo che viene considerato sempre come testo, anche se contiene codice XML o altri caratteri speciali.

DOCUMENTI BEN FORMATI – CDATA Per indicare una sezione CDATA è sufficiente racchiuderla tra

DOCUMENTI BEN FORMATI – CDATA Per indicare una sezione CDATA è sufficiente racchiuderla tra le sequenze di caratteri <![CDATA[ e ]]>. Il nostro esempio diventerà come segue: <codice> <![CDATA[ <libro> <capitolo> </libro> ]]> </codice> In certe situazioni non si conosce a priori il contenuto che può essere inserito in un blocco di testo e pertanto l'utilizzo delle sezioni CDATA risulta obbligatorio.

DOCUMENTI VALIDI – grammatica n n n XML offre la libertà di definire i

DOCUMENTI VALIDI – grammatica n n n XML offre la libertà di definire i tag a seconda delle necessità, ma per evitare confusione è necessario un meccanismo che ne vincoli l'utilizzo all'interno dei documenti. Abbiamo bisogno di definire una grammatica per il linguaggio di markup che abbiamo ideato. Una grammatica è un insieme di regole che indica quali vocaboli (elementi) possono essere utilizzati e con che struttura è possibile comporre frasi (documenti). ¨ una grammatica definisce uno specifico linguaggio di markup. Se un documento XML rispetta le regole definite da una grammatica è detto valido per un particolare linguaggio. La caratteristica di documento valido si affianca a quella di documento ben formato per costruire documenti XML adatti ad essere elaborati automaticamente. Un documento ben formato può non essere valido rispetto ad una grammatica ma non rispetto a un’altra, mentre un documento valido è necessariamente ben formato.

DOCUMENTI VALIDI – grammatica n Ma come si definisce una grammatica per descrivere un

DOCUMENTI VALIDI – grammatica n Ma come si definisce una grammatica per descrivere un linguaggio di markup? n Attualmente due sono gli approcci più diffusi alla creazione di grammatiche per documenti XML: ¨ Dtd – Document Type Definition ¨ XML Schema n Questi argomenti saranno affrontati in seguito.

DOCUMENTI VALIDI – tipi di elaborazione n Un documento XML può essere all'origine di

DOCUMENTI VALIDI – tipi di elaborazione n Un documento XML può essere all'origine di diversi tipi di elaborazione : generazione di altri documenti, eventualmente in formati diversi, controllo delle impostazioni di programmi, rappresentazione di immagini, ecc. n Tutti i possibili impieghi di XML, però, si fondano su due tipi di elaborazione preliminare: la verifica che un documento sia ben formato e la sua validità rispetto ad una grammatica. n I software che si occupano di queste elaborazioni sono detti parser e sono degli strumenti standard disponibili sulle diverse piattaforme.

DOCUMENTI VALIDI – parser n Possiamo suddividere i parser in due categorie (talvolta può

DOCUMENTI VALIDI – parser n Possiamo suddividere i parser in due categorie (talvolta può essere lo stesso parser che assume due ruoli): ¨ parser non validante è un parser che verifica soltanto se un documento è ben formato ¨ parser validante è un parser che, oltre a verificare che un documento è ben formato, verifica se è corretto rispetto ad una data grammatica n La maggior parte degli editor XML più recenti hanno un parser integrato o si appoggiano su parser esterni per effettuare la convalida dei documenti.

I documenti XML n Un documento in un linguaggio di markup definito sulla base

I documenti XML n Un documento in un linguaggio di markup definito sulla base di XML è composto dalle seguenti tre parti: dichiarazione XML (opzionale) n la specifica delle opzioni attivabili nel documento XML ¨ Document Type Declaration – DDT (opzionale) n le regole di validità a cui il documento deve sottostare ¨ istanza del documento n il contenuto ed il markup effettivo del documento ¨

Dichiarazione XML n <? XML version=“ 1. 0” encoding=“UTF-16” standalone=“yes” ? > n La

Dichiarazione XML n <? XML version=“ 1. 0” encoding=“UTF-16” standalone=“yes” ? > n La dichiarazione XML specifica le caratteristiche opzionali del documento in questione. n Esistono esattamente tre valori che possono essere messi in una dichiarazione XML: ¨ il parametro “version” identifica quale versione di XML si sta usando. Ora l’unico valore possibile è “ 1. 0”. Necessario. ¨ il parametro “encoding” permette di specificare quale codifica di caratteri viene usata per il documento. Facoltativo. ¨ il parametro “standalone” permette di specificare se le informazioni necessarie per valutare e validare il documento sono interne o se ne esistono anche di esterne. Facoltativo.

Document Type Declaration e Document Instance n DTD La dichiarazione del tipo del documento

Document Type Declaration e Document Instance n DTD La dichiarazione del tipo del documento serve a specificare le regole che permettono di verificare la correttezza strutturale di un documento. ¨ Vengono cioè elencati i file che contengono gli elementi ammissibili, il contesto in cui possono apparire, ed altri eventuali vincoli strutturali. ¨ Nella terminologia XML, si parla di modellare una classe (cioè una collezione omogenea) di documenti attribuendogli un tipo. ¨ n Document Instance ¨ L’istanza del documento è quella parte del documento che contiene il testo vero e proprio, dotato del markup appropriato. ¨ Le applicazioni XML sono in grado di verificare se l’istanza del documento segue le regole specificate nel DTD, e a identificare le violazioni.

I componenti di XML n Un documento XML contiene una varietà dei seguenti componenti

I componenti di XML n Un documento XML contiene una varietà dei seguenti componenti ¨ Elementi ¨ Attributi ¨ Entità ¨ Testo (detto anche #PCDATA) Commenti ¨ Processing Instructions ¨

Elementi n Gli elementi sono le parti di documento dotate di un senso proprio.

Elementi n Gli elementi sono le parti di documento dotate di un senso proprio. ¨ il titolo, l’autore, i paragrafi del documento sono tutti elementi. n Un elemento è individuato da un tag iniziale, un contenuto ed un tag finale. ¨ <TITOLO>Tre uomini in barca</TITOLO>

Attributi n Gli attributi sono informazioni aggiuntive sull’elemento che non fanno effettivamente parte del

Attributi n Gli attributi sono informazioni aggiuntive sull’elemento che non fanno effettivamente parte del contenuto (meta-informazioni). n Essi sono posti dentro al tag iniziale dell’elemento. Tipicamente hanno la forma nome=valore <romanzo file=“threemen. sgm”>…</romanzo> ¨ <capitolo N=“ 1”>Capitolo primo</capitolo> ¨

Parte IV Definizione e applicazione di grammatiche

Parte IV Definizione e applicazione di grammatiche

DTD: Document Type Definition n Da un punto di vista cronologico, il primo approccio

DTD: Document Type Definition n Da un punto di vista cronologico, il primo approccio per la definizione di grammatiche per documenti XML è rappresentato dai Document Type Definition (DTD). n Un Dtd è un documento che descrive i tag utilizzabili in un documento XML, la loro reciproca relazione nei confronti della struttura del documento e altre informazioni sugli attributi di ciascun tag. n La sintassi di un Dtd si basa principalmente sulla presenza di due dichiarazioni: <!ELEMENT> e <!ATTLIST>.

DTD – <!ELEMENT> n La prima definisce gli elementi utilizzabili nel documento e la

DTD – <!ELEMENT> n La prima definisce gli elementi utilizzabili nel documento e la struttura del documento stesso, la seconda definisce la lista di attributi per ciascun elemento. n Ad esempio, la dichiarazione ¨ <!ELEMENT articolo(paragrafo+)> indica che l'elemento <articolo> ha come sottoelemento uno o più elementi <paragrafo>. n Il carattere '+', dopo il nome del sottoelemento, indica il relativo numero di occorrenze.

DTD – <!ELEMENT> n Un insieme di caratteri speciali ha appunto lo scopo di

DTD – <!ELEMENT> n Un insieme di caratteri speciali ha appunto lo scopo di indicare il numero di occorrenze di un elemento. In particolare: ¨ + (indica che l'elemento è presente una o più volte) ¨ * (indica che l'elemento è presente zero o più volte) ¨ ? (indica che l'elemento è presente zero o una sola volta) ¨ se non si specifica niente l’elemento deve comparire solo una volta n Per esempio, la definizione ¨ <!ELEMENT paragrafo(immagine*, testo+)> indica che ¨ l'elemento <paragrafo> contiene la sequenza di elementi <immagine> e <testo>. ¨ L'elemento <immagine> può essere presente zero o più volte, mentre <testo> deve essere presente almeno una volta.

DTD – <!ELEMENT> n n Per la definizione dei tag che non contengono sottoelementi

DTD – <!ELEMENT> n n Per la definizione dei tag che non contengono sottoelementi dobbiamo distinguere il caso dei tag vuoti dai tag che racchiudono testo. Nel caso di tag vuoto, come accade per <immagine>, la definizione è ¨ <!ELEMENT immagine EMPTY> n Nel caso di elementi che racchiudono testo abbiamo una definizione analoga alla seguente: ¨ <!ELEMENT testo (#PCDATA)> n Esiste la possibilità di definire elementi il cui contenuto non è definito a priori, possono cioè essere vuoti o contenere altri elementi senza vincoli particolari. Per definire questo tipo di elementi si utilizza la seguente dichiarazione: ¨ <!ELEMENT elemento ANY>

Ricapitolando… n <!ELEMENT X ANY> n l’elemento X può contenere qualunque altro elemento specificato

Ricapitolando… n <!ELEMENT X ANY> n l’elemento X può contenere qualunque altro elemento specificato nel DTD, o anche testo <!ELEMENT X EMPTY> n l’elemento X non può contenere niente. Debbo scrivere il tag con la sintassi tipica degli elementi vuoti: <X/> <!ELEMENT X #PCDATA> n l’elemento X può solo contenere testo. E’ proibito mettere altri elementi al suo interno <!ELEMENT X (Y, (W | Z)+ , K*)> n l’elemento X può contenere solo elementi secondo la specifica data, usando i separatori e gli operatori di ripetizione specificati. <!ELEMENT X (#PCDATA | Y | W | Z)*> ¨ ¨ ¨ L’elemento X può contenere sia testo sia altri elementi in maniera ed ordine specificati.

Separatori n Separano specifiche determinando l’ordine o l’obbligatorietà: ¨ ‘, ’ (virgola): richiede la

Separatori n Separano specifiche determinando l’ordine o l’obbligatorietà: ¨ ‘, ’ (virgola): richiede la presenza di entrambe le specifiche nell’ordine precisato. n ¨ Es. : (a , b): ci devono essere sia a che b, e prima ci deve essere a e poi b. ‘|’ (barra verticale): ammette la presenza di una sola delle due specifiche. n Es. : (a | b): ci può essere o a, oppure b, ma solo uno di essi.

Un esempio n. Un libro, fatto di capitoli e a loro volta di paragrafi.

Un esempio n. Un libro, fatto di capitoli e a loro volta di paragrafi. <!DOCTYPE ROMANZO SYSTEM “romanzo. dtd”> <ROMANZO> <TITOLO>Tre Uomini in Barca</TITOLO> <AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO> <CAPITOLO> <TITOLO>Capitolo primo</TITOLO> <INDICE> <EL>Tre invalidi</EL><EL>Le sofferenze di George e Harris </EL><EL>La vittima di centosette malattie inguaribili</EL> </INDICE> <PARA>Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… <INCISO>malridotti, dal punto di vista della salute, <INCISO>intendo, </INCISO> naturalmente</INCISO>. </PARA> <PARA>Ci sentivamo tutti piuttosto giù di corda, </PARA> </CAPITOLO>… </ROMANZO>

Il file “romanzo. dtd” <!ELEMENT <!ELEMENT <!ELEMENT ROMANZO CAPITOLO TITOLO AUTORE ANNO INDICE EL

Il file “romanzo. dtd” <!ELEMENT <!ELEMENT <!ELEMENT ROMANZO CAPITOLO TITOLO AUTORE ANNO INDICE EL PARA INCISO (TITOLO, AUTORE, ANNO, CAPITOLO+)> (TITOLO, INDICE, PARA+)> (#PCDATA) > (EL+) > (#PCDATA | INCISO) * > (#PCDATA | INCISO)* >

DTD – <!ATTLIST> n Per la definizione degli attributi di ciascun tag facciamo uso

DTD – <!ATTLIST> n Per la definizione degli attributi di ciascun tag facciamo uso della dichiarazione <!ATTLIST>. Ad esempio, la dichiarazione: ¨ <!ATTLIST articolo titolo CDATA #REQUIRED> indica che l'elemento <articolo> prevede un attributo titolo che può avere come valore una qualsiasi combinazione di caratteri (CDATA). n n l'indicazione #REQUIRED indica che la presenza dell'attributo è obbligatoria. Valori alternativi a #REQUIRED sono: ¨ #IMPLIED (l'attributo è opzionale) ¨ #FIXED valore (il valore dell'attributo è fissato al valore specificato)

DTD – <!ATTLIST> n Se un attributo prevede valori alternativi predefiniti è necessario specificarli

DTD – <!ATTLIST> n Se un attributo prevede valori alternativi predefiniti è necessario specificarli al posto di CDATA, come accade per l'attributo tipo del tag <paragrafo> <!ATTLIST paragrafo titolo CDATA #REQUIRED tipo (abstract|bibliografia|note) #IMPLIED > n In questo caso vengono definiti due attributi per l'elemento <paragrafo> facendo seguire alla definizione del primo attributo (titolo) quella del secondo (tipo). L'attributo tipo, opzionale, può assumere uno tra i valori abstract, bibliografia o note.

DTD – <!ATTLIST> n<!ATTLIST X att CDATA “uno”> ¨ Il tag iniziale di X

DTD – <!ATTLIST> n<!ATTLIST X att CDATA “uno”> ¨ Il tag iniziale di X può contenere un attributo chiamato “att”. Qualunque stringa è lecita. Se non viene specificata una stringa, il valore definito per default è “uno” n<!ATTLIST X att (uno|due|tre) “due”> ¨ Il tag iniziale di X può contenere un attributo chiamato “att”. Sono leciti solo i valori descritti. Se non viene specificata una stringa, il valore definito per default è “due” n<!ATTLIST X att ID #IMPLIED> ¨ Il tag iniziale di X può contenere un attributo chiamato “att”. Sono leciti solo valori unici su tutto il documento. L’elemento X assume identificabilità assoluta all’interno del documento: è un “luogo notevole”. Poiché il valore deve essere sempre diverso, non è possibile specificare un valore di default. n<!ATTLIST X att IDREF #IMPLIED> ¨ Il tag iniziale di X può contenere un attributo chiamato “att”. I valori di “att” debbono essere uguali ad un valore di un attributo di tipo ID esistente da qualche parte nel documento.

DTD – <!ATTLIST> n I valori di default importanti in XML sono di quattro

DTD – <!ATTLIST> n I valori di default importanti in XML sono di quattro tipi: ¨ Valore esplicito: un stringa tra virgolette ¨ Valore necessario: la keyword #REQUIRED. ¨ Valore facoltativo: la keyword #IMPLIED. ¨ Valore esplicito e non modificabile: la keyword #FIXED e una stringa tra virgolette.

Esempio, più: attributi ID e IDREF n. L’elemento dell’indice punta al paragrafo che vi

Esempio, più: attributi ID e IDREF n. L’elemento dell’indice punta al paragrafo che vi si riferisce: <!DOCTYPE ROMANZO SYSTEM “romanzo. dtd”> <ROMANZO> <TITOLO>Tre Uomini in Barca</TITOLO> <AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO> <CAPITOLO> <TITOLO>Capitolo primo</TITOLO> <INDICE> <EL p=“uno”>Tre invalidi</EL><EL p=“due”>Le sofferenze di George e Harris</EL><EL p=“tre”>La vittima di centosette malattie inguaribili</EL> </INDICE> <PARA n=“uno”>Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… <INCISO> malridotti, dal punto di vista della salute, <INCISO>intendo, </INCISO> naturalmente</INCISO>. </PARA> <PARA>Ci sentivamo tutti piuttosto giù di corda, </PARA> </CAPITOLO>… </ROMANZO>

Il file “romanzo. dtd” <!ELEMENT <!ELEMENT <!ATTLIST <!ELEMENT ROMANZO (TITOLO, AUTORE, ANNO, CAPITOLO+)> CAPITOLO

Il file “romanzo. dtd” <!ELEMENT <!ELEMENT <!ATTLIST <!ELEMENT ROMANZO (TITOLO, AUTORE, ANNO, CAPITOLO+)> CAPITOLO (TITOLO, INDICE, PARA+)> TITOLO (#PCDATA) > AUTORE (#PCDATA) > ANNO (#PCDATA) > INDICE (EL+) > EL (#PCDATA) > EL p IDREF#REQUIRED > PARA (#PCDATA | INCISO)* > PARA n ID #IMPLIED > INCISO (#PCDATA | INCISO)* >

DTD – esempio Il seguente codice riporta il Dtd completo per un documento che

DTD – esempio Il seguente codice riporta il Dtd completo per un documento che descrive un articolo analogo a quello visto negli esempi precedenti: <!ELEMENT articolo(paragrafo+)> <!ELEMENT paragrafo (immagine*, testo+, codice*)> <!ELEMENT immagine EMPTY> <!ELEMENT testo (#PCDATA)> <!ELEMENT codice (#PCDATA)> <!ATTLIST articolo titolo CDATA #REQUIRED> <!ATTLIST paragrafo titolo CDATA #IMPLIED tipo (abstract|bibliografia|note) #IMPLIED > <!ATTLIST immagine file CDATA #REQUIRED>

Entità, documenti e considerazioni su XML n n Abbiamo visto come XML preveda degli

Entità, documenti e considerazioni su XML n n Abbiamo visto come XML preveda degli elementi, detti entità, che consentono di sostituire caratteri speciali. Più in generale, una entità consente di sostituire sequenze di caratteri con nomi speciali della forma & nome; . È possibile definire entità personalizzate all'interno di un Dtd in modo da sostituire qualsiasi sequenza di caratteri. Per definire un'entità personalizzata si utilizza la dichiarazione <!ENTITY>. ¨ il seguente esempio mostra la definizione di un'entità & html; che rappresenta un'abbreviazione per la stringa Hyper. Text Markup Language: <!ENTITY html "Hyper. Text Markup Language"> ¨ grazie a questa dichiarazione possiamo utilizzare l'entità & html; al posto dell'intera stringa all'interno del documento XML che fa riferimento a questa grammatica.

Entità, documenti e considerazioni su XML n n n Definito un Dtd abbiamo definito

Entità, documenti e considerazioni su XML n n n Definito un Dtd abbiamo definito la grammatica per un linguaggio di markup. A questo punto dobbiamo mettere in relazione un documento XML con il suo Dtd, in modo che un parser XML possa verificare non soltanto la struttura ben formata del documento, ma anche la sua validità rispetto alla grammatica specificata. Esistono due modi per indicare il Dtd cui un documento XML fa riferimento.

Entità, documenti e considerazioni su XML Il primo modo prevede la presenza del Dtd

Entità, documenti e considerazioni su XML Il primo modo prevede la presenza del Dtd all'interno del documento XML, come nel seguente esempio: <? xml version="1. 0"> <!DOCTYPE articolo[. . . Definizioni del Dtd. . . ]> <articolo>. . . Contenuto del documento XML. . . </articolo> La dichiarazione <!DOCTYPE> indica che il documento individuato dall'elemento root <articolo> segue le regole definite tra le parentesi quadre.

Entità, documenti e considerazioni su XML Il secondo modo prevede che il Dtd sia

Entità, documenti e considerazioni su XML Il secondo modo prevede che il Dtd sia definito in un file esterno ed il documento XML abbia un riferimento a tale file, come nel seguente esempio: <? xml version="1. 0"> <!DOCTYPE articolo SYSTEM "articolo. dtd"> In questo caso si fa riferimento al Dtd definito nel file articolo. dtd. L'indicazione del file contenente il Dtd può essere espressa come URL assoluto o relativo. Ad esempio, se il Dtd viene pubblicato su un sito web è possibile specificare il riferimento al Dtd come nel seguente esempio: <!DOCTYPE articolo SYSTEM "http: //www. my. XML. it/articolo. dtd">

Entità, documenti e considerazioni su XML n n Utilizzando i Dtd abbiamo un maggior

Entità, documenti e considerazioni su XML n n Utilizzando i Dtd abbiamo un maggior controllo sulla struttura e sull'uso dei tag in un documento XML, evitando che la libertà nella definizione dei tag possa far perdere il controllo sui contenuti. Tuttavia l'uso dei Dtd per definire la grammatica di un linguaggio di markup non sempre è del tutto soddisfacente. n A parte il fatto che la sintassi utilizzata per definire un Dtd non segue le regole stesse di XML, i Dtd non consentono di specificare un tipo di dato per il valore degli attributi, né di specificare il numero minimo o massimo di occorrenze di un tag in un documento o altre caratteristiche in determinati contesti consentirebbero di ottenere un controllo ancora più accurato sulla validità di un documento XML. n Queste limitazioni hanno spinto alla definizione di approcci alternativi per definire grammatiche per documenti XML. Tra questi approcci il più noto è XML Schema.

XML Schema: elementi e struttura n n Analogamente ad un Dtd, un XML Schema

XML Schema: elementi e struttura n n Analogamente ad un Dtd, un XML Schema è una descrizione formale di una grammatica per un linguaggio di markup basato su XML. L'approccio basato sui Dtd ci consente di specificare la struttura del nostro documento XML e di ciascun tag utilizzabile al suo interno con una precisione a prima vista accettabile. Tuttavia, se abbiamo bisogno di un maggiore controllo sugli elementi che possono trovarsi all'interno di uno specifico tipo di documenti XML, i Dtd non risultano più sufficienti. ¨ ad esempio, i Dtd non mettono a disposizione un meccanismo immediato per indicare che un elemento può contenere al massimo un numero predefinito di sottoelementi, né è possibile specificare che un attributo può assumere valori di un certo tipo di dato, ad esempio valori numerici. A differenza di un Dtd, che utilizza una propria sintassi specifica, un XML Schema utilizza la stessa sintassi XML per definire la grammatica di un linguaggio di markup.

XML Schema: elementi e struttura n Quindi uno XML Schema è un documento XML

XML Schema: elementi e struttura n Quindi uno XML Schema è un documento XML che descrive la grammatica di un linguaggio XML utilizzando un linguaggio di markup specifico. In quanto documento XML, uno XML Schema ha un root element che contiene tutte le regole di definizione della grammatica. n La struttura generale di uno schema XML è la seguente: <? xml version="1. 0"? > <xs: schema xmlns: xs="http: //www. w 3. org/2001/XMLSchema">. . . Definizione della grammatica. . . </xs: schema> n L'elemento root del documento è rappresentato dal tag <xs: schema>. ¨ esso indica al parser che in questo documento saranno utilizzati dei tag definiti dal namespace standard del W 3 C. n n i namespaces rappresentano un meccanismo per identificare tag appartenenti ad una specifica grammatica questi tag speciali sono caratterizzati dal prefisso xs:

XML Schema: elementi e struttura n XML schema prevede il tag <xs: element> per

XML Schema: elementi e struttura n XML schema prevede il tag <xs: element> per la definizione degli elementi utilizzabili in un documento XML, specificando nell’attributo name il nome del relativo tag. n All’interno di ciascun tag <xs: element> possiamo indicare il tipo di dato dell’elemento e possiamo definire gli eventuali attributi n Ad esempio la seguente definizione specifica l’elemento testo che può contenere solo stringhe ¨ <xs: element name=“testo” type=“xs: string” /> n n questa dichiarazione corrisponde alla seguente dichiarazione Dtd <!ELEMENT testo(#PCDATA)>

TIPO DI DATO n Per comprendere meglio ed apprezzare la potenza degli XML Schema

TIPO DI DATO n Per comprendere meglio ed apprezzare la potenza degli XML Schema occorre analizzare il concetto di tipo di dato. n Esistono due categorie di tipi di dato: semplici e complessi.

TIPO DI DATO SEMPLICI n n n XML Schema introduce il concetto di tipo

TIPO DI DATO SEMPLICI n n n XML Schema introduce il concetto di tipo di dato semplice per definire gli elementi che non possono contenere altri elementi e non prevedono attributi. Si possono usare tipi di dato semplici predefiniti oppure è possibile personalizzarli. Sono previsti numerosi tipi di dato predefiniti, alcuni dei quali sono riportati nella seguente tabella:

TIPO DI DATO SEMPLICI Ad esempio, la seguente dichiarazione: <xs: element name="quantita" type="xs: integer"

TIPO DI DATO SEMPLICI Ad esempio, la seguente dichiarazione: <xs: element name="quantita" type="xs: integer" /> permette l'utilizzo dell'elemento quantità in un documento XML consentendo soltanto un contenuto di tipo intero. In altre parole, sarà considerato valido l'elemento <quantita>123</quantita> Mentre non lo sarà l'elemento <quantita>uno</quantita>.

TIPO DI DATO SEMPLICI n XML Schema prevede anche la possibilità di definire tipi

TIPO DI DATO SEMPLICI n XML Schema prevede anche la possibilità di definire tipi di dato semplici personalizzati come derivazione di quelli predefiniti. ¨ se, ad esempio, abbiamo bisogno di limitare il valore che può essere assegnato all'elemento <quantita> possiamo definirlo nel seguente modo: <xs: element name="quantita" > <xs: simple. Type> <xs: restriction base="xs: integer"> <xs: min. Inclusive value="1" /> <xs: max. Inclusive value="100" /> </xs: restriction> </xs: simple. Type> </xs: element> ¨ In altre parole, la dichiarazione indica che l'elemento <quantita> è di tipo semplice e prevede una restrizione sul tipo di dato intero predefinito accettando valori compresi tra 1 e 100.

TIPO DI DATO COMPLESSI n n n I tipi di dato complessi si riferiscono

TIPO DI DATO COMPLESSI n n n I tipi di dato complessi si riferiscono ad elementi che possono contenere altri elementi e possono avere attributi. Definire un elemento di tipo complesso corrisponde a definire la relativa struttura. Lo schema generale per la definizione di un elemento di tipo complesso è il seguente: <xs: element name="NOME_ELEMENTO"> <xs: complex. Type>. . . Definizione del tipo complesso. . . Definizione degli attributi. . . </xs: complex. Type> </xs: element>

TIPO DI DATO COMPLESSI n Se l'elemento può contenere altri elementi possiamo definire la

TIPO DI DATO COMPLESSI n Se l'elemento può contenere altri elementi possiamo definire la sequenza di elementi che possono stare al suo interno utilizzando uno dei costruttori di tipi complessi previsti: ¨ <xs: sequence> n ¨ <xs: choice> n ¨ consente di definire un elenco di sottoelementi alternativi <xs: all> n n consente di definire una sequenza ordinata di sottoelementi consente di definire una sequenza non ordinata di sottoelementi Per ciascuno di questi costruttori e per ciascun elemento è possibile definire il numero di occorrenze previste utilizzando gli attributi min. Occurs e max. Occurs.

TIPO DI DATO COMPLESSI n Ad esempio, se l'elemento testo può essere presente una

TIPO DI DATO COMPLESSI n Ad esempio, se l'elemento testo può essere presente una o infinite volte all'interno di un paragrafo possiamo esprimere questa condizione nel seguente modo: <xs: element name="paragrafo"> <xs: complex. Type> <xs: element name="testo" min. Occurs="1" max. Occurs="unbounded"/> </xs: complex. Type> </xs: element> n In questo caso il valore unbounded indica che non è stabilito un massimo numero di elementi testo che possono stare all'interno di un paragrafo.

TIPO DI DATO COMPLESSI n Per gli elementi vuoti è prevista una definizione basata

TIPO DI DATO COMPLESSI n Per gli elementi vuoti è prevista una definizione basata sul seguente schema: <xs: element name="NOME_ELEMENTO"> <xs: complex. Type> <xs: complex. Content> <xs: extension base="xs: any. Type" />. . . Definizione degli attributi. . . </xs: complex. Content> </xs: complex. Type> </xs: element> n In altri termini, un elemento vuoto è considerato un elemento di tipo complesso il cui contenuto non si basa su nessun tipo predefinito.

TIPO DI DATO COMPLESSI n La definizione degli attributi è basata sull'uso <xs: attribute>,

TIPO DI DATO COMPLESSI n La definizione degli attributi è basata sull'uso <xs: attribute>, come nel seguente esempio: <xs: attribute name="titolo" type="xs: string“ use="required" /> del tag n L'attributo use consente di specificare alcune caratteristiche come la presenza obbligatoria (required) o un valore predefinito (default) in combinazione con l'attributo value. ¨ ad esempio, la seguente definizione indica un attributo il cui valore di predefinito è test: <xs: attribute name="titolo" type="xs: string" use="default" value="test" /> n Bisogna tener presente che se non si specifica esplicitamente l'obbligatorietà dell'attributo, esso è considerato opzionale.

TIPO DI DATO – esempio Il seguente codice presenta uno XML Schema relativo al

TIPO DI DATO – esempio Il seguente codice presenta uno XML Schema relativo al linguaggio di descrizione di articoli tecnici mostrato nei vari esempi. <? xml version="1. 0"? > <xs: schema xmlns: xs="http: //www. w 3. org/2001/ XMLSchema"> <xs: element name="articolo"> <xs: complex. Type> <xs: sequence> <xs: element name="paragrafo" max. Occurs="unbounded"> <xs: complex. Type> <xs: all max. Occurs="unbounded"> <xs: element name="immagine" min. Occurs="0"> <xs: complex. Type> <xs: attribute name="file“ use="required"> <xs: simple. Type> <xs: restriction base="xs: string"/> </ xs: simple. Type> </xs: attribute> </xs: complex. Type> </xs: element> <xs: element name="testo"/> <xs: element name="codice" min. Occurs="0"/> </xs: all> <xs: attribute name="titolo" type="xs: string"use="optional"/>

TIPO DI DATO – esempio < xs: attribute name="tipo" use="optional"> < xs: simple. Type>

TIPO DI DATO – esempio < xs: attribute name="tipo" use="optional"> < xs: simple. Type> < xs: restriction base="xs: string"> < xs: enumeration value="abstract"/> <xs: enumeration value="bibliografia"/> <xs: enumeration value="note"/> </xs: restriction> </xs: simple. Type> </xs: attribute> </xs: complex. Type> </xs: element> </xs: sequence> <xs: attribute name="titolo" type="xs: string“ use="required"/> </xs: complex. Type> </xs: element> </xs: schema> Questo XML Schema è equivalente al Dtd che abbiamo visto precedentemente

DICHIARAZIONE TIPO n XML Schema prevede la possibilità di rendere modulare la definizione della

DICHIARAZIONE TIPO n XML Schema prevede la possibilità di rendere modulare la definizione della struttura di un documento XML tramite la dichiarazione di tipi e di elementi. n Nel corso della creazione di uno schema XML possiamo analizzare ciascun sottoelemento significativamente complesso e fornire una definizione separata come elemento o come tipo di dato. n Questo contribuisce a fornire una struttura modulare allo schema, più ordinata, più comprensibile e semplice da modificare. Sfruttando la struttura modulare delle dichiarazioni, il contenuto di uno XML Schema diventa una sequenza di dichiarazioni di tipi ed elementi. n

DICHIARAZIONE TIPO Possiamo definire un tipo complesso in base al seguente schema: <xs: complex.

DICHIARAZIONE TIPO Possiamo definire un tipo complesso in base al seguente schema: <xs: complex. Type name="nome_tipo">. . . </xs: complex. Type> Il riferimento ad una dichiarazione di tipo viene fatta come se fosse un tipo predefinito, come mostrato nel seguente esempio: <xs: element name="nome_elemento" type="nome_tipo" /> La possibilità di dichiarare elementi e tipi di dato implica l'esistenza di un ambito di visibilità o contesto dei componenti dichiarati. I componenti di uno schema dichiarati al livello massimo, cioè come sottoelementi diretti dell'elemento root, sono considerati dichiarati a livello globale e possono essere utilizzati nel resto dello schema.

DICHIARAZIONE TIPO n Nella dichiarazione di un tipo complesso è possibile fare riferimento ad

DICHIARAZIONE TIPO n Nella dichiarazione di un tipo complesso è possibile fare riferimento ad elementi già esistenti dichiarati a livello globale oppure si possono definire nuovi elementi. n La definizione di nuovi elementi all'interno di una definizione di tipo o di elemento costituisce una dichiarazione a livello locale. Ciò vuol dire che l'utilizzo di questi elementi è limitato alla definizione del tipo complesso in cui sono dichiarati e non possono essere utilizzati in altri punti dello schema. n I nomi degli elementi devono essere univoci nel contesto in cui compaiono. Questo significa, però, che in contesti diversi possiamo avere elementi con lo stesso nome ma con struttura diversa senza rischio di conflitti. n Per fare un'analogia con i classici linguaggi di programmazione, le dichiarazioni globali e locali di componenti di uno schema corrispondono alle dichiarazioni di variabili globali e locali in un'applicazione.

DICHIARAZIONE TIPO Il seguente codice riporta lo XML Schema per un linguaggio di descrizione

DICHIARAZIONE TIPO Il seguente codice riporta lo XML Schema per un linguaggio di descrizione di articoli visto nel paragrafo precedente, riorganizzato alla luce della possibilità di definire tipi di dato. <? xml version="1. 0"? > <xs: schema xmlns: xs="http: //www. w 3. org/2001/XMLSchema"> <xs: element name="articolo"> <xs: complex. Type> <xs: sequence> <xs: element name="paragrafo" type="paragrafo. Type" max. Occurs="unbounded"/> </xs: sequence> <xs: attribute name="titolo" type="xs: string“ use="required"/> </xs: complex. Type> </xs: element> <xs: complex. Type name="paragrafo. Type"> <xs: all max. Occurs="unbounded"> <xs: element name="immagine" type="immagine. Type“ min. Occurs="0"/>

DICHIARAZIONE TIPO <xs: element name="testo"/> <xs: element name="codice" min. Occurs="0"/> </xs: all> <xs: attribute

DICHIARAZIONE TIPO <xs: element name="testo"/> <xs: element name="codice" min. Occurs="0"/> </xs: all> <xs: attribute name="titolo" type="xs: string“ use="optional"/> <xs: attribute name="tipo" use="optional"> <xs: simple. Type> <xs: restriction base="xs: string"> <xs: enumeration value="abstract"/> <xs: enumeration value="bibliografia"/> <xs: enumeration value="note"/> </xs: restriction> </xs: simple. Type> </xs: attribute> </xs: complex. Type> <xs: complex. Type name="immagine. Type"> <xs: attribute name="file" use="required"> <xs: simple. Type> <xs: restriction base="xs: string"/> </xs: simple. Type> </xs: attribute> </xs: complex. Type> </xs: schema> Come si può vedere, la leggibilità dello schema è molto maggiore.

Integrazioni di grammatiche e namespaces n A partire da una grammatica definita tramite uno

Integrazioni di grammatiche e namespaces n A partire da una grammatica definita tramite uno XML Schema, è possibile sfruttare un parser XML validante per verificare la validità di un documento XML. n Il parser avrà bisogno: ¨ del documento XML da validare ¨ dello schema XML rispetto a cui effettuare la validazione

Integrazioni di grammatiche e namespaces n Ci sono diversi modi per fornire al parser

Integrazioni di grammatiche e namespaces n Ci sono diversi modi per fornire al parser informazioni sullo schema da utilizzare per la validazione: si può nell'inserire nel documento XML un riferimento allo schema da usare. ¨ Ad esempio: <articolo xmlns: xsi="http: //www. w 3. org/2001/XMLSchema- instance" xsi: no. Namespace. Schema. Location="articolo. xsd" titolo="Guida ad XML" > n Oltre all’attributo titolo sono stati aggiunti due attributi predefiniti. ¨ l'attributo xmlns: xsi indica un URL che specifica la modalità con cui si indicherà il riferimento allo schema XML. ¨ l'attributo xsi: no. Namespace. Schema. Location indica il nome e percorso del file contenente lo schema XML di riferimento.

Integrazioni di grammatiche e namespaces n n Una delle caratteristiche auspicabili nella creazione di

Integrazioni di grammatiche e namespaces n n Una delle caratteristiche auspicabili nella creazione di un nuovo linguaggio è la possibilità di integrare elementi derivanti da grammatiche diverse. Questa caratteristica consente di riutilizzare parti di grammatiche già definite evitando di dover rifare parte di lavoro già fatto in altri ambiti. In questo modo, ad esempio, sarebbe possibile integrare un linguaggio per la descrizione di articoli tecnici con un linguaggio pre-esistente per la descrizione di bibliografie, ottenendo un nuovo linguaggio composto. La composizione di linguaggi pone almeno due tipi di problemi: ¨ un documento che utilizza due grammatiche presenta il problema della validazione: a quale schema si deve fare riferimento per validare un documento XML "ibrido"? ¨ due linguaggi potrebbero avere tag ed attributi con lo stesso nome, anche se utilizzabili in contesti diversi: come fare a risolvere questo tipo di ambiguità?

Integrazioni di grammatiche e namespaces n n n La soluzione a questi problemi deriva

Integrazioni di grammatiche e namespaces n n n La soluzione a questi problemi deriva dai namespace. Un namespace è un insieme di nomi di elementi e nomi di attributi identificati univocamente da un identificatore. L'identificatore univoco individua l'insieme dei nomi distinguendoli da eventuali omonimie in altri namespace. ¨ esempio: se nell'ambito di una grammatica per descrivere dei dati anagrafici è stato definito un elemento indirizzo, questo nome potrebbe essere confuso con l'elemento indirizzo definito nell'ambito di una grammatica che descrive messaggi di posta elettronica. ¨ l'identificatore del relativo namespace consente di distinguere i due elementi omonimi.

Integrazioni di grammatiche e namespaces n Concetto non nuovo nell'informatica: ¨ quando definiamo i

Integrazioni di grammatiche e namespaces n Concetto non nuovo nell'informatica: ¨ quando definiamo i nomi dei campi in una tabella di un database abbiamo definito un namespace. ¨ non possiamo avere campi con lo stesso nome all'interno di una tabella, ma possiamo avere gli stessi nomi in tabelle diverse. ¨ possiamo risolvere l'ambiguità tra due campi omonimi facendoli precedere dal nome della tabella (il namespace). n Un XML schema definisce implicitamente un namespace degli elementi e degli attributi che possono essere usati in un documento XML Se in un documento XML si utilizzano elementi definiti in schemi diversi abbiamo bisogno di un meccanismo che permetta di identificare ciascun namespace e il relativo XML Schema che lo definisce. n

Sintassi dei namespace n In un documento XML si fa riferimento ad un namespace

Sintassi dei namespace n In un documento XML si fa riferimento ad un namespace utilizzando un attributo speciale (xmlns) associato al root element, come nel seguente esempio: ¨ <articolo xmlns="http: //www. dominio. it/xml/articolo"> ¨ questo indica che l'elemento articolo ed i suoi sottoelementi utilizzano i nomi definiti nel namespace identificato dall'identificatore http: //www. dominio. it/xml/articolo. n L'identificatore di un namespace può essere rappresentato da una qualsiasi stringa, purché sia univoca. Proprio per garantirne l'univocità, è prassi ormai consolidata utilizzare un URI (Uniform Resource Identifier) come identificatore. ¨ non è necessario che l'indirizzo specificato come identificatore di namespace corrisponda ad un file pubblicato sul Web.

Sintassi dei namespace n Per mettere in relazione un namespace con il relativo XML

Sintassi dei namespace n Per mettere in relazione un namespace con il relativo XML Schema occorre dichiararlo nel root element come nel seguente esempio: <articolo xmlns: xsi="http: //www. w 3. org/2001/XMLSchema- instance" xmlns="http: //www. dominio. it/xml/articolo" xmlns="http: //www. dominio. it/xml/bibliografia" xsi: schema. Location="http: //www. dominio. it/xml/articolo. xsd" xsi: schema. Location="http: //www. dominio. it/xml/bibliografia. xsd" > ¨ l'attributo xmlns: xsi specifica la modalità con cui viene indicato il riferimento allo schema. ¨ l'attributo xsi: schema. Location indica il namespace ed il file in cui è definito il relativo XML Schema separati da uno spazio.

Sintassi dei namespace n È possibile combinare più namespace facendo in modo che ciascun

Sintassi dei namespace n È possibile combinare più namespace facendo in modo che ciascun elemento utilizzato faccia riferimento al proprio namespace. n Occorre tener presente che quando si fa riferimento ad un namespace, questo riferimento vale per l'elemento corrente e per tutti gli elementi contenuti, a meno che non venga specificato un diverso namespace.

Sintassi dei namespace Il seguente utilizza elementi di due diversi namespace: uno relativo alla

Sintassi dei namespace Il seguente utilizza elementi di due diversi namespace: uno relativo alla grammatica della struttura di un articolo e l'altro relativo alla grammatica di bibliografie: <articolo xmlns="http: //www. dominio. it/xml/articolo" titolo="Guida ad XML"> <paragrafo titolo="Introduzione"> <testo> bla bla </testo> </paragrafo> <paragrafo titolo="Bibliografia"> <bibliografia xmlns="http: //www. dominio. it/xml/bibliografia"> <autore> Tizio </autore> <titolo> Opera citata </titolo> <anno> 1999 </anno> </bibliografia> </paragrafo> </articolo>

Sintassi dei namespace n n n Riportare il riferimento ad un namespace per ogni

Sintassi dei namespace n n n Riportare il riferimento ad un namespace per ogni elemento è di solito scomodo e rende di difficile lettura il documento XML. È possibile creare delle abbreviazioni per fare riferimento ai namespace. Queste abbreviazioni sono costituite da caratteri alfanumerici seguiti da due punti (: ) dichiarati nel root element ed utilizzati come prefissi dei nomi degli elementi.

Sintassi dei namespace Il seguente esempio riporta il codice XML precedente facendo uso di

Sintassi dei namespace Il seguente esempio riporta il codice XML precedente facendo uso di questi prefissi: <art: articolo titolo="Guida ad XML" xmlns: art="http: //www. dominio. it/xml/articolo" xmlns: bibl="http: //www. dominio. it/xml/bibliografia" > <art: paragrafo titolo="Introduzione"> <art: testo> bla bla </art: testo> </art: paragrafo> <art: paragrafo titolo="Bibliografia"> Le dichiarazioni <bibl: bibliografia> xmlns: art <bibl: autore> Tizio xmlns: bibl </bibl: autore> assegnano i prefissi <bibl: titolo> art: Opera citata bibl: </bibl: titolo> <bibl: anno> ai relativi namespace e questi 1999 prefissi vengono utilizzati per </bibl: anno> ciascun elemento del documento </bibl: bibliografia> </art: paragrafo> XML. </art: articolo>

Parte V Modelli di presentazione dei documenti XML

Parte V Modelli di presentazione dei documenti XML

Presentazione di XML con CSS n A differenza di HTML, che è un linguaggio

Presentazione di XML con CSS n A differenza di HTML, che è un linguaggio specifico di strutturazione e presentazione di documenti, XML è più generale e non ha una semantica di presentazione. n Non è previsto alcun meccanismo predefinito per visualizzare i vari elementi di un documento. ¨ ad esempio, un documento XML visualizzato in un browser appare generalmente così com'è, al massimo con una indentazione e una colorazione dei tag impostata dal browser.

Presentazione di XML con CSS n Un metodo per gestire la presentazione del contenuto

Presentazione di XML con CSS n Un metodo per gestire la presentazione del contenuto di un documento XML consiste nell'utilizzare i Cascading Style Sheets (CSS). ¨ è possibile utilizzare i CSS in modo analogo a come si utilizzano con HTML. n Per ciascun elemento del documento XML che vogliamo formattare occorre definire una regola secondo lo schema: selettore { proprietà: valore; proprietà: valo re; . . . } ¨ il selettore specifica a quale elemento la regola deve essere applicata, mentre la parte racchiusa tra parentesi graffe elenca le caratteristiche da impostare e il relativo valore.

Presentazione di XML con CSS n Importante differenza tra l'utilizzo dei CSS per formattare

Presentazione di XML con CSS n Importante differenza tra l'utilizzo dei CSS per formattare documenti HTML e il loro uso per i documenti XML. ¨ In HTML la maggior parte dei tag ha una formattazione predefinita e pertanto un foglio di stile CSS consente di ridefinire tali impostazioni. ¨ In XML i tag non hanno alcun significato di formattazione, pertanto è necessario specificare tutto.

Presentazione di XML con CSS n Per strutturare visivamente il documento dobbiamo indicare la

Presentazione di XML con CSS n Per strutturare visivamente il documento dobbiamo indicare la modalità di visualizzazione di ciascun elemento tramite la proprietà display di CSS. ¨ ad esempio, per formattare l'elemento paragrafo di un articolo possiamo definire una regola come la seguente: ¨ paragrafo {display: block; font-size: 12 pt; text-align: left} n Generalmente un foglio di stile CSS da applicare ad un documento XML viene salvato in un file di testo con estensione. css (l'estensione usata è irrilevante). ¨ nel documento XML possiamo quindi inserire un riferimento ad esso mediante un’apposita direttiva di elaborazione, come nel seguente esempio: ¨ <? xml- stylesheet type="text/css" href="stile. css" ? > n questa dichiarazione fa in modo che un browser abilitato applichi le impostazioni del foglio di stile CSS specificato al documento XML.

Presentazione di XML con CSS n I fogli di stile CSS sono pensati principalmente

Presentazione di XML con CSS n I fogli di stile CSS sono pensati principalmente per il Web e mancano pertanto di alcune caratteristiche possono risultare utili in ambiti diversi. ¨ ad esempio, per la presentazione su supporti cartacei occorrerebbero maggiori funzionalità per l'impaginazione. n Tra le principali limitazioni, non è prevista la possibilità di estrarre il valore degli attributi degli elementi in modo da poterli visualizzare. n Per risolvere questi problemi il W 3 C ha definito un insieme di specifiche volte a gestire in maniera altamente flessibile la presentazione e la trasformazio ne di documenti XML: l'e. Xtensible Stylesheet Language (XSL).

XSL: e. Xtensible Stylesheet Language n n n L'e. Xtensible Stylesheet Language (XSL) è

XSL: e. Xtensible Stylesheet Language n n n L'e. Xtensible Stylesheet Language (XSL) è un insieme di tre linguaggi che forniscono gli strumenti per l'elaborazione e la presentazione di documenti XML in maniera molto flessibile. La definizione di questa tecnologia si basa sull'osservazione del processo di presentazione di dati di qualsiasi natura. Possiamo individuare i seguenti meccanismi di base: ¨ un meccanismo per l'individuazione dei dati da presentare ¨ un meccanismo per il controllo dell'elaborazione dei dati e di come la presentazione deve essere effettuata ¨ un meccanismo per la definizione della formattazione da applicare ai dati per la presentazione vera e propria

XSL: e. Xtensible Stylesheet Language n A ciascuno di questi tre meccanismi, XSL associa

XSL: e. Xtensible Stylesheet Language n A ciascuno di questi tre meccanismi, XSL associa uno specifico linguaggio: ¨ XPath consente di individuare gli elementi e gli attributi di un documento XML sui quali verranno applicate le operazioni necessarie per la presentazione dei dati ¨ XSLT (XSL transformation) consente di controllare le operazioni che rendono i dati presentabili ¨ XSL-FO (XSL Formatting Objects) definisce un insieme di tag di formattazione n Questa suddivisione dei compiti nel processo di presentazione è il punto di forza di XSL e ne garantisce la flessibilità. ¨ questi tre linguaggi non sono strettamente dipendenti l'uno dall'altro.

XSL: e. Xtensible Stylesheet Language n Se, ad esempio, in una particolare applicazione ci

XSL: e. Xtensible Stylesheet Language n Se, ad esempio, in una particolare applicazione ci rendiamo conto che XPath non soddisfa le nostre esigenze di ricerca di ele menti in un documento XML, potremmo utilizzare linguaggio analogo (XQL, per citarne uno) ma senza modificare la presentazione dei caratteri. n Oppure potremmo decidere di non utilizzare affatto XSL-FO per formattare i dati di un documento XML e produrre direttamente codice HTML, o meglio XHTML, cioè la versione di HTML basata su XML.

XSL: e. Xtensible Stylesheet Language n La presentazione dei dati racchiusi in un documento

XSL: e. Xtensible Stylesheet Language n La presentazione dei dati racchiusi in un documento XML è basata su due elementi: ¨ un documento che descrive come i dati devono essere elaborati per la presentazione, chiamato foglio di stile XSLT ¨ un componente software, chiamato processore XSLT, in grado di prendere in input un documento XML e un foglio di stile XSLT e di produrre in output i dati secondo il formato di presentazione prescelto (XSL-FO, XHTML, testo, ecc. ) n La definizione di un foglio di stile XSLT è quindi il punto cruciale della presentazione dei dati XML. ¨ le regole di trasformazione presenti in un foglio XSLT consentono di selezionare gli elementi di un documento XML e di gestirne la modalità di presentazione.

XPath: espressioni e funzioni n Individuare gli elementi di un documento XML rappresenta il

XPath: espressioni e funzioni n Individuare gli elementi di un documento XML rappresenta il primo passo di un'elaborazione per la presentazione dei dati. n Nei CSS questo ruolo è svolto dal selettore, cioè l'elemento sintattico di una regola CSS che individua gli elementi da formattare. In XSL questo passo viene descritto tramite il linguaggio XPath. ¨ a differenza dei selettori CSS, XPath è molto più potente e flessibile. n n Questo linguaggio consente di creare espressioni dichiarative, chiamate espressioni XPath o pattern, che individuano i vari nodi dell'albero di rappresentazione di un documento XML.

XPath: espressioni e funzioni <? xml version="1. 0" ? > <articolo titolo=""> <paragrafo titolo="Titolo

XPath: espressioni e funzioni <? xml version="1. 0" ? > <articolo titolo=""> <paragrafo titolo="Titolo del primo paragrafo"> <testo> Blocco di testo del primo paragrafo </testo> <immagine file="immagine 1. jpg"> </immagine> </paragrafo> <paragrafo titolo="Titolo del secondo paragrafo"> <testo> Blocco di testo del secondo paragrafo </testo> <codice> Esempio di codice </codice> <testo> Altro blocco di testo </testo> </paragrafo> </articolo>

XPath: espressioni e funzioni n n Per individuare l'elemento <testo> all'interno del nostro esempio

XPath: espressioni e funzioni n n Per individuare l'elemento <testo> all'interno del nostro esempio di documento XML dobbiamo specificare un percorso di questo tipo: ¨ /articolo/paragrafo/testo Se siamo interessati all'attributo titolo dell'elemento <paragrafo> possiamo specificarlo nel modo seguente: ¨ /articolo/paragrafo/@titolo Queste espressioni, però, individuano il primo elemento che corrisponde al percorso. Per selezionare uno specifico elemento, ad esempio il paragrafo con titolo Titolo del secondo paragrafo, possiamo farlo con l'espressione seguente: ¨ /articolo/paragrafo/[@titolo=“Titolo del secondo paragrafo”] n In pratica, all'interno delle parentesi quadre specifichiamo la condizione che deve essere soddisfatta dall'elemento.

XPath: espressioni e funzioni n Per selezionare un elemento specifico è possibile utilizzare anche

XPath: espressioni e funzioni n Per selezionare un elemento specifico è possibile utilizzare anche alcune funzioni predefinite, come position(), che specifica la posizione di un elemento, e last(), che specifica l'ultima posizione di una sequenza di elementi. ¨ ad esempio, le due espressioni seguenti specificano rispettivamente il secondo paragrafo e l'ultimo paragrafo dell'articolo: ¨ /articolo/paragrafo[position()=2] ¨ /articolo/paragrafo[position()=last()]

Fogli di stile XSLT n Nell'ambito dello standard XSL il compito di trasformare un

Fogli di stile XSLT n Nell'ambito dello standard XSL il compito di trasformare un documento XML in un altro documento è affidato al linguaggio XSLT. n Nella terminologia di XSLT, il documento da trasformare è chiamato documento origine (source document), mentre il documento generato dal processo di trasformazione è chiamato documento risultante (result document). ¨ il documento risultante di una trasformazione XSLT può essere un documento XML o un documento di altro tipo. ¨ ad esempio, a partire da un documento XML possiamo generare un documento XHTML oppure un documento WML o anche RTF o altri formati testuali.

Fogli di stile XSLT n La trasformazione avviene in base alle informazioni contenute in

Fogli di stile XSLT n La trasformazione avviene in base alle informazioni contenute in un particolare tipo di documento e interpretate da un processore XSLT. Questo documento di trasformazione, chiamato foglio di stile XSLT, non è altro che un documento XML che fa uso di tag appartenenti alla grammatica di XSLT in grado di controllare il processo di trasformazione. n In generale, un foglio di stile XSLT ha la seguente struttura : <? xml version="1. 0"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/transorm">. . . template di trasformazione. . . </xsl: stylesheet> n

Fogli di stile XSLT n All'interno del root element <xsl: stylesheet> vengono definite le

Fogli di stile XSLT n All'interno del root element <xsl: stylesheet> vengono definite le istruzioni di trasformazione da applicare al documento XML origine. n XSLT consente di trasformare ciascun elemento del documento XML di origine in un altro elemento del formato del documento risultante. n È possibile anche aggiungere al documento risultante elementi completamente nuovi o non prendere in considerazione determinati elementi del documento origine, riordinare gli elementi, fare elaborazioni in base al risultato di determinate condizioni, ecc. n Il processo di trasformazione controllato da XSLT si basa sull'uso del linguaggio XPath per individuare gli elementi del documento origine, sui quali viene applicato un template (o modello) di trasformazione.

Fogli di stile XSLT n n n Da un punto di vista sintattico, un

Fogli di stile XSLT n n n Da un punto di vista sintattico, un template è un elemento del linguaggio XSLT che ha la seguente forma di base: <xsl: template match="espressione XPath">. . . Definizione dell’output. . . </xsl: template> Un template XSLT individua un elemento o un insieme di elementi di un documento XML sfruttando un’espressione XPath e vi applica una serie di elaborazioni per ottenere un output. Un foglio di stile XSLT non è altro che un insieme di template da applicare ai vari elementi di un documento XML. ¨ comprendere come avviene l'applicazione dei template di un foglio di stile XSLT da parte del relativo processore è un elemento essenziale per realizzare fogli di stile corretti.

Fogli di stile XSLT n n n Il processore XSLT va alla ricerca dei

Fogli di stile XSLT n n n Il processore XSLT va alla ricerca dei template da applicare partendo dal root element e seguendo l'albero di rappresentazione logica del documento stesso. In linea di principio, con l'applicazione del relativo template al root element termina il compito del processore XSLT. Se il foglio di stile contiene diversi template che devono essere applicati ai vari elementi del documento XML di partenza è necessario specificarlo esplicitamente. ¨ questo può essere fatto specificando all'interno del template corrente l'elemento ¨ <xsl: applytemplates/>. ¨ con questo elemento del linguaggio XSLT indichiamo al processore di cercare eventuali altri template da applicare alla trasformazione corrente.

Fogli di stile XSLT n Non è importante l'ordine con cui sono stati specificati

Fogli di stile XSLT n Non è importante l'ordine con cui sono stati specificati i template all'interno del foglio di stile; sarà il processore ad individuarli in base all'espressione XPath associata. ¨ ad esempio, un possibile template del root element che avvia la trasformazione di un articolo può essere analogo al seguente: <xsl: template match="/"> <xsl: value-of select="articolo/@titolo"/> <xsl: apply-templates/> </xsl: template> n Questo template estrae il titolo dell'articolo ed indica al processore XSLT di cercare altri template da applicare al documento XML.

CONCLUSIONI Questa seconda parte del corso ha voluto fornire una panoramica su XML e

CONCLUSIONI Questa seconda parte del corso ha voluto fornire una panoramica su XML e sulle tecnologie collegate a questo metalinguaggio. Ovviamente gli argomenti trattati meritano maggiori approfondimenti, anche in base alle esigenze della persona e del progetto che intende coinvolgere XML. Dalla nascita di XML ad oggi si sono fatti notevoli progressi, non soltanto sul fronte della definizione di linguaggi e sulla loro standardizzazione, ma anche sul fronte delle implementazioni. Numerosi sono ormai gli strumenti che consentono di lavorare con XML, implicitamente ed esplicitamente. Di seguiito si elenca un piccolo sottoinsieme di software per XML.

Parte V Strumenti per XML Editor Browser XML Conversion Tools Document Storage Systems

Parte V Strumenti per XML Editor Browser XML Conversion Tools Document Storage Systems

Xmetal http: //www. softquad. com/products/xmetal/

Xmetal http: //www. softquad. com/products/xmetal/

XMLNotepad n n http: //msdn. microsoft. com/xml/notepad/intro. asp Freeware

XMLNotepad n n http: //msdn. microsoft. com/xml/notepad/intro. asp Freeware

Xeena n n http: //alphaworks. ibm. com/tech/xeena Freeware e portabile

Xeena n n http: //alphaworks. ibm. com/tech/xeena Freeware e portabile

Browsers n Questa categoria comprende gli strumenti per la visualizzazione e la navigazione di

Browsers n Questa categoria comprende gli strumenti per la visualizzazione e la navigazione di documenti XML Internet Explorer - Microsoft (Win 32, Mac) ¨ Mozilla (Win 32, Mac, Linux) ¨ Xplorer - IBM Alphaworks (IBM) ¨

Xplorer n n http: //alphaworks. ibm. com/tech/xplorer Freeware e portabile. E' solo un visualizzatore

Xplorer n n http: //alphaworks. ibm. com/tech/xplorer Freeware e portabile. E' solo un visualizzatore

Document Storage Systems n Strumenti per la gestione dei documenti XML, in grado di

Document Storage Systems n Strumenti per la gestione dei documenti XML, in grado di gestirne la memorizzazione e di semplificare le operazioni di ricerca. Database con supporto per XML ¨ XML Data Store ¨

Oracle 8 i n http: //www. oracle. com n Database con supporto per XML

Oracle 8 i n http: //www. oracle. com n Database con supporto per XML ¨ inserimento di documenti XML come dati primitivi (ricerche testuali) ¨ importazione dati da XML ¨ esportazione dati in XML

e. Xcelon (1) n http: //www. exceloncorp. com n XML Data Store ¨ gestione

e. Xcelon (1) n http: //www. exceloncorp. com n XML Data Store ¨ gestione nativa dei dati XML ¨ interrogazione mediante XML query languages (XQL) ¨ accesso ai dati attraverso interfacce DOM

e. Xcelon (2)

e. Xcelon (2)

Siti Web interessanti n The XML Cover Pages http: //www. oasis-open. org/cover/ n The

Siti Web interessanti n The XML Cover Pages http: //www. oasis-open. org/cover/ n The Whirlwind Guide to XML Tools and Vendors http: //www. infotek. no/sgmltool/guide. htm n Free XML tools and software http: //www/xmlsoftware. org/ http: //www. garshol. priv. no/download/xmltools/ n W 3 C XML page http: //www. w 3. org/XML/ n http: //www. extrowebsite. com/corso_xml. asp http: //www. kosmous. com/risorse/articolo. php? id=13 n

Influenza di XML sul WWW n XHTML sta sostituendo HTML n I blog si

Influenza di XML sul WWW n XHTML sta sostituendo HTML n I blog si basano su feed RSS (o ATOM), che sono documenti XML n I siti di informazione diffondono le notizie con XML e RSS: Corriere della Sera, Repubblica, CNN

XHTML: Next. Gen HTML <? xml version="1. 0" encoding="iso-8859 -1"? > <html xmlns="http: //www.

XHTML: Next. Gen HTML <? xml version="1. 0" encoding="iso-8859 -1"? > <html xmlns="http: //www. w 3. org/TR/xhtml 1" > <head> <title> Title of text XHTML Document </title> </head> <body> <div class="my. Div"> <h 1> Heading of Page </h 1> <p> here is a paragraph of text. I will include inside this paragraph a bunch of wonky text so that it looks fancy. </p> <p>Here is another paragraph with <em>inline emphasized</em> text, and <b> absolutely no</b> sense of humor. </p> <p>And another paragraph, this one with an <img src="image. gif" alt="waste of time" /> image, and a line break. </p> </div> </body></html>

XHTML and other Data <? xml version="1. 0" encoding="iso-8859 -1"? > <html xmlns="http: //www.

XHTML and other Data <? xml version="1. 0" encoding="iso-8859 -1"? > <html xmlns="http: //www. w 3. org/TR/xhtml 1" > <head> <title> Title of XHTML Document </title> </head><body> <div class="my. Div"> <h 1> Heading of Page </h 1> <mathml xmlns=“http: //www. w 3. org/TR/mathml”> … Math. ML markup … </mathml> <p> more html stuff goes here </p> <smil xmlns=“http: //www. w 3. org/TR/smil 1”> … SMIL markup … </smil> </div> </body></html>

Un esempio: XMLNews (1) n n XMLNews definisce il contenuto testuale e le meta-informazioni

Un esempio: XMLNews (1) n n XMLNews definisce il contenuto testuale e le meta-informazioni di notizie da agenzia stampa. ¨ E’ una parte dello standard denominato News Industry Text Format (NITF), sviluppato dal International Press Telecommunications Council e dalla Newspaper Association of America. XMLNews è composto di due parti: ¨ XMLNews-Story è un DTD XML per descrivere in maniera variamente arricchita il testo delle notizie ¨ XMLNews-Meta definisce il formato delle meta-informazioni per notizie d’agenzia. E’ conforme al Resource Description Framework (RDF), e on si riferisce solo alle notizie testuali, ma anche a immagini, video-clip, ecc.

Un esempio: XMLNews (2) n XMLNews-Story: il testo di una notizia di agenzia è

Un esempio: XMLNews (2) n XMLNews-Story: il testo di una notizia di agenzia è diviso in tre parti: l’head contiene informazioni di organizzazione, mentre il body è a sua volta diviso in intestazione e contenuto. <? xml version="1. 0"? > <nitf> <head> <title>Colombia Earthquake</title> </head> <body. head> <hedline><hl 1>143 Dead in Earthquake</hl 1></hedline> <byline><bytag>By Jared Kotler, AP </bytag></byline> <dateline> <location>Bogota, Colombia</location> <story. date>January 25 1999 7: 28 ET</story. date> </dateline> </body. head> <body. content> … </body. content> </body> </nitf>

Un esempio: XMLNews (3) n XMLNews-Story: Il body ha un markup minimale di struttura

Un esempio: XMLNews (3) n XMLNews-Story: Il body ha un markup minimale di struttura del testo: <? xml version="1. 0"? > <nitf> <head> … </head> <body. head> … </body. head> <body. content> <p>Un terremoto ha colpito la Colombia occidentale lunedì, uccidendo almeno 143 persone e ferendone più di 900 mentre scoperchiava edifici nella zona delle coltivazioni di caffè più ricca e fertile della nazione. Gli addetti alla difesa civile sono immediatamente intervenuti. </p> <p>Il terremoto è avvenuto nel primo pomeriggio, con una magnitudine del 6 grado, secondo il Geological Survey Americano, in Golden, Colorado. L’epicentro è stato identificato nella valle dello stato del Cauca, a 210 chilometri a ovest della capitale, Bogotà. </p> </body. content> </body> </nitf>

Un esempio: XMLNews (4) n n n XMLNews-Story: Però è possibile in qualunque momento

Un esempio: XMLNews (4) n n n XMLNews-Story: Però è possibile in qualunque momento aggiungere informazioni inline: <p>Un <event>terremoto</event> ha colpito la <location> <country>Colombia</country> occidentale</location> <chron norm=“ 19990125”>Lunedì</chron>, uccidendo almeno 143 persone e ferendone più di 900 mentre scoperchiava edifici nella zona delle coltivazioni di caffè più ricca e fertile della nazione. Gli <function>addetti alla difesa civile</function> sono immediatamente intervenuti. </p> Questo permette di arricchire la storia con altre informazioni in maniera semiautomatica: ¨ nella ricerca: è possibile cercare tutto quello che è successo in Colombia, o cosa è successo in una certa data. ¨ nella presentazione: un provider potrebbe fornire semi-automaticamente dei link o delle cartine della Colombia. ¨ nell’organizzazione delle news: è possibile cercare tutti i terremoti effettivi, e non le notizie che ne usano la parola, magari figurativamente.

Un esempio: XMLNews (5) n n XMLNews-Meta: Assieme ad ogni notizia, vengono scritte delle

Un esempio: XMLNews (5) n n XMLNews-Meta: Assieme ad ogni notizia, vengono scritte delle informazioni sulla notizia, che possono avere una distribuzione separata. XMLNews-Meta permette di gestire insieme informazioni come: ¨ Informazioni sul contenuto della notizia (titolo, lingua, formato, ecc. ) ¨ Informazioni sulle date della notizia: creazione, pubblicazione, scadenza, ecc. ¨ Informazioni sulla provenienza ed attendibilità della notizia ¨ Informazioni sui possessori dei diritti di distribuzione e copyright ¨ Informazioni di classificazione ed organizzazione ¨ Link a documenti connessi: versioni precedenti, seguenti, ed altre notizie connesse.

Approfondimenti n XML – esempi e dettagli sul formato http: //it. wikipedia. org/wiki/XML n

Approfondimenti n XML – esempi e dettagli sul formato http: //it. wikipedia. org/wiki/XML n “L'azienda è più flessibile con i documenti digitali” http: //www. weekit. it/index. php? option=com_content&task=view&id=37 710&Itemid=190 n Implementare le SOA in azienda http: //searchcio. techtarget. it/01 NET/HP/0, 1254, 17_ART_80096, 00. html? lw=17 n Whitepaper Value. Team su Web Service e SOA http: //www. valueteam. com/PDF_Comunicati/rep_0604_datamanager_w eb. Services_giacalone. pdf