28
Document Type Definition Tecnologie di Internet Dott. Nicola Dragoni Document Type Document Type Definition Definition Document Type Definition (DTD) Documento XML valido Sintassi del DTD Elementi, attributi e entità

Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition Document Type Definition (DTD) Documento XML valido

Embed Size (px)

Citation preview

Page 1: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Document Type DefinitionDocument Type Definition Document Type Definition (DTD) Documento XML valido Sintassi del DTD Elementi, attributi e entità

Page 2: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

2

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Il Document Type DefinitionIl Document Type Definition

Una caratteristica fondamentale dell’XML è l’estensibilità. L’autore di un documento XML può creare nuovi tag per descrivere i contenuti semantici dei propri dati.

Ciò ha portato alla necessità di definire delle regole grammaticali, o vincoli, alle quali gli elementi devono attenersi.

Queste regole grammaticali sono definite nelle specifiche XML e sono codificate nel Document Type Definition.

Page 3: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

3

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Le regole grammaticali o vincoli specificano:• qual’è l’insieme degli elementi e degli attributi che si

possono usare nel documento XML• quali sono le relazioni gerarchiche fra gli elementi• qual’è l’ordine in cui gli elementi appariranno nel

documento XML• quali elementi ed attributi sono opzionali

Quando un documento XML è ben formato e rispetta le regole del DTD a cui si riferisce si dice che è un documento XML valido.

Quando un documento XML è ben formato e rispetta le regole del DTD a cui si riferisce si dice che è un documento XML valido.

Documento XML validoDocumento XML valido

Page 4: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

4

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Tipologie DTDTipologie DTD

Le DTD possono essere di due tipologie:

PUBBLICHEPUBBLICHE: sono depositate e note a tutti. E’ possibile trovarle in archivi

(repository) di DTD su Internet. HTML per esempio è definito come DTD pubbliche depositate presso il W3C.

DI SISTEMADI SISTEMA: sono disponibili e fruibili tramite l’azienda o la realtà che le ha prodotte. Non sono note al mondo intero e per sfruttarle occorre rivolgersi a chi le ha prodotte, anche solo per scaricarle.

Page 5: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

5

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

DTD interne ed esterneDTD interne ed esterneQuando lavoriamo con documenti XML, se vogliamo associare loro delle DTD possiamo inserirle come parte integrante del loro contenuto (DTD interna), oppure possiamo fare riferimento a una definizione esterna, di sistema o pubblica (DTD esterna). Le DTD vanno comunque dichiarate nel prologo del documento XML.

Sintassi DTD esterna:<!DOCTYPE nome SYSTEM “URL_al_file_DTD”><!DOCTYPE nome PUBLIC “nome_pubblico_della_DTD”>a seconda che si voglia indicare una DTD di sistema o pubblica.

Sintassi DTD interna:<!DOCTYPE nome [contenuto della DTD]>

Page 6: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

6

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Alcune osservazioniAlcune osservazioniCome si intuisce dagli esempi precedenti,• il simbolo di apertura di un’istruzione DTD è <!• il simbolo di chiusura di un’istruzione DTD è >

Tali istruzioni rappresentano dei marcatori particolari:

il cui contenuto deve corrispondere a comandi previsti dalla definizione di DTD.

Nei prossimi lucidi ci occuperemo di queste istruzioni analizzando quelle di uso più comune. Prima però vediamo un esempio...

<! comando >

Page 7: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

7

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Creazione di una DTD sempliceCreazione di una DTD sempliceConsideriamo il file Email.xml.

Si noti che il codice contiene informazioni aggiuntive nel prologo del documento: si tratta di una DTD interna che identifica gli elementi che possono essere presenti nel documento e il tipo di dati che deve contenere.

Se questo documento viene eseguito visualizzando la pagina XML (ad esempio con IE5), il documento avrà questo aspetto:

Page 8: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

8

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Esempio validazione Esempio validazione (1)(1)Modifichiamo la struttura del file Email.xml in questo modo EmailERR.xml e proviamo a validare i due documenti.

Risultato validazione del documento Email.xml:

Page 9: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

9

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Esempio validazione Esempio validazione (2)(2)Risultato validazione del documento EmailERR.xml:

