3.10

Sezione 3: Autori

Q 3.10: Cos’è un DTD e dove ne trovo uno?

Una specifica di struttura di documento. Puoi scriverne uno o scaricarlo.

 

Un DTD è una descrizione nella Sintassi di Dichiarazione XML di un particolare tipo o classe di documento. Mette in chiaro quali nomi devono essere usati per diversi tipi di elementi, dove possono verificarsi, e come tutti funzionano assieme. Uno Schema fa la stessa cosa in una Sintassi di Documento XML, dunque può essere letto come un Documento XML; e gli Schemi permettono un inserimento di dati più estensivo.

Per esempio, se vuoi che un tipo di documento sia capace di descrivere Liste che contengano Oggetti, la parte rilevante del tuo DTD potrebbe contenere qualcosa del genere:

 
<!ELEMENT List (Item)+> 
<!ELEMENT Item (#PCDATA)> 

Questo definisce una lista come un tipo di elemento contenente uno o più oggetti (il segno più); e definisce oggetti come tipi di elementi contenenti semplice testo (Parsed Character Data o PCDATA). I convalidatori leggono il DTD prima di leggere il tuo documento, quindi possono identificare dover ogni tipo di elemento deve essere, cosa possono contenere, e come ognuno si relaziona all’altro, quindi le applicazioni che hanno bisogno di sapere tutto questo in anticipo (elaboratori, browser, editor, motori di ricerca, navigatori, e database) possono impostarsi correttamente. L’esempio sopra ti fa creare una lista come questa:

<List>
  <Item>Chocolate</Item>
  <Item>Music</Item>
  <Item>Surfing</Item>
</List>

Come spiegato in Come XML gestisce gli spazi vuoti nei miei documenti?, l’indentazione nell’esempio è solo per motivi di leggibilità durante l’editing: non è richiesta da XML.  Il tutto potrebbe facilmente essere scritto in questo modo:

<List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List>

Un DTD fornisce dunque applicazioni con la notifica anticipata di quali nomi e strutture possono essere usate in un particolare tipo di documento. Usare un DTD e un editor di validazione significa che puoi essere certo che tutti i documenti di quel particolare tipo saranno costruiti e nominati in modo consistente e conforme.

I DTD non sono strettamente richiesti per l’elaborazione di documenti ben formati, ma sono necessari se vuoi sfruttare il meccanismo di riferimento incrociato ID/IDREF incorporato; o usare i valori di attributo di default; o fare riferimento a file esterni non XML (‘Annotazioni’) come immagini; o se vuoi semplicemente un controllo sulla validità del documento prima dell’elaborazione.

Esistono già migliaia di DTD in ogni tipo di area (vedi leCopertine su SGML/XML  come riferimento). Molti di questi possono essere scaricati e usati liberamente, ma alcuni sono limitati a certe industrie, o sono proprietari; ma puoi anche scrivere il tuo (vedi la domanda creare il tuo DTD. I vecchi DTD SGML devono essere convertiti a XML per usarli nei sistemi XML: leggi la domanda sulla conversione da DTD SGML a XML; ma i più famosi DTD SGML sono già disponibili in XML.

Alcuni editor XML usano un formato binario compilato di DTD prodotto dalle proprie routine di gestione per permettere ad un singolo individuo in un organizzazione di essere a capo delle modifiche, e rilasciare solo una versione non modificabile (compilata in binario) per gli utenti.

L’alternativa ad un DTD sono le varie forme di  Schema. Questi forniscono una caratteristica di validazione più estensiva rispetto ai DTD, fra cui la validazione dei contenuti dei dati carattere.

Leave a Comment

Your email address will not be published. Required fields are marked *