• Non ci sono risultati.

XML Sistemi per il recupero delle informazioni

N/A
N/A
Protected

Academic year: 2021

Condividi "XML Sistemi per il recupero delle informazioni"

Copied!
164
0
0

Testo completo

(1)

Sistemi per il recupero delle informazioni

XML

(2)

Sommario

Esaminiamo:

Parte I:

Cos’è il markup

Parte II:

Storia e Introduzione all’XML

Parte III:

Documenti, dati e rappresentazioni

Parte IV:

Definizione e applicazione di grammatiche

Parte V:

Modelli di presentazione dei documenti XML

Parte VI:

Strumenti e indirizzi per XML

(3)

Parte I

Cos’è il markup

Definizione di markup Tipi di markup

Il markup procedurale Il markup dichiarativo

(4)

Perché tutto questo chiasso?

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.

(5)

Cos’è il markup? (1)

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.

Oltre a rendere il testo più leggibile, il markup permette anche di specificare ulteriori usi del testo.

Con il markup per sistemi informatici, specifichiamo le modalità esatte di utilizzo del testo nel sistema stesso.

(6)

Cos’è il markup? (2)

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).

La numerazione delle pagine o l’uso dei margini per creare effetti sul contenuto sono noti da centinaia di anni.

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.

(7)

Tipi di markup

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.

(8)

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, 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, ...

3

Un testo su carta

(9)

Treuominiinbarcajeromekjerome1889capitolopri motreinvalidilesofferenzedigeorgeeharrislavittim adicentosettemalattieinguaribilieravamoinquattr ogeorge,williamsamuelharrisioemontmorencyst andocenesedutiincameramiafumavamoeparlav amodiquantofossimomalridottimalridottidalpunto divistadellasaluteintendonaturalmentecisentiva motuttipiuttostogiùdicorda

Il testo senza markup

Questo è il testo completamente senza markup, come poteva essere scritto su un papiro della biblioteca di Alessandria, nel II o III secolo a.C.

(10)

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 metabolizzato

Aggiungiamo markup puntuazionale e presentazionale:

maiuscole/minuscole, punteggiatura, spazi e ritorni a capo sono essi stessi elementi di markup.

(11)

