Il Document Type Definitio, detto Dtd, è un documento che descrive i tag previsti in un documento XML, la loro relazione e le informazioni sugli attributi di ciascun tag.
All’interno di un Dtd si individuano essenzialmente 2 tag:
<!ELEMNT> definisce gli elementi del documento, la loro relazione e di conseguenza la struttura del documento.
<!ATTLIST> definisce la lista di attributi di ciascun elemento.
La sintassi del Dtd prevede l’utilizzo di alcuni operatori per individuare l’occorrenza degli elementi in uno schema.
-
+ 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
Dunque un DTD del genere <!ELEMENT libro(autore, capitolo+)> indica che un libro contiene un elemento autore e una o più occcorenze di un elemente capitolo.
Per gestire il contenuto di un elemento si posso usare le parole chiavi EMPTY, PCDATA, CDATA e ANY.
Un tag vuoto viene definito come <!ELEMENT vuoto EMPTY>, un tag che contiene solo testo prevede una definizione del tipo <!ELEMENT text (#PCDATA)>, se non sono noti valori a priori si usa ANY con una dichiarazione del tipo <!ELEMENT jolly ANY>
Per definire gli attributi di un elemento si usa il tag <!ATTLIST>, con l’ausilio delle parole chiavi
-
#IMPLIED (opzionale)
-
#FIXED (valore fisso)
Ad esempio la dichiarazione <!ATTLIST libro titolo CDATA #REQUIRED > indica che l’elemento libro ha un attributo obbligatorio di tipo testo denominato titolo.
Per indicare il Dtd cui fa riferimento un file XML è possibile seguire 2 approcci: inserire il Dtd all’interno del file XML utilizzando il tag !DOCTYPE oppure inserendo il path del file Dtd, che può essere un path locale o un indirizzo web.
es. 1 <?xml version=”1.0″><!DOCTYPE libro[…Definizioni del Dtd…]>
es. 2 <?xml version=”1.0″><!DOCTYPE libro SYSTEM “articolo.dtd”>
es.3 <?xml version=”1.0″><!DOCTYPE articolo SYSTEM http://www.valeriofinazzo.it/libro.dtd”>
Con l’uso dei Dtd un parser può verificare la correttezza sintattica di un file xml, tuttavia alcune limitazioni del Dtd ne sconsigliano l’uso in favore di un altro approccio, quello dell’XML Schema.