DTD & XML Schema Laurea Magistrale
in Informatica
Reti 2 (2005/06)dott. Francesco De Angelis
francesco.deangelis@unicam.it
DTD & XML Schema Laurea Magistrale
in Informatica
Reti 2 (2005/06)
dott. Francesco De Angelis
francesco.deangelis@unicam.it
Agenda
Document Type Definition
XML Schema
Namespace
Document Type Definition
XML ben formati ed XML validi
I due diversi livelli di “controllo” del documento generano due livelli di “correttezza”:
XML ben formato:
XML valido
Es: Titolo è ben formato ma non è tipicamente valido
La buona formazione può essere valutata conoscendo solo XML
La validazione dipende dalla specifica applicazione XML e cioè dallo specifico linguaggio
La forma di un documento XML
Ogni documento XML inizia con un prologo che contiene:
una XML declaration
eventualmente una Doctype Declaration (la dichiarazione della DTD a cui il documento si riferisce)
eventualmente una serie di processing instruction
Le processing instruction sono utilizzate raramente, servono più che altro per l’aggiunta di fogli di stile
Dichiarazione XML
Un documento XML può includere una dichiarazione XML. Questa specifica le caratteristiche opzionali del documento in questione. Poiché esse sono ridotte al minimo, la dichiarazione XML è brevissima
La sintassi usata per la dichiarazione XML è quella delle processing instructions
La non obbligatorietà della dichiarazione XML è dovuta a motivi di convenienza, per poter usare la grande quantità di documenti HTML e SGML che sono ben formati senza richiedere modifiche anche stupide. In assenza di dichiarazione XML, si assume la forma:
Dichiarazione XML Esistono esattamente tre valori che possono essere messi in una dichiarazione XML:
Il parametro “version” identifica quale versione di XML si sta usando. Per il momento, l’unico valore possibile è “1.0”. Necessario.
Il parametro “encoding” permette di specificare, se il dubbio può sorgere, quale codifica di caratteri viene usata per il documento. Facoltativo.
Il parametro “standalone” permette di specificare se tutto il contenuto del documento è interno alla risorsa o se ne esiste parte anche all'esterno (ad esempio in un'entità posta nel DTD esterno). Facoltativo. Se è assente è false.
La Document Type Definition
Una DTD è costituita da un elenco di dichiarazioni (markup declaration) che descrivono la struttura del documento
Le dichiarazioni di una DTD definiscono:
gli elementi strutturali (element) di un documento mediante un identificatore generico
il modello di contenuto di ogni elemento (content model) ovvero gli elementi che contiene ed i loro rapporti (un elemento può essere vuoto)
la lista degli attributi associati a ciascun elemento e il loro tipo
La Document Type Definition
XML non fornisce alcun modo per definire la semantica di una DTD
ogni elemento è definito esclusivamente interamente dal suo nome e dal suo contenuto
ogni altra specificazione semantica va fornita mediante documentazione in lingua naturale o in altre notazioni logiche
I DTD XML e SGML sono molto simili. A parte minime modifiche, ogni DTD XML è anche un DTD SGML.
La dichiarazione di tipo
Il è la dichiarazione del tipo di documento. Essa permette alle applicazioni XML di determinare le regole sintattiche da applicare alla verifica e validazione del documento.
La dichiarazione non è, ma contiene o fa riferimento alla Document Type Definition, dove vengono elencati gli elementi validi e i loro vincoli.
Il DTD può essere posto in un file esterno, internamente al documento, o in parte esternamente ed in parte internamente.
N.B.: In XML il nome del DOCTYPE
deve essere il nome del tag radice.
Dichiarazione del DTD:
La prima forma di dichiarazione indica che il DTD è contenuto in un file esterno (external subset).
La seconda forma precisa il DTD internamente (internal subset).
La terza forma precisa una parte del DTD come contenuta in un file esterno ed una parte come propria del documento.
Tipi di elementi
Il DTD definisce i tipi di elementi che possono occorrere nel file xml
Per ogni tipo di elemento viene indicato il tipo di contenuto, che può essere:
Any content: indica che ogni contenuto è ammissibile.Es:
Empty content: un elemento vuoto non può contenere alcun testo tra il tag di inizio e quello di chiusura e può quindi essere rappresentato da un tag vuoto. Es:
Simple content: è un elemento il cui contenuto è composto da testo. In questo caso #PCDATA è acronimo di “Parsed Character Data”.Es:
Element content: è il caso tipico in cui il contenuto è composto da sottoelementi.Es:
Mixed content: sono elementi che contendono testo misto ad altri elementi
Element content - sequenza
XML valido DTD Un elemento composto da una sequenza deve contenere una lista dei sottoelementi elencati, con un elemento per ogni tipo
I singoli sottoelementi sono divisi da virgole
Element content - alternativa
XML valido DTD Indica che il contenuto deve essere uno tra quelli elencati
I singoli sottoelementi sono divisi da barre verticali (l’or del C)
Element content - ripetizione
E’ possibile definire in vari modi le cardinalità dei sottoelementi:
Nessuna specifica: l’argomento deve comparire esattamente una volta è permesso solo
?: opzione. Specifica che il sottoelemento è facoltativo sono leciti sia che
+: ripetizione. Il sottoelemento deve figurare una o più volte , , ecc...
*: ripetizione. Il sottoelemento può figurare un numero qualsiasi di volte, o anche non figurare affatto , , , ecc...
Element content complessi
I costrutti possono combinarsi dando origine ad espressioni regolari
ogni sezione ha un titolo, può avere un abstract opzionale, seguito da almeno un paragrafo
Dentro all’elemento sezione ci deve essere un titolo, seguito da almeno un abstract o un para, che poi possono ripetersi in qualunque ordine e numero
Ogni elemento sezione è composto da un titolo, da una sequenza opzionale di abstract e da una sequenza si para composta da almeno un para
Ogni sezione è data da un titolo, da uno tra sottotitolo ed abstract, che possono però anche mancarem e da una serie di para
Come sopra, ma sottotitolo ed abstract possono coesistere
Contenuto misto
Questo testo contiene delle sezioni in grassetto ed in corsivo, ma potrebbe anche non averne In XML il contenuto di testo #PCDATA ed il contenuto di elementi possono combinarsi solo nella forma seguente:
Ogni paragrafo contiene un testo in cui si possono trovare, opzionalmente, degli elementi ed . Es:
Attributi
Il DTD permette anche di vincolare gli attributi dei singoli tag, cioè dei singoli elementi.
In generale gli attributi vengono specificati con ATTLIST:
I tipi definiscono l’insieme o la tipologia dei valori assumibili dall’attributo
I modificatori identificano le condizioni di obbligatorietà o opzionalità dell’attributo ed, eventualmente, un valore di default per lo stesso
Attributi stringa
…
Remember the meeting
…
Ricordati l’appuntamento
In questo caso l’attributo lang è una stringa
Se l’attributo è presente nel file il suo valore è quello specificato
Altrimenti viene assunto il valore di default “Italiano”
Attributi per enumerazione
LukeBrown
Il titolo di ogni persona assume valori nell’insieme indicato
In mancanza del parametro si assume per default “Mr”
Comments