{\rtf1 \mac \ansicpg10000 \uc1 \pard \plain \s15 \qc \widctlpar \adjustright

\f4 \fs48 \cgrid {Tre Uomini in Barca \par } \pard \plain \widctlpar

\adjustright \f4 \cgrid { \line \par \par \par \par \par } \pard \plain \s1 \qc \keepn

\widctlpar \outlinelevel0 \adjustright \i \f4 \fs36 \cgrid {Jerome K. Jerome \par } \pard \plain \qc \widctlpar \adjustright \f4 \cgrid { \fs36 […] \par 1889 \line

\par } \pard \widctlpar \adjustright { \page } { \b \fs36 Capitolo primo} { \par

\par \par \line } { \i Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - [ \u8230 \'c9] \par } { \line } {

\fs28 Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e

parlavamo di quanto fossimo malridotti \u8230 \'c9 malridotti, dal punto di vista della salute, intendo, naturalmente. \line Ci sentivamo tutti

piuttosto gi \u249 \'9d di corda, ... \par }}

Markup procedurale

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.

(12)

Il markup procedurale

Basato sull’aspetto

Ad ogni elemento del documento viene associata la procedura per visualizzarlo in maniera voluta: font, dimensione, corsivi, grassetti, margini, interlinea, ecc.

Dipendente dal sistema

ogni sistema di visualizzazione impone le proprie regole e la propria sintassi.

Associato agli individui

ogni elemento possiede le proprie procedure per la visualizzazione, che possono anche essere tutte diverse anche per elementi dello stesso tipo.

Non contestuale

le regole di visualizzazione non dipendono dal contesto in cui vengono fatte, ma ognuna fa specie a sé.

(13)

<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>

Markup descrittivo

Sono informazioni (descrizioni) sugli elementi del documento, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi.

(14)

Il markup descrittivo

Basato sul ruolo

di ogni elemento viene descritto il ruolo all’interno del testo, più che le regole per la sua visualizzazione:

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.

(15)

Il markup descrittivo

Basato su categorie

i ruoli sono categorie. Ogni elemento è associato ad una categoria, e ne riflette tutte le caratteristiche automaticamente.

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.

(16)

La storia del markup

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 (W3C)

1996: Inizio dello sviluppo di XML presso il W3C

1998: XML 1.0 diventa una raccomandazione W3C

(17)

SGML

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.

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.

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.

(18)

Parte II

Storia e Introduzione a XML

(19)

INTRODUZIONE - I

L'eXtensible Markup Language (XML) non è l'ennesimo linguaggio di markup né l'evoluzione dell'HTML.

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.

A differenza di HTML, XML non ha tag predefiniti e non serve per definire pagine Web né per programmare.

Serve esclusivamente per definire altri linguaggi.

(20)

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 W3C (Worl Wide Web Consortium) e sono consultabili a partire dall'indirizzo http://www.w3.org/XML.

INTRODUZIONE - II

(21)

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?

(22)

UN PO’ DI STORIA

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.

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.

Risultato: un sito Web che usava le estensioni proprietarie di un browser rischiava di risultare inaccessibile agli altri browser.

(23)

UN PO’ DI STORIA – NASCITA DELL’XML

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.

Nel 1996 si costituì l'XML Working Group nell'ambito del W3C.

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

Nel dicembre '97 le specifiche di XML venivano pubblicate.

(24)

UN PO’ DI STORIA

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.

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

(25)

IL MONDO DI XML

Dopo aver conosciuto la storia dell'origine di XML, la domanda che sorge è: allora XML sostituirà l'HTML?

Anche se il dubbio risulta legittimo, possiamo dire che XML e HTML non sono in diretta concorrenza.

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.

(26)

IL LINGUAGGIO XHTML

L'evoluzione del linguaggio HTML è XHTML (eXtensible 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

(es. se usiamo <p> dobbiamo chiudere con </p>)

i valori degli attributi devono essere specificati tra doppi apici o singoli apici

(es. <table width="30%">)

i tag vuoti seguono la cosiddetta sintassi minimizzata

(es, il tag <br> diventa <br/>)

(27)

IL LINGUAGGIO XHTML

Possono sembrare differenze di poco conto, soprattutto perché la tolleranza dei browser ci ha abituato a commettere errori sintattici, ma sono molto importanti.

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, …

(28)

XML: standardizzato e strutturato

Abbiamo detto che XML è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati.

Due parole sono di fondamentale importanza: standard e struttura.

Le regole sono standard e questo garantisce l'indipendenza da una specifica piattaforma hardware e software o da uno specifico produttore.

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.

(29)

I vantaggi di XML

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.

(30)

Cosa c’è con XML?

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

(31)

Cosa si fa con XML?

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.

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.

(32)

Cosa si fa con XML? (2)

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.

(33)

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

(34)

HTML vs XML

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.

Con il successo del WWW, HTML venne iniziato ad usare per molti scopi, molti più di quelli per cui era stato progettato.

Si iniziò ad abusare dei tag di HTML per gli effetti grafici che forniva, più che per gli aspetti strutturali o semantici.

Si iniziarono a desiderare elaborazioni sofisticate sui dati HTML, elaborazioni che non era possibile fornire.

Si iniziò a trovare limitata la capacità grafica di HTML, anche abusando dei tag.

(35)

<p> <b> Sig. Mario Rossi </b>

<br>

Via Verdi, 12

<br>

56100, Pisa

Un markup con HTML

Sig. Mario Rossi Via Verdi, 12

56100, Pisa

(36)

Il nostro algoritmo per trovare il numero civico:

Se un paragrafo contiene due tag <br> allora la prima parola dopo la prima virgola dopo il primo tag <br> è il numero civico.

Interpretazione dell’HTML

(37)

<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>

Un semplice markup in XML

(38)

Visualizzazione dell’XML

Come l’HTML Sig. Mario Rossi Via Verdi, 12

56100, Pisa

ma anche…

Sig. Mario Rossi Via Verdi, 12

56100, Pisa

(39)

Un algoritmo migliore e più semplice per trovare il numero civico:

il numero civico è il contenuto del tag <numero-civico>

Interpretazione dell’XML

(40)

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.

(41)
(42)

XML: gli obiettivi

Questi gli obiettivi progettuali di XM secondo il W3C 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.

(43)

Parte III

Documenti, dati e rappresentazioni

(44)

STRUTTURA DEI DOCUMENTI XML

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.

(45)

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.

(46)

Struttura gerarchica di un documento XML

Root element

elementi

Attributo

(47)

Struttura logica di un documento XML

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.

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.

(48)

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="immagine1.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>

<paragrafo tipo="bibliografia">

<testo>

Riferimento ad un articolo

</testo>

rappresentazione fisica del documento XML visto prima

(49)

Struttura logica di un documento XML

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" ?>

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.

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="immagine1.jpg“/>

(50)

DOCUMENTI BEN FORMATI

XML richiede un certo rigore sugli aspetti sintattici.

ad es. un tag vuoto deve prevedere il tag di chiusura o la sua forma abbreviata

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.

(51)

DOCUMENTI BEN FORMATI

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

(52)

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

(53)

DOCUMENTI BEN FORMATI – contenuto

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.

(54)

DOCUMENTI BEN FORMATI – commenti

In un documento XML possiamo trovare i commenti, cioè informazioni ignorate dai software che lo elaborano.

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 bla -->

(55)

DOCUMENTI BEN FORMATI – entità

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>

Per evitare situazioni di questo tipo, XML prevede degli oggetti speciali detti entità che consentono di sostituire altri caratteri.

(56)

DOCUMENTI BEN FORMATI – entità

Cinque entità sono predefinite e consentono l'uso di altrettanti caratteri riservati all'interno di un documento:

&amp; definisce il carattere &

&lt; definisce il carattere <

&gt; definisce il carattere >

&quot; definisce il carattere “

&apos; definisce il carattere ‘

Sfruttando le entità, l'esempio precedente diventa:

<testo>

il simbolo &lt; indica minore di

</testo>

(57)

DOCUMENTI BEN FORMATI – CDATA

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>

</capitolo>

</libro>

</codice>

In questo caso, al posto di sostituire tutte le occorrenze dei simboli speciali con le corrispondenti entità è 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.

(58)

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>

</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.

(59)

DOCUMENTI VALIDI – grammatica

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.

(60)

DOCUMENTI VALIDI – grammatica

Ma come si definisce una grammatica per descrivere un linguaggio di markup?

Attualmente due sono gli approcci più diffusi alla creazione di grammatiche per documenti XML:

Dtd – Document Type Definition

XML Schema

Questi argomenti saranno affrontati in seguito.

(61)

DOCUMENTI VALIDI – tipi di elaborazione

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.

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.

I software che si occupano di queste elaborazioni sono detti parser e sono degli strumenti standard disponibili sulle diverse piattaforme.

(62)

DOCUMENTI VALIDI – parser

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

La maggior parte degli editor XML più recenti hanno un parser integrato o si appoggiano su parser esterni per effettuare la convalida dei documenti.

(63)

I documenti XML

Un documento in un linguaggio di markup definito sulla base di XML è composto dalle seguenti tre parti:

dichiarazione XML (opzionale)

la specifica delle opzioni attivabili nel documento XML

Document Type Declaration – DDT (opzionale)

le regole di validità a cui il documento deve sottostare

istanza del documento

il contenuto ed il markup effettivo del documento

(64)

Dichiarazione XML

<?XML version=“1.0” encoding=“UTF-16” standalone=“yes” ?

>

La dichiarazione XML specifica le caratteristiche opzionali del documento in questione.

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.

(65)

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.

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.

Document Type Declaration e

Document Instance

(66)

I componenti di XML

Un documento XML contiene una varietà dei seguenti componenti

Elementi

Attributi

Entità

Testo (detto anche #PCDATA)

Commenti

Processing Instructions

(67)

Elementi

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

il titolo, l’autore, i paragrafi del documento sono tutti elementi.

Un elemento è individuato da un tag iniziale, un contenuto ed un tag finale.

<TITOLO>Tre uomini in barca</TITOLO>

(68)

Gli attributi sono informazioni aggiuntive sull’elemento che non fanno effettivamente parte del contenuto (meta-informazioni).

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>

Attributi

(69)

Parte IV

Definizione e applicazione di grammatiche

(70)

DTD: Document Type Definition

Da un punto di vista cronologico, il primo approccio per la definizione di grammatiche per documenti XML è rappresentato dai Document Type Definition (DTD).

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.

La sintassi di un Dtd si basa principalmente sulla presenza di due dichiarazioni: <!ELEMENT> e <!ATTLIST>.

(71)

DTD – <!ELEMENT>

La prima definisce gli elementi utilizzabili nel documento e la struttura del documento stesso, la seconda definisce la lista di attributi per ciascun elemento.

Ad esempio, la dichiarazione

<!ELEMENT articolo(paragrafo+)>

indica che l'elemento <articolo> ha come sottoelemento uno o più elementi <paragrafo>.

Il carattere '+', dopo il nome del sottoelemento, indica il relativo numero di occorrenze.

(72)

DTD – <!ELEMENT>

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

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.

(73)

DTD – <!ELEMENT>

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>

Nel caso di elementi che racchiudono testo abbiamo una definizione analoga alla seguente:

<!ELEMENT testo (#PCDATA)>

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>

(74)

Ricapitolando…

<!ELEMENT X ANY>

l’elemento X può contenere qualunque altro elemento specificato nel DTD, o anche testo

<!ELEMENT X EMPTY>

l’elemento X non può contenere niente. Debbo scrivere il tag con la sintassi tipica degli elementi vuoti: <X/>

<!ELEMENT X #PCDATA>

l’elemento X può solo contenere testo. E’ proibito mettere altri elementi al suo interno

<!ELEMENT X (Y, (W | Z)+ , K*)>

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.

(75)

Separatori

Separano specifiche determinando l’ordine o l’obbligatorietà:

‘,’ (virgola): richiede la presenza di entrambe le specifiche nell’ordine precisato.

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.

Es.: (a | b): ci può essere o a, oppure b, ma solo uno di essi.

(76)

Un esempio

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>

(77)

Il file “romanzo.dtd”

<!ELEMENT ROMANZO (TITOLO, AUTORE, ANNO, CAPITOLO+)>

<!ELEMENT CAPITOLO (TITOLO, INDICE, PARA+)>

<!ELEMENT TITOLO (#PCDATA) >

<!ELEMENT AUTORE (#PCDATA) >

<!ELEMENT ANNO (#PCDATA) >

<!ELEMENT INDICE (EL+) >

<!ELEMENT EL (#PCDATA) >

<!ELEMENT PARA (#PCDATA | INCISO) * >

<!ELEMENT INCISO (#PCDATA | INCISO)* >

(78)

DTD – <!ATTLIST>

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).

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)

(79)

DTD – <!ATTLIST>

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

>

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.

(80)

DTD – <!ATTLIST>

<!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”

<!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”

<!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.

<!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.

(81)

DTD – <!ATTLIST>

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.

(82)

Esempio, più: attributi ID e IDREF

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>

(83)

Il file “romanzo.dtd”

<!ELEMENT ROMANZO (TITOLO, AUTORE, ANNO, CAPITOLO+)>

<!ELEMENT CAPITOLO (TITOLO, INDICE, PARA+)>

<!ELEMENT TITOLO (#PCDATA) >

<!ELEMENT AUTORE (#PCDATA) >

<!ELEMENT ANNO (#PCDATA) >

<!ELEMENT INDICE (EL+) >

<!ELEMENT EL (#PCDATA) >

<!ATTLIST EL p IDREF#REQUIRED >

<!ELEMENT PARA (#PCDATA | INCISO)* >

<!ATTLIST PARA n ID #IMPLIED >

<!ELEMENT INCISO (#PCDATA | INCISO)* >

(84)

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>

(85)

Entità, documenti e considerazioni su XML

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 HyperText Markup Language:

<!ENTITY html "HyperText 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.

(86)

Entità, documenti e considerazioni su XML

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.

(87)

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.

(88)

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.myXML.it/articolo.dtd">

(89)

Entità, documenti e considerazioni su XML

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.

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 che in determinati contesti consentirebbero di ottenere un controllo ancora più accurato sulla validità di un documento XML.

Queste limitazioni hanno spinto alla definizione di approcci alternativi per definire grammatiche per documenti XML. Tra questi approcci il più noto è XML Schema.

Riferimenti

Documenti correlati

 Corretti dal punto di vista semantico (lo può fare solo un essere umano).. Come si generano i

 un documento che descrive come i dati devono essere elaborati per la presentazione, chiamato foglio di stile XSLT.  un componente software, chiamato processore XSLT,

 un documento che descrive come i dati devono essere elaborati per la presentazione, chiamato foglio di stile XSLT.  un componente software, chiamato processore XSLT,

XML (eXtensible Markup Language) può essere visto come un linguaggio per defini- re linguaggi di markup: le annotazioni, chiamate tag, non sono predefinite, bensì definite

XML Schema prevede dei tipi semplici primitivi, che sono predefiniti, mentre negli schemi si possono creare tipi semplici derivati (re- strizioni sui valori dei tipi primitivi:

- #FIXED VALUE indica che l'attributo può non avere valore ma, se lo ha, deve necessariamente essere quello di default. Tale valore viene espresso indicando direttamente il valore

Tree Edit Distance: ottima metrica per esprimere la distanza tra alberi ma non adatta alla risoluzione di query. Occorre adattare la metrica al contesto

Esercizio: creare il file rubrica1.xml relativo al seguente albero inserendo dei dati fittizi..