IDUL 2013 Marcature ad alto livello, corpora e XML.

91
IDUL 2013 Marcature ad alto livello, corpora e XML

Transcript of IDUL 2013 Marcature ad alto livello, corpora e XML.

Page 1: IDUL 2013 Marcature ad alto livello, corpora e XML.

IDUL 2013

Marcature ad alto livello, corpora e XML

Page 2: IDUL 2013 Marcature ad alto livello, corpora e XML.

Dopo la codifica a livello zero

Esaurita la fase di marcatura a livello zero (che normalmente si limita alla scelta tra ISO/8859 e UNICODE), la digitalizzazione di un testo passa a mercature che consentano di mettere in evidenza la struttura interna del documento marcato. Questo si può fare usando banche dati,ma queste sono poco adatte a rappresentare informazioni altamente sequenziali, e con pochi e semplici riferimenti interni.

Page 3: IDUL 2013 Marcature ad alto livello, corpora e XML.

DATA BASE E LINGUAGGI DI MARCATURA

Nel caso di un testo, le informazioni in esso contenute possono essere organizzate tramite linguaggi di marcatura.Con tali linguaggi si può effettuare una “codifica ad alto livello”Contrapposta alla “codifica a livello zero” = resa dei caratteri tramite ascii, unicode, ecc.Invece di inserire i dati in un DB, si inserisce una codifica “intorno” alla informazione da segnalare.

Page 4: IDUL 2013 Marcature ad alto livello, corpora e XML.

CORPORAUno dei casi in cui è la marcatura di un testo è

centrale è quello dei corpora (sing. corpus).• I corpora sono grandi collezioni di testi in una data lingua

(da qualche decina di documenti fino a miliardi di parole), raccolte in formato digitale ed annotati.

• Possono contenere testi uniformi per periodo, autore, stile, modalità (scritto, parlato trascritto), provenienza (p.es. tutti gli articoli di un giornale) o argomento. O possono essere non uniformi (p.es. il testo estratto da pagine web)

Page 5: IDUL 2013 Marcature ad alto livello, corpora e XML.

CorporaPrimi esempi di corpora per l’inglese.• Brown Corpus

1964, 1M parole, inglese giornalistico.

• CHILDES1985, trascrizione di bambini tra 14 mesi a 4 anni, multilingue, parzialmente annotato. Prezioso per studi sull’apprendimento del linguaggio.

• British National Corpus1991, 100M parole, inglese britannico, bilanciato tra generi, scritto e parlato. Etichettato con categorie lessicali usando SGML

• PENN Treebank1989 Articoli del Wall Street Journal+dialoghi, con annotazioni sintattiche (struttura a costituenti). Ora aggiornato con il Brown Corpus.

Page 6: IDUL 2013 Marcature ad alto livello, corpora e XML.

CorporaEsempi moderni di corpora per l’inglese.• UKWAC (Ferraresi, Zanchetta, Baroni e Bernardini 2008)

2008, 2.3G parole, inglese estratto da pagine web, marcature POS

• WaCkypedia_EN Corpus2009, 800M parole, con POS. Estratto delle wikipedia inglese del 2009.

• Google 5-grams2006, 1T parole. Tutte le sequenze di 5 parole estratte da una raccolta di testi inglese, anche letterari. Diacronico, può essere usato per visualizzare lo sviluppo di espressioni attraverso il tempo.

Page 7: IDUL 2013 Marcature ad alto livello, corpora e XML.

Corpora

Annotazioni sintattiche:

(S (NP (NNP John))

(VP (VPZ loves)

(NP (NNP Mary)))

(. .))

Frase

Sintagma nominaleSintagma verbale

Page 8: IDUL 2013 Marcature ad alto livello, corpora e XML.

CorporaEsempi moderni di corpora per altre lingue• Corpus «La Repubblica»

2004, 380M parole. Articoli del giornale La Repubblica, annotati con POS e lemmatizzati. Ricercabile on-line.

• ItWAC 2008, 2G parole, italiano estratto da pagine web a partire da parole del corpus di Repubblica, marcature POS

• DeWAC1.7G, tedesco

Una importante organizzazione per la creazione e disseminazione di dati linguistici è il Linguistic Data Consortium

In Italia, si veda il sito WACKY, della università di Bologna.

Page 9: IDUL 2013 Marcature ad alto livello, corpora e XML.

CORPORAI corpora stanno diventando sempre più

importanti per una varietà di scopi:• Analisi linguistiche (sintassi, semantica)

• Costruzioni di modelli per la linguistica computazionale (p.es. addestramento di programmi di dettatura tipo dragon dictate ),

• Estrazione automatica di fatti (text mining)

• Costruzione e aggiornamento di lessici e thesauri

Page 10: IDUL 2013 Marcature ad alto livello, corpora e XML.

Interrogazione di corpora• KWIC

Key Words in Context, formato preferito per concordanze

• Use di espressioni regolari[12]+[0-9][0-9][0-9] una data(vedi p.es. questo breve corso)

• Esempio on-line: consultazione di un piccolo corpus usando il linguaggio di interrogazione del software CQP-CWB (PDF)

Page 11: IDUL 2013 Marcature ad alto livello, corpora e XML.

Usare i corporaAlcuni fatti che emergono facilmente da un

corpus:• Le parole di gran lunga più frequenti sono le parole

funzione (be, to, of, and, a, in, that, have, I, it, for, not, on, with, he,

as, you, do, at …)

• Il lessico segue la legge di Zipf: la frequenza con cui una parola occorre è inversamente proporzionale alla sua posizione in un ordinamento per frequenza.

• Dunque il lessico conterrà un piccolo numero di parole molto frequenti, ed una lunghissima «coda» di parole estremamente rare.

Page 12: IDUL 2013 Marcature ad alto livello, corpora e XML.

Creazione di un corpusPassi necessari per la codifica a livello di

parola:

• Tokenizzazione (+ Normalizzazione)

• Lemmatizzazione

• Marcature Part Of Speech (POS)

• Altre marcature

Page 13: IDUL 2013 Marcature ad alto livello, corpora e XML.

Tokenizzazione e normalizzazione

• Abbreviazioni: sig. avv. art. …

• Sigle: C.P.C., SA, …

• Numeri: IX, 1908, 1,59’, 00,96’, …

Page 14: IDUL 2013 Marcature ad alto livello, corpora e XML.

LemmatizzazioneRiduzione delle varianti morfologiche ad una

