Occupiamoci di scrivere una DTD compatibile
con il documento "dipartimento.xml", al
fine di renderlo valido. Analizzando il codice del documento, si nota che esso
rispetta questa struttura:
Inoltre è opportuno definire un'entità per il
carattere "è", che chiamiamo egrave, come in HTML.
La DTD che esplicita queste regole è la
seguente:
<!ELEMENT DOCENTI
(PERSONA*)>
<!ELEMENT PERSONA (NOME,GRUPPO,TITOLO?,PUBBLICAZIONI,CURRICULUM)>
<!ELEMENT NOME (#PCDATA)>
<!ELEMENT GRUPPO (#PCDATA)>
<!ELEMENT TITOLO (#PCDATA)>
<!ELEMENT PUBBLICAZIONI (PUBBLICAZIONE+)>
<!ELEMENT PUBBLICAZIONE (#PCDATA)>
<!ELEMENT CURRICULUM (#PCDATA)>
<!ENTITY egrave "è" >
Supponiamo di scrivere questa DTD in un file
chiamato "dipartimento.dtd". Per associarla al documento, occorre inserire
questa riga nel prologo:
<!DOCTYPE DOCENTI
SYSTEM "dipartimento.dtd">
Abbiamo così ottenuto un documento XML
valido.
Elencare tutti gli elementi e gli attributi e
analizzarne il contenuto, al fine di scrivere una DTD compatibile, può
diventare un lavoro lungo e difficile per documenti di grandi dimensioni. Una
buona idea è quella di partire da DTD molto "larghe", per poi
renderle più ristrette ed aderenti al documento. Per il nostro esempio, è
giusta anche la definizione:
<!ELEMENT PERSONA
(NOME|GRUPPO|TITOLO|PUBBLICAZIONI|CURRICULUM)*>
La semantica di questa definizione è molto
povera, però è un buon punto di partenza per evitare errori ed ottenere in
seguito una DTD più aderente al documento.