1 Documenti XML validi La Document Type Definition Dichiarazione di elementi
2 LA DTD La DTD è una descrizione formale della struttura di una classe di documenti. Sono specificati: Elementi Attributi Entità Notation
3 Secondo livello di correttezza VALIDO Un documento che rispetta i vincoli della propria DTD si definisce VALIDO
4 Inserire una DTD in un file XML Interna <!DOCTYPE bibliografia [ Dichiarazioni]>Esterna
5 Priorità Le dichiarazioni di una DTD interna vengono elaborate prima delle dichiarazioni di una DTD esterna
6 Esempio I Voi ch'ascoltate in rime sparse il suono di quei sospiri ond'io nudriva 'l core in sul mio primo giovenile errore quand'era in parte altr'uom da quel ch'i' sono, del vario stile in ch'io piango et ragiono fra le vane speranze e 'l van dolore ove sia chi per prova intenda amore spero trovar pietà, nonché perdono.
7 La sua DTD
8 DTD - Sintassi Dichiarazione KEYWORD: ELEMENT ATTLIST ENTITY NOTATION DOCTYPE
9 Dichiarazione di elementi
10 GI Può contenere: Caratteri alfabetici maiuscoli o minuscoli Numeri Trattini Underscore Punti
11 GI 2 Non può contenere: Spazi Altra punteggiatura (?^%&,;!\/) Virgolette Caratteri accentati Parentesi Operatori matematici
12 GI 3 = NMTOKEN Deve cominciare con una lettera o un underscore ATTENZIONE! UN GI DEVE ESSERE UNICO IN UNA DTD XML È CASE SENSITIVE!!!
13 Content Model Può essere espresso con: Altri elementi <!ELEMENT antologia (poesia+) Keyword: #PCDATA: Parsed Character Data EMPTY: elementi vuoti (SENZA parentesi)
14 Indicatori di occorrenza una occorrenza * zero o più occorrenze ? zero o una occorrenza + una o più occorrenze
15 Esempi = antologia deve contenere almeno una poesia = poesia può contenere un titolo (ma non due) e deve contenere almeno una stanza = stanza può contenere dei versi
16 Connettori | almeno uno degli elementi della lista deve comparire, entrambi gli elementi devono comparire nellordine specificato
17 Esempi (titolo?, stanza+) = un titolo opzionale seguito da una o più stanze (titolo? | stanza+) 1. sequenza vuota 2. una sequenza composta o da un titolo o da un certo numero di stanze, ma non da un titolo seguito da stanze (titolo? | stanza+)* 1. sequenza vuota 2. una sequenza composta da un titolo (ma mai più di uno alla volta!) e un numero imprecisato di stanze, in qualsiasi ordine (titolo stanza stanza… titolo stanza titolo stanza stanza stanza titolo…) 3. un numero imprecisato di stanze senza titolo Esercizio 3
18 Model Groups Strutturazione complessa del contenuto di un elemento composto da sequenze di elementi o di testo
19 Esempio pratico antologia può contenere tre tipi di poesie: 1. Versi sciolti 2. Stanze 3. Distici Ora:
20 Elementi da aggiungere
21 Tre tipi di poesia È diverso da
22 Mixed Content Model REGOLE REGOLE: 1. #PCDATA deve occupare il primo posto 2. | è lunico connettore accettato 3. * indicatore di occorrenza obbligatorio da applicare al gruppo
23 ESEMPIO COMPLESSO Esercizio 4 Esercizio 5 (a casa)
24 Documenti XML validi Dichiarazione di attributi
25 Dichiarazione di attributi <!ATTLIST poesia id ID #IMPLIED status (bozza | revisionato | pubblicato) "bozza" >
26 Attributi - sintassi <!ATTLIST nomeElemento nomeAttributo valoriAttributo valoreDefault nomeAttributo2 valoriAttributo2 valoreDefault2 … >
27 Nomi Attributo <!ATTLIST poesia id ID #IMPLIED status (bozza | revisionato | pubblicato) "bozza" > Stesse regole previste per i GI NomeAttributo = NMTOKEN Il nome di un attributo deve essere UNICO allinterno di una lista
28 Valore attributo <!ATTLIST poesia id ID #IMPLIED status (bozza | revisionato | pubblicato) "bozza" > 1. Lista di valori fra parentesi, separati da | Es: (bozza | revisionato | pubblicato) 2. Keyword Es: ID
29 Keyword contenuto attributi CDATA NMTOKEN NMTOKENS ID IDREF IDREFS ENTITY ENTITIES
30 Valore di default <!ATTLIST poesia id ID #IMPLIED status (bozza | revisionato | pubblicato) "bozza" > Un valore espresso fra virgolette Es: bozza #Keyword Es: #IMPLIED
31 Keyword valore di default attributi #REQUIRED: un valore deve essere specificato necessariamente; #IMPLIED: un valore non deve essere necessariamente specificato; #FIXED "valore": (richiede un valore oltre alla parola chiave) se lattributo compare con un valore diverso da quello indicato verrà considerato erroneo. Esercizio 6
32 Attributi ID e IDREF(S): cross references Esempio Nella DTD: <!ATTLIST poesia idID#IMPLIED > <!ATTLIST riferimento target IDREF#REQUIRED>
33 Nel testo: … Il primo sonetto del Canzoniere... Esercizio 7 (a casa)