forma «citazionale», da dizionario. Per l’italiano, ottenuta con Morph-it

Form Lemma Features

rimpinzeremmo rimpinzare VER:cond+pre+1+p

abominevole abominevole ADJ:pos+m+sdabbenaggine dabbenaggine NOUN-F:sostensibilmente ostensibilmente ADV

Page 15: IDUL 2013 Marcature ad alto livello, corpora e XML.

CODIFICA AD ALTO LIVELLO: PIANI MULTIPLI

In un testo i dati linguistici sono correlati secondo piani di organizzazione multiplistruttura del testol’ articolazione in sezioni, capitoli, titoli, ecc.struttura del contestol’autore, la data di produzione, la finalità del testo, ecc.struttura linguistica (implicita nel testo!!)Lingua del testo, differenza testo/citazione …informazioni morfologiche, sintattiche, semanticheStrutture retoriche, argomentative, …La codifica esplicita di informazione su un testo viene detta annotazione (o “markup”) del testo.

Page 16: IDUL 2013 Marcature ad alto livello, corpora e XML.

POS Tagging«TheDT fogNN cameVBD pouringVBG inIN atIN everyD

T chinkNN andCC keyholeNN ,, andCC wasVBD soR

B denseJJ withoutIN ,, thatIN althoughIN theDT courtNN wasVBD ofIN theDT narrowestJJS ,, theDThousesNNS oppositeNN wereVBD mereJJ phantomsNN

S .SENT»