Page 10: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

10

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione di elementi Definizione di elementi (1)(1)

Per definire all’interno di una DTD la presenza di un elemento (tag) occorre utilizzare la parola chiave ELEMENT, la quale accetta la seguente sintassi

<!ELEMENT nome regola_dtd ><!ELEMENT nome regola_dtd >

dove: nome è il nome che il tag avrà nel documento XML (ovviamente

deve rispettare le regole che rendono i documenti XML ben formati)

regola_dtd indica il tipo di contenuto che questo tag avrà ed eventualmente la sua relazione con altri contenuti descritti nella DTD.

Page 11: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

11

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione di elementi Definizione di elementi (2)(2)I possibili valori che può assumere regola_dtd sono:

ANY: indica che il contenuto del tag può essere qualunque cosa, cioè tag e/o testo.

PCDATA (Parsed Character Data): dichiara che il tag può contenere solo e unicamente contenuto di tipo testo, sintatticamente corretto dal momento che i parser dovranno leggerlo e interpretarlo.

EMPTY: comunica al parser che il tag sarà costituito solo di attributi e non conterrà al suo interno nè testo nè altri tag.

GRUPPI DI ELEMENTI

Page 12: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

12

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione di elementi Definizione di elementi (3)(3)

Vediamo qualche esempio:

Tag chiamato Titolo che contiene al suo interno solo testo:<!ELEMENT Titolo (#PCDATA) >

Tag chiamato Libro che può contenere sia testo che tag:<!ELEMENT Libro ANY >

Tag chiamato Libro che non ha contenuto e rappresenta le sue informazioni solo tramite attributi:

<!ELEMENT Libro EMPTY >

Page 13: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

13

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione gruppi Definizione gruppi (1)(1)Per gruppi di elementi si intende la possibilità per un determinato tag di contenere non solo testo, non solo qualsiasi combinazione di testo e tag, ma bensì una precisa sequenza di tag e/o gruppi di tag che rappresentano diverse alternative.

Per gruppi di elementi si intende la possibilità per un determinato tag di contenere non solo testo, non solo qualsiasi combinazione di testo e tag, ma bensì una precisa sequenza di tag e/o gruppi di tag che rappresentano diverse alternative.

<?xml version=“1.0”?><Libro>

<Titolo>XML tascabile</Titolo><Editore>Mondadori Informatica Libri</Editore><Struttura>

<Pagine>288</Pagine><Capitoli>12</Capitoli><Appendici>2</Appendici>

</Struttura></Libro>

<?xml version=“1.0”?><Libro>

<Titolo>XML tascabile</Titolo><Editore>Mondadori Informatica Libri</Editore><Struttura>

<Pagine>288</Pagine><Capitoli>12</Capitoli><Appendici>2</Appendici>

</Struttura></Libro>

Esempio:consideriamo il seguente documento XML.

Vogliamo descrivere il tag Struttura utilizzando una DTD.

Page 14: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

14

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

<Struttura><Pagine>288</Pagine><Capitoli>12</Capitoli><Appendici>2</Appendici>

</Struttura>

<Struttura><Pagine>288</Pagine><Capitoli>12</Capitoli><Appendici>2</Appendici>

</Struttura>

Definizione gruppi Definizione gruppi (2)(2)

Volendo descrivere il tag Struttura possiamo utilizzare la seguente sintassi DTD:

<!ELEMENT Struttura (Pagine, Capitoli, Appendici) ><!ELEMENT Struttura (Pagine, Capitoli, Appendici) >

tramite la quale indichiamo che il tag Struttura deve contenere un tag di nome Pagine, uno di nome Capitoli e uno di nome Appendici.

Page 15: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

15

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione gruppi Definizione gruppi (3)(3)<Struttura>

<Pagine>288</Pagine><Capitoli>12</Capitoli><Appendici>2</Appendici>

</Struttura>

<Struttura><Pagine>288</Pagine><Capitoli>12</Capitoli><Appendici>2</Appendici>

</Struttura>

In una definizione di DTD completa, dovremo quindi indicare sia la definizione del tag contenitore che dei tag contenuti.

Il blocco di definizione del tag Struttura e dei tag al suo interno contenuti sarà:

<!ELEMENT Struttura (Pagine, Capitoli, Appendici) ><!ELEMENT Pagine (#PCDATA) ><!ELEMENT Capitoli (#PCDATA) ><!ELEMENT Appendici (#PCDATA) >

In questo modo, non solo formiamo i dettagli sulla natura di Struttura, ma anche sui tag in essa contenuti.

Page 16: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

16

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione gruppi Definizione gruppi (4)(4)

Per indicare delle condizioni in alternativa tra loro si utilizza il carattere pipe |.

Esempio: <!ELEMENT Struttura (Pagine | Capitoli) >indica che il tag Struttura dovrà contenere o un tag Pagine o un tag Capitoli, non entrambi e tanto meno nessuno dei due.

E’ anche possibile utilizzare più parentesi tonde annidate le une nelle altre per raggruppare le informazioni all’interno di una DTD.Esempio: <!ELEMENT Struttura (Pagine | (Capitoli, Appendici)) >

dichiara che nel tag Struttura possiamo trovare o un tag Pagine o una coppia di tag Capitoli e Appendici, rappresentati esattamente nell’ordine indicato.

Page 17: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

17

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

MolteplicitàMolteplicitàQualora sia necessario indicare la presenza di più occorrenze di uno stesso tag all’interno di una struttura dobbiamo ricorrere a una simbologia apposita, per mezzo della quale indichiamo quante istanze di un determinato tag possiamo consentire all’interno di un documento XML.

Tale sintassi è:

<!ELEMENT nome (elemento_secondario[Molteplicità]) ><!ELEMENT nome (elemento_secondario[Molteplicità]) >

dove al posto di [Molteplicità] possiamo trovare uno dei seguenti simboli:

SIMBOLO SIGNIFICATO

? 0 o 1 volte

+ Da 1 a volte

* Da 0 a volte

Page 18: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

18

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Molteplicità: esempiMolteplicità: esempi <!ELEMENT Libro (Autore+) >significa che il tag Libro potrà contenere un numero di tag Autore in quantità variabile tra 1 e .

<!ELEMENT Libro (Autore?) >significa che il tag Libro potrà avere un solo Autore, oppure potrà essere privo di Autore.

<!ELEMENT Libro (Autore*) >significa che il tag Libro potrà avere un numero di tag Autore in quantità variabile tra 0 e .

Page 19: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

19

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione di attributi Definizione di attributi (1)(1)

Per definire gli attributi di un documento XML si usa il comando ATTLIST, secondo la seguente sintassi:

<!ATTLIST elemento nome_attributo tipo valore_default ><!ATTLIST elemento nome_attributo tipo valore_default >

dove:

elemento è il nome del tag del quale stiamo definendo l’attributo nome_attributo è ovviamente il nome dell’attributo tipo è la definizione del tipo di valore associato all’attributo valore_default è un eventuale valore di default (predefinito)

Page 20: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

20

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione di attributi: esempioDefinizione di attributi: esempio

<!ATTLIST Libro ISBN CDATA “N.D.” >

Indica che

• stiamo definendo un attributo di nome ISBN

• tale attributo deve essere associato a un tag di nome Libro

• tale attributo può contenere qualsiasi carattere, tranne < > & ‘ “ (CDATA)

• il valore di default dell’attributo è “N.D.”

Page 21: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

21

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Definizione di attributi Definizione di attributi (2)(2)

Se vogliamo fornire un set di valori per un attributo possiamo utilizzare la seguente sintassi:

<!ATTLIST Giornale Tipo (quotidiano | settimanale | mensile) “mensile” ><!ATTLIST Giornale Tipo (quotidiano | settimanale | mensile) “mensile” >

dove il simbolo di pipe | indica proprio l’alternativa tra i possibili valori.Notare l’ultima informazione “mensile”: serve per indicare che nel caso in cui l’attributo Tipo non venga fornito il suo valore predefinito deve essere mensile.

Page 22: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

22

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Valori di default di attributiValori di default di attributi

Quando si definiscono gli attributi per gli elementi è anche possibile dichiarare dei vincoli relativi alla presenza o meno degli stessi tag.Si utilizzano le seguenti parole chiave:

VINCOLO SIGNIFICATO

#IMPLIED Il valore dell’attributo non è obbligatorio.

#REQUIRED Il valore dell’attributo è obbligatorio.

#FIXEDIl valore dell’attributo è una costante che non può essere modificato.

Page 23: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

23

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

EsempiEsempi Definiamo un tag Libro descritto da un tag Titolo, da uno o più tag Autore e da un attributo ISBN obbligatorio.

<!ELEMENT Libro (Titolo, Autore+) ><!ATTLIST Libro ISBN #REQUIRED ><!ELEMENT Titolo (#PCDATA) ><!ELEMENT Autore (#PCDATA) >

<!ELEMENT Libro (Titolo, Autore+) ><!ATTLIST Libro ISBN #REQUIRED ><!ELEMENT Titolo (#PCDATA) ><!ELEMENT Autore (#PCDATA) >

La seguente istruzione <!ATTLIST indirizzo cap #FIXED “02115”<!ATTLIST indirizzo cap #FIXED “02115”

indica che il valore 02115 è l’unico che può essere assegnato all’attributo cap. Il documento XML non è valido se l’attributo cap contiene un valore diverso da 02115 . Se l’elemento indirizzo non contiene l’attributo cap, il valore di default 02115 sarà passato all’applicazione che elabora il documento XML.

Page 24: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

24

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Tipi di dato per attributiTipi di dato per attributi

Quando definiamo degli attributi XML possiamo associare loro dei tipi di dato, tra quelli definiti dal W3C.

Tipi di Dato Descrizione

CDATA Dati di tipo carattere.

ENTITY Entità esterna dichiarata nella DTD.

ID Identificatore univoco di un elemento.

IDREF ID univoci che puntano a elementi con un attributo ID.

NMTOKEN Il valore dell’attributo è formato da lettere, cifre, punti, caratteri di sottolineatura, trattini e due punti.

NOTATION Notazione dichiarata nella DTD.

Sequenze di valori Corrisponde a una enumerazione.

Page 25: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

25

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Entità interneEntità interneTramite le DTD possiamo definire delle entità. Per entità si intendono dei nostri entity-name che corrispondano a caratteri, parole o frasi da noi impostati.

La sintassi da utilizzare per definire delle entità è la seguente:

<!ENTITY nome “Valore”><!ENTITY nome “Valore”>

In questo modo si dichiarano entità interne, in quanto il loro valore è fornito esplicitamente all’interno della DTD.

Esempio: <!ENTITY CopyRight “(C) Copyright XML Tascabile - 2002”><!ENTITY CopyRight “(C) Copyright XML Tascabile - 2002”>

Per un esempio completo vedi il documento DTDEntità.xml.

Page 26: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

26

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Entità esterneEntità esterneSe vogliamo ottenere il valore di una entity da un documento esterno possiamo utilizzare una delle tre seguenti forme:

1) <!ENTITY nome SYSTEM “URL”>Entità esterna caricata direttamente dalla URL.

2) <!ENTITY nome PUBLIC “nome pubblico” “URL”>Entità esterna caricata direttamente dalla URL solo nel caso in cui non sia già nota al parser tramite il suo nome pubblico.

3) <!ENTITY nome SYSTEM “URL” NDATA tipo_notazione>Entità esterna da non interpretare con il perser (NDATA) e il cui tipo di formato è indicato tramite il parametro tipo_notazione.

E’ anche possibile utilizzare le entità all’interno della definizione di altre entità, cioè annidare le entità le une all’interno delle altre.

Page 27: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

27

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Esempio completo di DTD:Esempio completo di DTD:vedi il documento vedi il documento Libro.xml

Page 28: Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido

28

Document Type DefinitionTecnologie di Internet

Dott. Nicola Dragoni

Document Type DefinitionDocument Type DefinitionSommarioSommario

In questa lezione abbiamo appreso:• cos’è una Document Type Definition• validazione di documenti XML• sintassi di una DTD• elementi, attributi, entità di una DTD

Passi successivi:la prossima lezione sarà dedicata alla formattazione di contenuti.