Home
Document Type Definition

08 Novembre 2001

Document Type Definition

di

Le regole di base per creare un DTD e validare un documento XML

Come abbiamo visto negli scorsi articoli un documento XML è valido se associato ad una DTD e conforme con essa.
A questo punto c’è da chiedersi quali siano le regole per creare DTD.

DOCTYPE

Innanzi tutto un documento XML viene associato ad una DTD attraverso l’elemento.
La sintassi di questo elemento varia in funzione della tipologia di associazione da effettuare, le varie tipologie sono le seguenti:





/

dove gli attributi hanno il seguente significato:

  • [DTD] è il nome facoltativo della grammatica
  • URL è l’url di una DTD raggiungibile via HTTP
  • SYSTEM identifica una DTD tradizionale
  • PUBLIC identifica una DTD pubblica che segue regole leggermente più complesse

Riprendiamo l’esempio visto qualche tempo fa:





/

in questo caso stiamo inserendo una DTD utilizzando un file.dtd contenuto sullo stesso file-system del documento XML da validare.

ELEMENT

Ogni singolo elemento viene indicato all’interno del DTD attraverso il tag.

La sintassi generica di questo tag è la seguente:, dove i singoli attributi hanno il seguente significato:

  • NAME è il nome dell’elemento che si sta dichiarando
  • CONTENT_MODEL è un attributo che può assumere i seguenti valori:
    • EMPTY: l’elemento non può contenere figli
    • ANY: l’elemento può contenere qualsiasi figlio
    • Contenuto misto: il contenuto dell’elemento dipende dalla grammatica

Vediamo alcuni esempi.

/

L’elemento Persona può contenere soltanto elementi con il nome indicato.

/

L’elemento Rubrica_Telefonica può contenere un numero qualsiasi di elementi, ma tutti si devono chiamare Persona.

/

L’elemento Nome può contenere solo dati di tipo carattere, cioè diversi da altri elementi figli.

/

L’elemento BR non può avere nessun valore e nessun figlio, questo è il caso del tag dell’HTML.

/

L’elemento HTML può avere qualsiasi valore e qualsiasi figlio, questo è il caso del tag dell’HTML.

Elementi multipli

Prendiamo ancora l’elemento.
Esso stabilisce che l’elemento Rubrica_Telefonica possa avere un numero qualsiasi di figli, a condizione che si tratti sempre dell’elemento Persona.
La sintassi utilizzata prevede una regola generale di questo tipo:

/

dove value può assumere le forme seguenti:

  • value+ una o più occorrenze di value
  • value* zero o più occorrenze di value
  • value? una occorrenza di value oppure niente
  • value1,value2 una occorrenza di value1 seguita da una occorrenza di value2
  • value1|value2 value1 oppure value2

Queste regole devono essere considerate tenendo conto che ogni espressione racchiusa tra parentesi viene considerata come un singolo elemento, di conseguenza è possibile aspettarsi elementi di questo tipo:

/

/

/

Nel prossimo articolo parleremo di entità ed attributi delle DTD.

L'autore

  • Massimo Canducci
    Massimo Canducci vanta oltre 25 anni di esperienza nel campo dell'innovazione e della digital transformation ed è Chief Innovation Officer per Engineering Ingegneria Informatica. È docente alla Singularity University, l'Università di Torino e l'Università di Pavia, e insegna in master MBA.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.