• Notate la necessità di disambiguare le forme in contesti diversi (p.es. «that rabbit», «I saw that …»

Page 17: IDUL 2013 Marcature ad alto livello, corpora e XML.

Più in generale: COME CODIFICARE?

Quali passi seguire per effettuare una annotazione?Individuare il livello di informazione da codificare

(p.es. strutturale, linguistica, ecc.)Definire il repertorio dei tratti giudicati rilevanti per la codificaScegliere un formato per associare la annotazione al testo

Page 18: IDUL 2013 Marcature ad alto livello, corpora e XML.

SCELTA DELLE INFORMAZIONI DA ANNOTARE: ESEMPIO

Codifica morfo-sintattica oggetto: codificare esplicitamente la categoria grammaticale (POS, Part Of Speech) e le caratteristiche morfologiche delle parole di un testo.

Da definire:

Quali attributi codificare (cat. grammaticale, persona, genere, numero, caso, ecc.)

Quali valori possono avere i diversi attributi (numero = SING, PLUR; caso = NOM, GEN, ecc.)

Come etichettare le varie categorie (uniformità della marcatura)

Page 19: IDUL 2013 Marcature ad alto livello, corpora e XML.

Scelta della marcatura

altre decisioniCosa fare con elementi ambigui (per es. come codificare “che” in “Che roba!”, “dico che piove”?) e come specificare eventuali valori disgiuntivi (“X è CONG oppure PRON”)

Quali attributi sono compatibili (p.es. non ha senso marcare “Caso” su un elemento marcato “avverbio”)

Quali criteri di applicazione al testo delle categorie selezionate:

attribuire la codifica a tutto il testo, o a una parte? Fino a che livello di dettaglio?

Page 20: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio: categorie morfologiche per l’italiano (Rank Xerox Research Centre)

TAG | DESCRIPTION | EXAMPLE---------------- +--------------------------------------- +---------------------NSG | singular noun | casa, balsamoNPL | plural noun | case, ventottesimiPROP | proper name | Bernardo, Monte Isola---------------- +--------------------------------------- +---------------------ADJSG | singular adjective | buono, narcisisticoADJPL | plural adjective | belle, trecentocinquesimi---------------- +--------------------------------------- +---------------------VAUXINF | infinitive auxiliary "essere"/"avere" | esser, essere, aver, avereVAUXF | finite auxiliary "essere" or "avere" | è, sarò, saranno, avreteVAUXGER | gerund auxiliary "essere" or "avere" | essendo, avendoVAUXGER_CLIT | gerund auxiliary + clitic | essendogliVAUXIMP | imperative auxiliary | sii, sia, abbi, abbiamoVAUXIMP_CLIT | imperative auxiliary + clitic | siategliene, abbiatemiVAUXPPSG | singular past participle auxiliary | stato/a, avuto/aVAUXPPPL | plural past participle auxiliary | stati/e, avuti/eVAUXPPSG_CLIT | sg. past part. auxiliary + clitic | statone, avutavelaVAUXPPPL_CLIT | pl. past part. auxiliary + clitic | statine, avutitiVAUXPRPARTSG | singular present participle auxiliary | essente, aventeVAUXPRPARTPL | plural present participle auxiliary | essenti, aventi---------------- +--------------------------------------- +---------------------VINF | verb infinitive | sciupare, trascinarVINF_CLIT | verb infinitive + clitic | spulciarsi, risucchiarsi…

Page 21: IDUL 2013 Marcature ad alto livello, corpora e XML.

REQUISITI PER LA CODIFICA

Dovendo associare altre informazioni al testo, alcuni requisiti generali:

1.Mantenere una chiara divisione tra il testo e la annotazione relativa (informazione vs. metainformazione); Esempio negativo:

“Come Cong. andò V_intr che Cong. Maestro N … “2.Permettere di scorporare testo e annotazione;3.Avere annotazioni ragionevolmente autoesplicative;4.Non consumare troppo spazio;5.Permettere all’utente facili aggiunte/modifiche6.Permettere l’uso del testo annotato su una varietà di sistemi informatici (tramite “formati aperti”)7.Limitare la obsolescenza (del formato dati e del supporto di registrazione)

Page 22: IDUL 2013 Marcature ad alto livello, corpora e XML.

ASSOCIARE TESTO E CODIFICAi linguaggi di marcatura

Codifica di alto livello con linguaggi di markup (linguaggi di marcatura)un testo codificato con un linguaggio di marcatura è in formato “solo testo” (tutti caratteri stampabili)

buona interoperabilità Scarsa obsolescenza (specie se associato ad uno standard e non

semplicemente ad un software)l’informazione strutturale è rappresentata attraverso l’aggiunta al testo di etichette (o tag) di marcatura, chiaramente identificabili

Buona distinzione testo/metatestoNon un buon modo per risparmiare spazio (ma esiste sempre la possibilità di comprimere il file; non un problema di conservazione con gli hardware attuali; problema, in caso, di trasmissione via rete)

Page 23: IDUL 2013 Marcature ad alto livello, corpora e XML.

INSERIMENTO DELLA MARCATURA

Programmi per caricare, scrivere o modificare testi in formato ASCII (Latin-1 / UNICODE) Funzioni di stampa ridotte all’osso (niente formattazione del carattere, paragrafo, …) Funzioni anche molto sofisticate di manipolazione del testo (ricerca/sostituzione avanzata, macro, …) Sensibili alla sintassi di vari tipi di file di testo (linguaggi di programmazione, HTML, …)

Editor di testo

Page 24: IDUL 2013 Marcature ad alto livello, corpora e XML.

EDITOR DI TESTO

Programmi per caricare, scrivere o modificare testi in formato ASCII (Latin-1 / UNICODE) Funzioni di stampa ridotte all’osso (niente formattazione del carattere, paragrafo, …) Funzioni anche molto sofisticate di manipolazione del testo (ricerca/sostituzione avanzata, macro, …) Sensibili alla sintassi di vari tipi di file di testo (linguaggi di programmazione, HTML, …)

Editor di testo

Page 25: IDUL 2013 Marcature ad alto livello, corpora e XML.

EDITOR DI TESTO “MINIMO”

“Blocco note” (ingl. “Notepad”) di Windows.

Editor minimalista, distribuito con Windows. Legge di base file con suffisso .txt Nessuna funzione sofisticata Nessuna sensibilità al tipo di file Conosce UNICODE Problemi nel trattamento di file non-windows

Page 26: IDUL 2013 Marcature ad alto livello, corpora e XML.

EDITOR: SciteVedi http://www.scintilla.org/SciTE.html

Page 27: IDUL 2013 Marcature ad alto livello, corpora e XML.

Emacs Probabilmente il più potente editor esistente. Può essere esteso dagli utenti per usi vari; programmabile e modulare Sofisticata serie di comandi sul testo (macro, espressioni regolari, …) Gratuito, con codice “open source” Due versioni: GNU Emacs (1976 Richard Stallman) e Xemacs Disponibile per UNIX, Windows, Mac, … Interfaccia prevalentemente non grafica; ben documentata ma difficile da imparare.

Page 28: IDUL 2013 Marcature ad alto livello, corpora e XML.

EDITOR: EMACSVedi http://www.gnu.org/software/emacs/

Page 29: IDUL 2013 Marcature ad alto livello, corpora e XML.

DUE TIPI DI MARCATURA DEL TESTO

Marcatura procedurale (detta anche marcatura tipografica) che consiste in una serie di istruzioni operative che forniscono le specifiche di formattazione e impaginazione del testo per la visualizzazione e la stampa

Marcatura dichiarativa (detta anche marcatura logica o descrittiva) dove i codici di marcatura indicano la funzione assolta dal blocco di testo a cui si riferiscono, ad esempio titolo, paragrafo, nota, citazione ecc. senza fornire indicazione di come tali elementi del testo dovranno apparire fisicamente sulla pagina o sul video (es. SGML, XML)

Page 30: IDUL 2013 Marcature ad alto livello, corpora e XML.

Procedurale e dichiarativoLa distinzione è presente anche in Microsoft

Word, nel meccanismo degli stili.• E’ possibile assegnare a qualsiasi parte del testo

uno stile (predefinito, o creato dall’utente)

• A ciascuno stile vengono poi associate determinate caratteristiche tipografiche.

• Cambiando le caratteristiche grafiche associate ad un certo stile, tutti gli elementi contraddistinti da quello stile vengono istantaneamente modificati.

Page 31: IDUL 2013 Marcature ad alto livello, corpora e XML.

Marcatura dichiarativa: vantaggi

facilità nella creazione: l’autore si concentra sul ruolo organizzativo delle singole parti di testo, piuttosto che sul loro aspetto stampato indipendenza dalla formattazione: riformattare un documento secondo nuove regole richiede semplicemente di ricodificare dei parametri esterni, non di modificare in alcuna maniera il testo codificato flessibilità: riusare un testo codificato in un nuovo contesto è facile, perché non è necessario rimuovere la vecchia informazione per far posto alla nuova visioni di documenti dinamicamente riconfigurabili: è possibile selezionare viste diverse dello stesso documento

Page 32: IDUL 2013 Marcature ad alto livello, corpora e XML.

L’XML (eXtensible Markup Language)

è un linguaggio di markup sviluppato dallo XML Working Group del W3C a partire dal 1996

XML è uno dei più importanti sviluppi nella storia della computazione. Negli ultimi anni è stato adottato in campi molto diversi tra loro: legge, aeronautica, finanza, sicurezza, robotica, turismo, arte, design del software, fisica, letteratura, …

XML è nato dallo sforzo di dare forza e struttura all’SGML (“Standard Generalized Markup Language”, ISO standard: ISO 8879:1986) nel web, in una forma che fosse però abbastanza semplice per gli utenti non esperti.

Page 33: IDUL 2013 Marcature ad alto livello, corpora e XML.

XMLXML nasce dalla lunga storia dei sistemi di elaborazione di testi allo scopo di permettere l’elaborazione delle informazioni piuttosto che la loro visualizzazione

in un documento XML, quindi, non e’ necessario fare alcun riferimento al modo in cui le informazioni verranno visualizzate: le regole per la visualizzazione saranno inserite in un foglio esterno chiamato foglio di stile (ingl. “Stylesheet”)

XML permette all’utente di definire il proprio insieme di tag (elementi) e in questo senso può essere considerato un meta-markup language: i tag definiti dall’utente possono avere dei nomi che rispecchiano il contenuto del documento stesso

Le specifiche complete dell’ XML 1.0 sono sul web (in italiano a http://www.xml.it:23456/XML/REC-xml-19980210-it.html)

Page 34: IDUL 2013 Marcature ad alto livello, corpora e XML.

Struttura logica generale dei tag XML (HTML/SGML)

<marcatore>testo a cui si riferisce</marcatore><marcatore attributo=“valore”>testo a cui si riferisce</marcatore><marcatore_aperto_e_chiuso/>

Oltre al termine “marcatore” si usa “etichetta” o l’inglese “tag”; il termine tecnico è “elemento”A differenza che in SGML ed in HTML:

in XML ogni marcatore aperto deve essere chiuso (XML è più restrittivo di SGML) Maiuscole e minuscole sono distinte (<p>…</P> è un errore)

Page 35: IDUL 2013 Marcature ad alto livello, corpora e XML.

Markup XML per codifica strutturale<libro><titolo>Le avventure di Pinocchio<sottotitolo>Storia di un burattino</sottotitolo></titolo><autore>Carlo Collodi</autore><parte p_id=”1”><titolo>Parte prima</titolo><capitolo c_id=”I”><titolo> Come andò che maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</titolo><capoverso num=”p1c1c1”>C'era una volta...</capoverso><capoverso num=”p1c1c2”>- Un re! - diranno subito i miei piccoli lettori.</capoverso><capoverso num=”p1c1c3”>No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno.</capoverso><capoverso num=”p1c1c4”>Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze.</capoverso> </capitolo></parte></libro>

Page 36: IDUL 2013 Marcature ad alto livello, corpora e XML.

Markup doppio

<libro>…<parte><capitolo c_id=”I”><titolo>Come <parola cat=“V” tempo=“passRem”>andò</parola> che <parola cat=“N” genere=“m” num=“s”>maestro</parola> Ciliegia, falegname, trovò <sintagma tipo=”nominale”><parola cat=“artInd” genere=m” num=“s”>un</parola> pezzo di legno</sintagma>, che piangeva e rideva come un bambino.</titolo>…</capitolo></parte></libro>

markup per la codifica di informazione strutturale +

markup (parziale) per la codifica di informazione linguistica

Page 37: IDUL 2013 Marcature ad alto livello, corpora e XML.

Problema: Markup incrociato

Con la presenza di markup multiplo si pone il problema delle etichette incrociate<pagina pag_n=“1”>…Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli <frase-rel>che d'inverno si mettono nelle stufe</pagina><pagina pag_n=“2> e nei caminetti per accendere il fuoco e per riscaldare le stanze.</frase-rel>

<grassetto>AAA<corsivo>BBB</grassetto>CCC…</corsivo> La sintassi dell’ XML non permette questi incroci!!! (neanche quella dell’ HTML, ma i browser sono a molto accomodanti su questo punto)

Page 38: IDUL 2013 Marcature ad alto livello, corpora e XML.

XML non è un sostituto del HTML: XML e HTML sono stati pensati per scopi diversi.

XML è pensato per descrivere dati e porre l'attenzione su cosa sono (marcatura dichiarativa)

HTML è pensato per visualizzare dati e porre l'attenzione su come presentarli (marcatura mista procedurale/dichiarativa)Tuttavia, è possibile tradurre tutto l’HTML in XML: il risultato si chiama XHTML

HTML + Browser: sistema di visualizzazione di dati; XML + Processore XML + Applicazione = formato

dati generale

Principali differenze fra HTML e XML

Page 39: IDUL 2013 Marcature ad alto livello, corpora e XML.

SGML

XMLXHTMLHTML

Page 40: IDUL 2013 Marcature ad alto livello, corpora e XML.

Le parti di un progetto XML

Un documento in XML è in realtà la combinazione di tre parti. Ci riferiamo ad esse come tre documenti separati; spesso, ma non necessariamente, sono anche file separati in maniera fisica.

1. Un documento dei contenuti cioé la parte che l’autore vuole esporre a chi la visualizza o utilizza;

2. Un documento DTD (Document Type Definition) che specifica i macatori usati e la loro sintassi;

3. Uno stylesheet (foglio di stile) che stabilisce come verrà visualizzato e presentato il contenuto.

La DTD è opzionale e spesso viene caricata direttamente dal web tramite una chiamata all’interno del documento dei contenuti (meccanismo dei “Namespace”)

Il foglio di stile è opzionale, e superfluo se il contenuto non deve essere visualizzato in modo particolare.

Page 41: IDUL 2013 Marcature ad alto livello, corpora e XML.

XML Un documento XML è costituito da

composizioni di stringhe, ovvero sequenze di caratteri UNICODE.

Caratteristica di XML è quella di essere CASE SENSITIVE,

ovvero di fare differenza tra lettere maiuscole e minuscole.

Pertanto il tag "Pino" è diverso dai tag "pino", "pIno", "PINO",

ecc.

Page 42: IDUL 2013 Marcature ad alto livello, corpora e XML.

Il processore XML

Si assume che un documento XML venga analizzato (“parsed”) da un modulo software detto processore XML Tale modulo fa normalmente parte di qualche applicazione che usi dati in formato XML Il processore XML rileva la correttezza del documento, a due livelli:

Ben-formatezza sintattica: conformità alle regole generali della sintassi XML (p.es. niente etichette incorciate) Validità: conformità alle specifiche della DTD

Ovviamente un documento senza DTD non può essere dichiarato valido.

Page 43: IDUL 2013 Marcature ad alto livello, corpora e XML.

Parti di un documento XML

Un documento XML si compone di due parti principali:

il "PROLOG“ contiene:dichiarazione della versione di XML;commenti (facoltativi);dichiarazione del DOCUMENT TYPE.

il "DOCUMENT INSTANCE“ contiene i dati veri e propri.

Page 44: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio di Prologun documento XML dovrebbe iniziare con

<?xml version="1.0" encoding="…" standalone="yes" ?>

se non si specifica il valore dell’attributo encoding la codifica è quella UNICODE

standalone può assumere valori "yes" o "no" (il cui significato sarà chiaro in seguito)

<?xml version="1.0"?><!-- Documento di prova --><!DOCTYPE MEMO SYSTEM "memo.dtd">

nome del documentofile con la descrizione della struttura

Page 45: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio di Document InstanceUn documento XML è un documento di testo ed è formato da tag che una volta aperti devono SEMPRE essere chiusi<memo>

<da> <nome>Ugo</nome> <email>[email protected]</email></da><a> <nome>Pina</nome> <email>[email protected]</email> </a><oggetto>San Valentino</oggetto><testo><paragrafo>Pina.... ti amo moltissimo!

Tuo Ugo.</paragrafo></testo>

</memo>

Page 46: IDUL 2013 Marcature ad alto livello, corpora e XML.

<?xml version="1.0" standalone="no" ?><memo>

<from><name>Rossi</name><email>[email protected]</

email></from><to>

<name>Verdi</name>

<email>[email protected]</email></to><oggetto>Esempio in

XML</oggetto><body>

<paragrafo>bla bla</paragrafo>

<paragrafo>bla bla</paragrafo>

</body></memo>

N.B. L’uso del rientro variabile (“indentation”) non è parte della sintassi XML, ma un modo per aiutare gli esseri umani nella identificazione della struttura. Idem per l’uso dei colori, di grassetto, font, ecc.

Page 47: IDUL 2013 Marcature ad alto livello, corpora e XML.

Un documento XML definisce una struttura ad albero che si ottiene

esaminando le relazioni di annidamento che esistono tra i tagDeve esistere un solo tag che non sia all’interno di nessun altro. Questo tag definisce la radice dell’albero (“root”) (nellì’esempio, “memo”).

XML - struttura ad albero

[email protected]

memo from

to

body

oggetto

name

email

name

email

paragrafo

paragrafo

Rossi

[email protected]

Verdi

esempio in XML

bla blabla bla

Page 48: IDUL 2013 Marcature ad alto livello, corpora e XML.

ROOT (“RADICE”) E COMPONENTI

Ogni documento XML ben formato (“well-formed”) ha un solo elemento radice/rootGli elementi non ROOT sono chiamati COMPONENTI del documento.

Page 49: IDUL 2013 Marcature ad alto livello, corpora e XML.

INGREDIENTI PRINCIPALI DI UN DOCUMENTO XML

Elementi:identificano porzioni di testo o punti nel testo; possono contenere testo puro e/o altre etichette (cf. le cartelle di windows)Entitàabbreviazioni per caratteri o espressioni varie;Commentiignorati dal processore, utili per l’autoreAttributi (e loro valori)definiti come proprietà degli elementi, ciascuno con un insieme di possibili valori;

Page 50: IDUL 2013 Marcature ad alto livello, corpora e XML.

ENTITÀ PREDEFINITE

Servono per far sì che i caratteri normalmente interpretati come MARKUP possano essere utilizzati come caratteri di testo (ad esempio per scrivere un manuale HTML).Sono i seguenti:&amp; = & &lt; = <&gt; = >&apos; = '&quot; = «

In generale le “entità” (sia predefinite che definite dall’utente hanno la forma &nome; )

Page 51: IDUL 2013 Marcature ad alto livello, corpora e XML.

COMMENTI

All’interno di un documento XML posso aggiungere commenti, definiti come: “<!--” + Contenuto del commento + “-->”Esempio: <!-- dichiarazione per <head> & <body> -->I commenti sono “invisibili” al processore XML e servono solo per utenti umani.Eventuali tag all’interno non vengono processatiNon possono essere inserite doppie linette “--” in un commento, se non alla fine, per chiuderlo.

Page 52: IDUL 2013 Marcature ad alto livello, corpora e XML.

I tag XML possono avere uno o più attributi Un attributo è una coppia nome="valori”, che viene associata al tag (prima di chiuderlo con “>”)

<persona altezza="170cm" peso="60kg">Mario Rossi

</persona>

Il valore di un attributo va tra virgolette semplici (‘) o doppie (“)(attenzione alla sostituzione automatica di ‘ con “ !)

XML - ATTRIBUTI

Page 53: IDUL 2013 Marcature ad alto livello, corpora e XML.

XML – da non dimenticare…

Virgolette necessarie nell’inserimento di attributi (“…” o ‘…’ ma mai misti: “…’ o ‘…”)Bilanciamento dei tags (se si apre il tag <img> deve essere anche chiuso da </img>; oppure si utilizzano tag vuoti (<hr></hr>, possibilmente compattati: <hr/>) Tag incassati - uso corretto:<h1> <a href=“percorso”> ecco il link </a> </h1> Tag incassati – uso non corretto (tag incrociati)<h1> <a href=“percorso”> ecco il link </h1> </a>Caratteri speciali devono comparire sempre con la loro sequenza vista in html:

à si scrive con &agrave; (non necessario se Latin-1)

> con &gt; etc…XML è case sensitive: <img> è diverso da <IMG>!!!

Page 54: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio (negozi.xml)<?xml version="1.0" standalone="no" ?><negozi>

<citta nome="Trento"/><negozio apertura="8.30-12.30/15.00-19.00" domenica="no">

<nome> Supermercati Poli </nome><indirizzo tipo="completo">

<via> S.Pio X </via><numero> 2 </numero><zona> …… </zona>

</indirizzo><genere> Alimentare</genere>

</negozio><negozio apertura="8.00-12.00/15.00-19.00" domenica="si">

<nome> Ubiq </nome><indirizzo tipo="ridotto">

<via> Corso 3 Novembre </via><numero> 10 </numero>

</indirizzo><genere> Libreria </genere><descrizione> …… </descrizione>

</negozio></negozi>

Page 55: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio 4: info come testo o come attributo?

<?xml version="1.0" standalone="no" ?><negozi>

<negozio domenica="si"><nome> Ubiq </nome><indirizzo tipo="ridotto">

<via> Corso 3 Novembre </via><numero> 10 </numero>

</indirizzo><apertura domenica=“si”>8.00-12.00/15.00-19.00</apertura><genere> Libreria </genere><descrizione> …… </descrizione>

</negozio></negozi>

Un caso di informazione doppia:

<parola cat=“num” val=“44”>quarantaquattro</parola><parola cat=“N”>gatti</parola>

Page 56: IDUL 2013 Marcature ad alto livello, corpora e XML.

La DTD L'XML non è limitato a un insieme fisso di tipi di elementi, ma permette di definire e utilizzare elementi e attributi personalizzati;

Per far questo viene fornita una sintassi con cui è possibile specificare gli elementi e gli attributi che possono essere utilizzati all'interno dei documenti. In altre parole è possibile creare un modello, chiamato Document Type Definition (DTD), che descrive la struttura e il contenuto di una classe di documenti.

Page 57: IDUL 2013 Marcature ad alto livello, corpora e XML.

DTD: Esempio antologia<antologia> <poesia><titolo>The SICK

ROSE</titolo> <strofa> <verso>O Rose thou art sick.</verso> <verso>The invisible worm,</verso> <verso>That flies in the night</verso> <verso>In the howling storm:</verso> </strofa> <strofa> <verso>Has found out thy bed</verso> <verso>Of crimson joy:</verso> <verso>And his dark secret

love</verso> <verso>Does thy life destroy.</verso> </strofa> </poesia> <!-- continua con altre poesie --></antologia>

Alcune caratteristiche per la definizione di “antologia di poesie”

1. Una antologia contiene un certo numero di poesie e nient'altro.

2. Una poesia contiene a volte un singolo elemento di titolo che precede la prima strofa, e non contiene mai nessun altro elemento.

3. A parte il titolo, una poesia consiste solo di strofe.

4. Una strofa consiste solo di versi ed ogni verso è contenuto in una strofa.

5. Una strofa non può essere seguita da nulla tranne che da un'altra strofa, oppure dalla fine della poesia.

6. Un verso non può essere seguito da nulla se non da un altro verso, oppure dall'inizio di una nuova strofa.

Page 58: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio DTD: Antologia

<!ELEMENT antologia (poesia+)>

<!ELEMENT poesia (titolo?, strofa+)>

<!ELEMENT titolo (#CDATA) >

<!ELEMENT strofa (verso+) >

<!ELEMENT verso (#CDATA) >

Page 59: IDUL 2013 Marcature ad alto livello, corpora e XML.

XML – documenti “well formed”

un documento XML è ben formato se e solo se:

tutti i suoi tag sono chiusi, nell’ordine corretto

esiste un solo elemento radice

i valori degli attributi sono scritti tra virgolette

gli elementi non hanno due attributi con lo stesso nome

i nomi degli elementi e degli attributi non contengono i caratteri < > &

NB: i parser XML sono in grado di trattare solo i documenti XML ben formati

Page 60: IDUL 2013 Marcature ad alto livello, corpora e XML.

La DTD

L'XML ha una propria DTD (attualmente descritto nella specifica REC-xml-19980210) in cui vengono elencate le regole della specifica stessa del linguaggio.

Con l'XML è anche introdotta una classe di documenti che fa riferimento alla sola DTD dell'XML; la creazione di una DTD personale non è quindi indispensabile.

Page 61: IDUL 2013 Marcature ad alto livello, corpora e XML.

DTD type valid

I documenti con le specifiche della DTD XML possono essere trovati agli indirizzi:

http://www.w3c.org/XML/ La seguente URL contiene un controllore di

validitàhttp://www.stg.brown.edu/service/xmlvalid/

Se un documento è conforme alle specifiche di una DTD personale, allora si dice che è TYPE VALID ("valido").

Page 62: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio di una DTD

Per esempio, dato la seguente DTD personale:<!DOCTYPE persona [

<!ELEMENT persona (nome,cognome)>

<!ELEMENT nome (#PCDATA)><!ELEMENT cognome (#PCDATA)>

]>

Page 63: IDUL 2013 Marcature ad alto livello, corpora e XML.

Documento type valid

il seguente documento risulta TYPE VALID:

<persona><nome> Luigi </nome><cognome> Rossi </cognome>

</persona>

Page 64: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio 2

Consideriamo la seguente DTD, che definisce la struttura di un documento che contiene un indirizzo postale:

<!DOCTYPE indirizzo [<!ELEMENT indirizzo (nome, via, citta, stato, CAP)><!ELEMENT nome (#PCDATA)><!ELEMENT via (#PCDATA)><!ELEMENT citta (#PCDATA)><!ELEMENT stato (#PCDATA)><!ELEMENT CAP (#PCDATA)>

]>

Page 65: IDUL 2013 Marcature ad alto livello, corpora e XML.

Osservazioni

Osservazioni: il nome del document type ("indirizzo") è puramente

arbitrario, avremmo potuto scrivere anche “address" o altro...;

il root element deve avere (obbligatoriamente) lo stesso nome del document type (nell' esempio, "indirizzo");

Page 66: IDUL 2013 Marcature ad alto livello, corpora e XML.

OsservazioniUna volta definito la DTD, un documento TYPE VALID

di tipo "indirizzo“ avrà la seguente forma:

<indirizzo> <nome> Giuseppe </nome> <via> Garibaldi </via> <città> Pinerolo (TO) </città> <stato> Italia </stato> <CAP> 12345 </CAP>

</indirizzo>

Page 67: IDUL 2013 Marcature ad alto livello, corpora e XML.

Dove si trova la DTD?

la DTD di un file XML può trovarsi:

DENTRO il file stesso (internal set): questo sistema comporta uno svantaggio in termini di condivisione in quanto la DTD non può essere usata per altri documenti XML simili;

FUORI dal file (external set): qui, invece, la DTD è condivisibile e riutilizzabile.

Page 68: IDUL 2013 Marcature ad alto livello, corpora e XML.

External set In caso di external set la DTD di riferimento viene caricata tramite il sistema operativo (SYSTEM)<!DOCTYPE label SYSTEM "/URL/della/risorsa">.

La URL della risorsa può: essere un percorso sul file system locale. Esempio: <!DOCTYPE label SYSTEM "C:\mydocuments\xml\dtd\label.dtd"> oppure essere un indirizzo esterno: <!DOCTYPE label SYSTEM "http://www.lt-2002.com/indirizzo.dtd">

La seconda soluzione offre maggiore accessibilità.

Page 69: IDUL 2013 Marcature ad alto livello, corpora e XML.

Tipi di content specificationAbbiamo già visto un esempio di "content specification" quando abbiamo elencato gli elementi di "indirizzo": "nome", "via", "citta", "stato", "CAP“:

<!ELEMENT nome (#PCDATA)>

#PCDATA (“Parsed characted data”) indica un contenuto “misto” (testo e/o marcatori). Il processore XML analizzarà i marcatori, ma la DTD non ne specifica la struttura.

Una specifica #CDATA, al contrario, indica al processore XML che non deve analizzare il contenuto, ma è tuttavia formato da caratteri

Una specifica #NDATA indica invece che il contenuto di un tag potrebbe essere anche un file binario arbitrario (p.es. una immagine)

Page 70: IDUL 2013 Marcature ad alto livello, corpora e XML.

Elementi alternativi

E` possibile specificare che un certo elemento può essere composto da uno di due elementi in alternativa:

<!ELEMENT FIGURA (DIDASCALIA, (IMMAGINE|CODICE))>

Questo esempio definisce l' elemento "figura" (per esempio di un libro) dicendo che una figura ha SEMPRE una didascalia più un'immagine o un pezzo di codice a scelta.

Page 71: IDUL 2013 Marcature ad alto livello, corpora e XML.

Il numero degli elementiPer indicare opzionalità o ripetizioni si usano modificatori usati anche nelle espressioni regolari: ?,+,* ? = l' elemento che precede sarà presente da 0 a 1 volta * = l' elemento che precede sarà presente 0 o più volte + = l' elemento che precede sarà presente 1 o più volteEsempio:

<!ELEMENT CAPITOLO (titolo, sottotitolo?, paragrafo+)> <!ELEMENT PARAGRAFO (#PCDATA | note)*> <!ELEMENT note (#PCDATA)>

Page 72: IDUL 2013 Marcature ad alto livello, corpora e XML.

DTD: Esempio antologia<antologia> <poesia><titolo>The SICK

ROSE</titolo> <strofa> <verso>O Rose thou art sick.</verso> <verso>The invisible worm,</verso> <verso>That flies in the night</verso> <verso>In the howling storm:</verso> </strofa> <strofa> <verso>Has found out thy bed</verso> <verso>Of crimson joy:</verso> <verso>And his dark secret

love</verso> <verso>Does thy life destroy.</verso> </strofa> </poesia> <!-- continua con altre poesie --></antologia>

Alcune caratteristiche per la definizione di “antologia di poesie”

1. Una antologia contiene un certo numero di poesie e nient'altro.

2. Una poesia contiene a volte un singolo elemento di titolo che precede la prima strofa, e non contiene mai nessun altro elemento.

3. A parte il titolo, una poesia consiste solo di strofe.

4. Una strofa consiste solo di versi ed ogni verso è contenuto in una strofa.

5. Una strofa non può essere seguita da nulla tranne che da un'altra strofa, oppure dalla fine della poesia.

6. Un verso non può essere seguito da nulla se non da un altro verso, oppure dall'inizio di una nuova strofa.

Page 73: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esempio Antologia

<!ELEMENT antologia (poesia+)>

<!ELEMENT poesia (titolo?, strofa+)>

<!ELEMENT titolo (#CDATA) >

<!ELEMENT strofa (verso+) >

<!ELEMENT verso (#CDATA) >

Page 74: IDUL 2013 Marcature ad alto livello, corpora e XML.

Con questi elementi possiamo dichiarare una poesia come composta da una o più strofe, versi liberi o quartine, definite ad esempio come:

<!ELEMENT quartina (verso-1, verso-2, verso-3, verso-4)><!ELEMENT poesia (titolo?, (strofa+ | quartina+ | verso+))>

Notare la differenza tra:<!ELEMENT poesia (titolo?, (strofa+ | distico+ | verso+) ) ><!ELEMENT poesia (titolo?, (strofa | distico | verso)+ ) >

Altro esempio: ritornello<!ELEMENT ritornello (verso+)><!ELEMENT poesia (titolo?, ( verso+ | (ritornello?, (strofa, ritornello?)+ ))) >

Page 75: IDUL 2013 Marcature ad alto livello, corpora e XML.

Attributi

Come definire attributi in una DTD:

<!ELEMENT poesia (titolo?, strofa+)><!ATTLIST poesia

iden ID #IMPLIEDstatus (bozza | rivisto | pubblicato) "bozza" >

L’attributo ident di “poesia” è di tipo ID e può mancare (essere implicito)L’attributo status di “poesia” ha 3 valori possibili: “bozza”, “rivisto” e “pubblicato”; se non è presente in valore da assumere è “bozza”

Page 76: IDUL 2013 Marcature ad alto livello, corpora e XML.

Attributi: valori possibiliCDATA: (character data) Il valore dell’attributo può contenere

qualsiasi carattere valido, inclusi spazi e punteggiatura;PCDATA: (Parsed character data) Il valore dell’attributo può

contenere qualsiasi carattere valido, inclusi spazi e punteggiatura; eventuali etichette comprese nel valore, possono essere riconosciute come tali dal parser XML;

NMTOKEN: (named token) Il valore dell’attributo può contenere solo i caratteri che sono validi all’interno di un nome o di un identificatore generico;

NMTOKENS: (named tokens) Il valore dell’attributo può contenere uno o più valori NMTOKEN separati da uno o più spazi bianchi;

ID: (identifier ) Il valore dell’attributo deve essere una singola parola iniziante con un carattere alfabetico, che possa essere usata come identificatore univoco (un dato valore può essere usato una volta sola come valore di qualsiasi attributo ID);

IDREF: (identifier reference) Il valore dell’attributo deve contenere una singola parola che è stata usata altrove come identificatore univoco di qualche elemento;

Page 77: IDUL 2013 Marcature ad alto livello, corpora e XML.

Obbligatorietà dei valori1.#REQUIRED: un valore deve essere specificato.2.#IMPLIED: non deve essere specificato nessun particolare valore.3."valore di default“

Esempi:

<!ATTLIST poesiaiden ID

#IMPLIEDstatus (bozza | rivisto | pubblicato)

#REQUIREDlingua CDATA

“italiano”>

Page 78: IDUL 2013 Marcature ad alto livello, corpora e XML.

Identificatori e riferimento

<!ATTLIST poesia iden ID #IMPLIED >

Attributo utile solo per elementi a cui pensiamo di dover poi far riferimento

Esempio:<poesia iden=’ROSE’><!-- Text of poem with identifier ’ROSE’ --></poesia><poesia iden=’P40’><!-- Text of poem with identifier ’P40’ --></poesia><poesia><!-- This poem has no identifier --></poesia>

Page 79: IDUL 2013 Marcature ad alto livello, corpora e XML.

Per far riferimento serve un elemento composto solo da un attributo di tipo IDREF:

<!ELEMENT poesiaRef EMPTY >

<!ATTLIST poesiaRef

target IDREF #REQUIRED >

«La poesia di Blake sulla rosa malata (<poesiaRef target=’ROSE’/>) esprime …»

Page 80: IDUL 2013 Marcature ad alto livello, corpora e XML.

Entità predefinite

Le entità predefinite possono spesso rappresentare singoli caratteri, tramite il loro numero di codice (esprimibile con la forma: “&#num;” dove num è un numero di ASCII/Latin-1/UNICODE…)

<!ENTITY lt "&#38;"> <!-- less than, < --><!ENTITY gt "&#62;"> <!-- greater than, > --><!ENTITY amp "&#38;"> <!-- ampersand, & --><!ENTITY apos "&#39;"> <!-- apostrophe, ’ --><!ENTITY quot "&#34;"> <!-- quote, " -->

Page 81: IDUL 2013 Marcature ad alto livello, corpora e XML.

Tre tipi di entità non predefinite

Entità interne

<!ENTITY tei "Text Encoding Initiative">&tei; => Text Encoding Initiative

Entità esterne<!ENTITY ChapTwo SYSTEM "p4chap2.xml"><!ENTITY ChapTwo SYSTEM"http://www.tei-c.org/P4X/p4chap2.xml">

Entità pubbliche<!ENTITY p3.sgPUBLIC "-//TEI//TEXT Guidelines Chapter on XML//EN""p4chap2.xml">

Page 82: IDUL 2013 Marcature ad alto livello, corpora e XML.

Se una entità viene dichiarata più di una volta, solo il primo valore dichiarato è valido

<!ENTITY personaggio ‘‘pluto’’><!ENTITY personaggio ‘‘paperino’’>&personaggio; ==> pluto

NB: Ciò si discosta del normale comportamento delle variabili nei linguaggi di programmazione; normalmente l’ultima assegnazione è quella che vale)

Page 83: IDUL 2013 Marcature ad alto livello, corpora e XML.

Parametri

Un parametro è un insieme di attributi a cui viene dato un nome, in modo da poterlo usare con più elementi.Per fare riferimento ad un parametro si usa la forma:

%nomeparametro;

Page 84: IDUL 2013 Marcature ad alto livello, corpora e XML.

Parametri: esempio

<!ENTITY % a.global

’iden ID #REQUIRED

Rend CDATA #IMPLIED’>

<!ATTLIST myElement

%a.global;

another CDATA #IMPLIED >

Con questo sistema i due attributi iden e rend vengono assegnati insieme a myElement.

Nome parametro

elenco attributi

Page 85: IDUL 2013 Marcature ad alto livello, corpora e XML.

Un esempio di documento completoUn documento marcato in XML

consiste di:

Una dichiarazione XML che indica proprietà generali del documento.

Una Document Type Declaration (o DOCTYPE), che assegna l' elemento root e la DTD (necessaria solo se si vuole che il documento XML possa essere dichiarato formalmente valido da un parser)

L' elemento root, che contiene il testo e le successive marcature.

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE antologia [<!ELEMENT antologia (poesia+)><!ELEMENT poesia (titolo?, strofa+)><!ELEMENT titolo (#PCDATA) ><!ELEMENT strofa (verso+) ><!ELEMENT verso (#PCDATA) >]><antologia><poesia><titolo>The SICK ROSE</titolo><strofa><verso>O Rose thou art sick.</verso><verso>The invisible worm,</verso><verso>That flies in the night</verso><verso>In the howling storm:</verso></strofa><strofa><verso>Has found out thy bed</verso><verso>Of crimson joy:</verso><verso>And his dark secret love</verso><verso>Does thy life destroy.</verso></strofa></poesia></antologia>

Page 86: IDUL 2013 Marcature ad alto livello, corpora e XML.

NamespaceIl meccanismo dei “namespace” (spazi dei nomi) consente ad un documento in XML di caricare ed usare più di una DTD, ciascuna con il suo set di marcatori.I marcatori diventano disponibili all’interno del marcatore in cui la DTD è stata caricata con la la istruzione xmlnsUn opportuno sistema di prefissi distingue i marcatori di DTD diverse (risolvendo eventuali omonimie)Esempio:

<verso xmlns:gram="http://www.gram.org/morfo.dtd">...<!-- in questa porzione di testo valgono tutte le etichette definite in morfo.dtd --></verso><!-- qui fuori le etichette definite in morfo.dtd non valgono -->

Page 87: IDUL 2013 Marcature ad alto livello, corpora e XML.

Namespace con prefissi<verso xmlns:gram=“http://www.gram.org/morfo.dtd”

xmlns:form=“http://www.shake.org/sonnet.dtd”> <form:sonnet>

<gram:aux>Shall</gram:aux><gram:pron>I</gram:pron><gram:verb>compare</gram:verb><gram:pron>thee</gram:pron><gram:prep>to</gram:prep><gram:art>a</gram:art><gram:noun>summer</gram:noun>’s<gram:noun>day</gram:noun>?

… </form:sonnet></verso>

Page 88: IDUL 2013 Marcature ad alto livello, corpora e XML.

I marcatori che vengono caricati da un particolare namespace hanno significato solo all’interno di quel namespace.

<text xmlns="http://www.tei-c.org"><front>

<!– il prefisso gram non è disponibile qui --></front><body xmlns:gram="http://www.gram.org">

<!-- il prefisso gram qui è disponibile --></body></text>

Il significato dei prefissi dipende del namespace più interno in cui sono definiti (se ci sono più namespace con prefissi con lo stesso nome, il particolare prevale sul generale).

La URL data nella definizione del namespace non viene controllata in fase di validazione

Page 89: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esercizi di creazione DTD

Mickey Mouse, via degli Aranci 12, TopoliniaSig. Mickey Mouse, via degli Aranci n. 12., Topolinia (TO)Fam. Mouse, via degli Aranci 12, 38160, Topolinia, Italia

Provate a creare una DTD che copra le seguenti forme di indirizzo:

Si ricordi:A? = A è opzionaleA+ = A appare almeno 1 voltaA* = A appare 0 o più volte(A | B) = o A o B(A, B) = A seguito da B

Page 90: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esercizi di creazione DTDProvate a creare una DTD che copra (almeno) testi teatrali della seguente forma:

T1: Titolo Autore1 Atto Descrizione di scena Personaggio : battuta Personaggio: battuta Atto Personaggio: battuta Epilogo

T2: Titolo Autore1, autore2 Personaggio: battuta Descrizione di scena Personaggio: battuta Personaggio: battuta Descrizione di scena Epilogo

T3: Titolo Autore1 Atto Personaggio: battuta Personaggio: battuta Atto Personaggio: battuta Personaggio: Battuta Epilogo Indice

T4: Titolo Autore1 Personaggio: battuta Descrizione di scena Personaggio: battuta Personaggio: battuta Epilogo Postfazione

T5:

Titolo Autore1 Monologo Postfazione

Si ricordi:A? = A è opzionaleA+ = A appare almeno 1 voltaA* = A appare 0 o più volte(A | B) = o A o B(A, B) = A seguito da B

Page 91: IDUL 2013 Marcature ad alto livello, corpora e XML.

Esercizi di creazione DTD

Disponibile su http://www.pellegrinoartusi.it/la_cucina_artusiana.htmO sulla biblioteca di Liber liber, in HTML:http://www.liberliber.it/biblioteca/index.htm

Provate a creare una DTD che copra la (intricata) struttura di uno dei primissimi libri di cucina italiani: La Scienza in Cucina e l’Arte di Mangiar Bene, di Pellegrino Artusi.