Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

DTD - Document Type Definition

Una caratteristica fondamentale dell'XML è l'estensibilità. L'autore - nell'accezione estesa specificata nella prima lezione - di un documento XML può creare nuovi tag per descrivere i contenuti semantici dei propri dati, semplificando il loro scambio fra i gruppi di persone interessate allo stesso settore.

Ciò ha portato alla necessità di definire delle regole grammaticali, o vincoli, alle quali gli elementi devono attenersi.

(L'articolo continua più sotto...)

Queste regole grammaticali sono definite nelle specifiche XML e sono codificate nel DTD (acronimo di Document Type Definition che significa definizione del tipo di documento.

Le regole grammaticali o vincoli specificano:

Quando un documento XML è ben formato e rispetta le regole del DTD a cui si riferisce si dice che è un documento XML valido.

In un documento XML si può specificare il DTD in modo esplicito (DTD interno) o con un riferimento ad un documento distinto (DTD esterno).
Se il DTD è interno, deve essere dichiarato con la seguente sintassi:

<!DOCTYPE elemento-radice [dichiarazione-elementi]>
Esempio semplificato per una legge:
<?xml version="1.0"?>
<!DOCTYPE Legge [
    <!ELEMENT Legge (TitoloLegge,Articolato) >
    <!ELEMENT TitoloLegge (#PCDATA)>
    <!ELEMENT Articolato (Capo+)>
    <!ELEMENT Capo (Rubrica?,Articolo+)>
    <!ELEMENT Rubrica (#PCDATA)>
    <!ELEMENT Articolo (Rubrica?,Comma+)>
    <!ELEMENT Comma (#PCDATA)>
    <!ATTLIST Capo Num CDATA #REQUIRED>
    <!ATTLIST Articolo Num CDATA #REQUIRED>
    <!ATTLIST Comma Num CDATA #REQUIRED>
]>
<Legge>
    <TitoloLegge>Disciplina delle associazioni a scopo benefico</TitoloLegge>
        <Articolato>
        <Capo Num="I">
        <Rubrica>DISPOSIZIONI GENERALI</Rubrica>
        <Articolo Num="1">
        <Rubrica>Finalità e oggetto della legge</Rubrica>
        <Comma Num="1">La Repubblica riconosce il valore sociale...</Comma>
        ...
</Legge>
Se il DTD è esterno, deve essere dichiarato con la seguente sintassi:
<!DOCTYPE elemento-radice SYSTEM "nome-file">
Vediamo lo stesso esempio semplificato con la dichiarazione esterna:
<?xml version="1.0"?>
<!DOCTYPE Legge SYSTEM "legge.dtd">
<Legge>
    <TitoloLegge>Disciplina delle associazioni di promozione sociale
    <Articolato>
    <Capo Num="I">
    <Rubrica>DISPOSIZIONI GENERALI</Rubrica>
    <Articolo Num="1">
    <Rubrica>Finalità e oggetto della legge</Rubrica>
    <Comma Num="1">La Repubblica riconosce il valore sociale...</Comma>
    ...
</Legge>
dove legge.dtd è un file esterno che contiene il DTD per il documento XML, e cioé le righe:
<!ELEMENT Legge (TitoloLegge,Articolato)>
<!ELEMENT TitoloLegge (#PCDATA)>
<!ELEMENT Articolato (Capo+)>
<!ELEMENT Capo (Rubrica?,Articolo+)>
<!ELEMENT Articolo (Rubrica?,Comma+)>
<!ELEMENT Rubrica (#PCDATA)>
<!ELEMENT Comma (#PCDATA)>
<!ATTLIST Capo Num CDATA #REQUIRED>
<!ATTLIST Articolo Num CDATA #REQUIRED>
<!ATTLIST Comma Num CDATA #REQUIRED>
In un DTD gli elementi del documento XML sono definiti tramite una dichiarazione di elemento che può assumere tre forme.

Prima forma:

<!ELEMENT NomeElemento (#PCDATA)>
Questa è la forma più semplice in cui si dichiara che un elemento può contenere come valore una qualsiasi stringa di testo; ad esempio:
<!ELEMENT Rubrica (#PCDATA)>
In questo caso il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del tipo:
...
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
...
Seconda forma:
<!ELEMENT NomeElemento EMPTY>
Questa è la forma con la quale si dichiara che un elemento è privo di valore. In questo caso all'elemento sono sempre associati uno o più attributi:
<!ELEMENT Numero EMPTY>
<!ATTLIST Numero
Valore CDATA #REQUIRED>
e quindi il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del tipo:
...
<Numero Valore="1"/>
...
Terza forma:
<!ELEMENT NomeElemento (ElementoFiglio1, ElementoFiglio2, ...)>
Questa è la forma a contenitore in cui si dichiara che un elemento è composto da sotto-elementi (figli) con i quali s'instaura una stretta gerarchia del tipo padre-figlio
<!ELEMENT Legge (TitoloLegge, Articolato)>
<!ELEMENT TitoloLegge (#PCDATA)>
<!ELEMENT Articolato (...)>
In questo caso il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del tipo:
<Legge>
<TitoloLegge>Disciplina delle associazioni a scopo benefico</TitoloLegge>
<Articolato>
...
</Articolato>
</Legge>

Corsi
Corso CSSCorso CSS
Web Design ed Accessibilità secondo il W3C con CSS ed XHTML. A partire da 29 €.
Corso XMLCorso XML
Creazione di strutture XML, XSL ed altri linguaggi eXtensible. A partire da 39 €.
Sommario
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122