cerca
Tecnologie Web - DTD
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Return to Tecnologie Web - DTD  (Edit)

Uni.XMLDTD History

Show minor edits - Show changes to output

Changed line 273 from:
<!ATTLIST racconto autore PCDATA #REQUIRED>
to:
<!ATTLIST racconto autore CDATA #REQUIRED>
Changed line 273 from:
<!ATTLIST racconto autore CDATA #REQUIRED>
to:
<!ATTLIST racconto autore PCDATA #REQUIRED>
Changed line 162 from:
Una volta che l'entità viene definita è possibile utilizzarla in qualsiasi punto del documento tramite ''&nomeEntità''.\\\
to:
Una volta che l'entità viene definita è possibile utilizzarla in qualsiasi punto del documento tramite ''&nomeEntità;''.\\\
Added line 18:
# [[#s7| Esempio Finale]]
Added lines 179-280:

[[#s7]]
!!Esempio Finale
Abbiamo il seguente documento XML:

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE racconti SYSTEM "racconti.dtd">

<racconti>
<!-- Questo commento lo inserisco
perché mi serve provare il rilevamento dei commenti di XPath :P -->

<racconto autore="Howard Phillips Lovecraft">
<titoloItaliano>L'estraneo</titoloItaliano>
<titoloOriginale>The Outsider</titoloOriginale>
<notaIntroduttiva>
The Outsider è considerato uno degli esempi più palesi
dell'influsso che lo stile e le tematiche di Edgar Allan
Poe hanno esercitato su Lovecraft.
La storia ha una sottintesa nota autobiografica. Nel
protagonista, che cresce solo in una grande casa,
nutrendo la sua cultura di vecchi libri, è facile
riconoscere l'infanzia solitaria dello stesso Lovecraft.
L'invocazione finale all'oblio di fronte agli orrori
dell'esistenza da "estraneo" proiettato nel mondo comune
si ripeterà continuamente nella sua opera, soprattutto
quella poetica, nella quale si riflettono più chiaramente
le angosce dell'anima.
</notaIntroduttiva>
<frammento>
Infelice chi dell'infanzia ha soltanto memorie di paura
e tristezza. Sventurato chi, volgendosi indietro, non vede
che ore solitarie trascorse in sale vaste e malinconiche
tappezzate di lugubri tendaggi e file esasperanti di libri
antichi, o in desolate veglie in boschi crepuscolari fitti
di immensi alberi grotteschi coperti da erbe, che agitano
silenziosi in alto i rami contorti...
</frammento>
</racconto>

<racconto autore="Edgar Allan Poe">
<titoloItaliano>La mascherata della Morte Rossa</titoloItaliano>
<titoloOriginale>The Mask of the Red Death</titoloOriginale>
<frammento>
La settima stanza era pesantemente avvolta in panneggi
di velluto nero che pendevano ovunque dal soffitto e
dalle pareti, ricadendo in pesanti pieghe su un tappeto
della stessa stoffa e colore. In quest'unica stanza pero'
la tinta delle finestre non corrispondeva alle decorazioni.
Le vetrate erano di colore scarlatto, di un cupo color
sangue. Ora in nessuna di quele sette stanze vi era una
sola lampada o candelabro, pur tra la profusione di ornamenti
dorati sparsi qua e la' o pendenti dai soffitti.
</frammento>
</racconto>

<racconto autore="Howard Phillips Lovecraft">
<titoloItaliano>La musica di Erich Zann</titoloItaliano>
<titoloOriginale>The Music of Erich Zann</titoloOriginale>
<notaIntroduttiva>
Quando il saggista francese Jacques Bergier chiese a Lovecraft
se avesse mai visitato Parigi, per averne descritto così bene
l'atmosfera di certi quartieri, Lovecraft gli rispose:"certo
che l'ho visitata. Con Poe, in sogno".
Malgrado l'apparenza onirica non è tratta da un unico sogno;
tuttavia ho sognato spesso di strade tortuose come la
Rue d'Auseil.
</notaIntroduttiva>
<frammento>
Riuscii invece a sentire la musica del vecchio muto: prima
salendo in punta di piedi fino al quinto piano, poi trovando
il coraggio necessario per inerpicarmi su per l'ultima rampa
scricchiolante che conduceva alla mansarda di Zann. E lì,
nell'angusto pianerottolo davanti alla porta sprangata e col
buco della serratura tappato, più volte udii suoni che mi
colmarono di un terrore indefinibile, un terrore di occulti
prodigi e celati misteri.
</frammento>
</racconto>

</racconti>

@]
>><<

Il DTD relativo sarà:

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<!ELEMENT racconti (racconto+)>
<!ELEMENT racconto (titoloItaliano, titoloOriginale, notaIntroduttiva*, frammento)>
<!ATTLIST racconto autore CDATA #REQUIRED>
<!ELEMENT titoloItaliano (#PCDATA)>
<!ELEMENT titoloOriginale (#PCDATA)>
<!ELEMENT notaIntroduttiva (#PCDATA)>
<!ELEMENT frammento (#PCDATA)>

@]
>><<
Changed line 163 from:
{+Esempio+}:\\
to:
{+Esempio+}:
Changed line 166 from:
<!ENTITY super "supercalifragilistichespiralidoso">\\\
to:
<!ENTITY super "supercalifragilistichespiralidoso">
Added lines 164-165:
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
Added lines 167-168:
@]
>><<
Added lines 42-43:

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Changed lines 54-55 from:
to:
>><<
Changed lines 122-124 from:
[@<elenco>
to:
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@

<elenco>
Changed lines 132-133 from:
</elenco>@]
to:
</elenco>
@]
>><<
Changed lines 137-139 from:
[@(1) <!ELEMENT ELENCO (PRODOTTO+)>
to:
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@

(1) <!ELEMENT ELENCO (PRODOTTO+)>
Changed lines 143-145 from:
(5) <!ELEMENT PREZZO (#PCDATA)>@]
to:
(5) <!ELEMENT PREZZO (#PCDATA)>
@]
>><<
Changed lines 5-7 from:
%titolo%''':: Tecnologie Web - DTD ::'''
to:
%titolo%''':: Tecnologie Web ::'''

%center%%sottotitolo%'''DTD
'''
Changed lines 95-103 from:
* ''CDATA'', un attributo di tipo CDATA utilizza dati generici in formato carattere.
* ''ENTITY'', il valore dell'attributo fa riferimento ad un'entità dichiarata nel DTD.
* ''ENTITIES'', equivalente ad ENTITY, ma consente l'utilizzo di più valori separati da spazi.
* ''ID'', il valore dell'attributo deve essere un {+identificatore univoco+}. In un documento XML può essere definito un solo attributo di tipo ID. altrimenti il parser produce un errore.
* ''IDREF'', il valore deve essere un riferimento a un ID associato ad un altro elemento del documento XML.
* ''IDREFS'', equivalente a IDREF, ma consente l'utilizzo di più valori separati da spazi.
* ''NMTOKEN'', il valore dell'attributo può contenere alcuni caratteri alfanumerici (numeri e lettere) e i caratteri "."(punto), "-"(trattino), "_"(underscore), ":"(due punti).
* ''NMTOKENS'', equivalente a NMTOKEN, ma consente l'utilizzo di più valori separati da spazi.
* ''ENUMERAZIONI'', che specificano una serie di valori permessi indicati tra parentesi tonde e separate da '''|'''. Ad esempio:\\
to:
* {+''CDATA''+}, un attributo di tipo CDATA utilizza dati generici in formato carattere.
* {+''ENTITY''+}, il valore dell'attributo fa riferimento ad un'entità dichiarata nel DTD.
* {+''ENTITIES''+}, equivalente ad ENTITY, ma consente l'utilizzo di più valori separati da spazi.
* {+''ID''+}, il valore dell'attributo deve essere un ''identificatore univoco''. In un documento XML può essere definito un solo attributo di tipo ID. altrimenti il parser produce un errore.
* {+''IDREF''+}, il valore deve essere un riferimento a un ID associato ad un altro elemento del documento XML.
* {+''IDREFS''+}, equivalente a IDREF, ma consente l'utilizzo di più valori separati da spazi.
* {+''NMTOKEN''+}, il valore dell'attributo può contenere alcuni caratteri alfanumerici (numeri e lettere) e i caratteri "."(punto), "-"(trattino), "_"(underscore), ":"(due punti).
* {+''NMTOKENS''+}, equivalente a NMTOKEN, ma consente l'utilizzo di più valori separati da spazi.
* {+''ENUMERAZIONI''+}, che specificano una serie di valori permessi indicati tra parentesi tonde e separate da '''|'''. Ad esempio:\\
Deleted line 106:
* ''
Changed lines 94-97 from:
I '''tipi''' sono fondamentalmente tre:
* ''stringhe'', indicate dalla parola chiave '''CDATA'''
* ''token'', che limitano i valori permessi sull'attributo
. Un esempio è '''ID''' che identifica in modo univoco un elemento
*
''enumerazioni'', che specificano una serie di valori permessi indicati tra parentesi tonde e separate da '''|'''. Ad esempio:\\
to:
I '''tipi''' sono nove:
* ''CDATA'', un attributo di tipo CDATA utilizza dati generici in formato carattere.
* ''ENTITY'', il valore dell'attributo fa riferimento ad un'entità dichiarata nel DTD.
*
''ENTITIES'', equivalente ad ENTITY, ma consente l'utilizzo di più valori separati da spazi.
* ''ID'', il valore dell'attributo deve essere un {+identificatore univoco+}. In un documento XML può essere definito un solo attributo di tipo ID. altrimenti il parser produce un errore.
* ''IDREF'', il valore deve essere un riferimento a un ID associato ad un altro elemento del documento XML.
* ''IDREFS'', equivalente a IDREF, ma consente l'utilizzo di più valori separati da spazi.
* ''NMTOKEN'', il valore dell'attributo può contenere alcuni caratteri alfanumerici (numeri e lettere) e i caratteri "."(punto), "-"(trattino), "_"(underscore), ":"(due punti).
* ''NMTOKENS'', equivalente a NMTOKEN, ma consente l'utilizzo di più valori separati da spazi.
* ''ENUMERAZIONI
'', che specificano una serie di valori permessi indicati tra parentesi tonde e separate da '''|'''. Ad esempio:\\
Changed lines 107-108 from:
to:
* ''
Changed line 149 from:
Una volta che l'entità viene definita è possibile utilizzarla in qualsiasi punto del documento tramite ''&nomeEntità''.\\
to:
Una volta che l'entità viene definita è possibile utilizzarla in qualsiasi punto del documento tramite ''&nomeEntità''.\\\
Changed lines 137-138 from:
Le referenze a entità vengono definite tramite la seguente sintassi:
to:
Un'entità è un modo per definire singoli blocchi di informazioni. Faccio riferimento ad entità esterne o interne per includerle in documenti.\\
Le
entità vengono definite tramite la seguente sintassi:
Changed lines 137-138 from:
Le referenze a entità vengono definite tramite la seguente sintassi:\\
to:
Le referenze a entità vengono definite tramite la seguente sintassi:
Changed line 138 from:
<!ENTITY nomeEntità "testoDaSostituireAllEntità">\\\
to:
%center%[@<!ENTITY nomeEntità "testoDaSostituireAllEntità">@]
Changed lines 13-15 from:
# [[#s4| a]]
to:
# [[#s4| Esempio]]
# [[#s5| Dichiarazione di entità generali]]
# [[#s6| Limiti
]]
Changed line 59 from:
* se l'elemento ''ne contiene altri annidati''(''elementi figli''):\\
to:
* se l'elemento ''ne contiene altri annidati'' (''elementi figli o sequenze''):\\
Changed lines 108-109 from:
!!!Esempio
to:
[[#s4]]
!!Esempio
Changed lines 134-148 from:
!!!Limiti
to:
[[#s5]]
!!Dichiarazioni di entità generali
Nei concetti generali abbiamo già visto che XML prevede cinque referenze ad entità predefinite, ma il DTD permette di definirne altre.\\
Le referenze a entità vengono definite tramite la seguente sintassi:\\
<
!ENTITY nomeEntità "testoDaSostituireAllEntità">\\\

Una volta che l'entità viene definita è possibile utilizzarla in qualsiasi punto del documento tramite ''&nomeEntità''.\\

{+Esempio+}:\\
<!ENTITY super "supercalifragilistichespiralidoso">\\\

NOTA: le entità possono contenere anche markup, quindi ad esempio un piè di pagina o un'intestazione standard di pagine web che si ripete più volte nelle pagine.

[[#s6]]
!!Limiti DTD
Changed line 57 from:
* se l'elemento ''ne contiene altri annidati'':\\
to:
* se l'elemento ''ne contiene altri annidati''(''elementi figli''):\\
Deleted line 24:
Changed line 24 from:
* le entità
to:
* le ''entità''.
Changed lines 19-26 from:
Il '''DTD''' ('''Document Type Definition''') è una specifica della struttura di documenti XML. Descrive quali elementi ed entità possono apparire all'interno del documento e quali possono essere i contenuti e gli attributi di tali elementi. Ovviamente applicazioni XML differenti possono utilizzare DTD differenti.\\\
to:
Il '''DTD''' ('''Document Type Definition''') è una specifica della struttura di documenti XML.\\
Descrive:
*
quali ''elementi'' possono apparire all'interno del documento.
* la ''struttura degli elementi'', cioè
i contenuti di tali elementi, l'ordine, la quantità, se sono obbligatori od opzionali.
* gli ''attributi'' degli elementi XML, il loro tipo e i vincoli sul loro valore.
* le entità

Ovviamente applicazioni XML differenti possono utilizzare DTD differenti.\\\
Added line 33:
<?xml version="1.0" standalone="no"?>
Added lines 35-40:
<person>
<name>
<first_name>Edgar Allan</first_name>
<last_name>Poe</last_name>
</name>
</person>
Changed lines 27-29 from:
In entrambi i casi il documento XML per il quale è richiesta la validazione deve includere un riferimento al DTD con il quale deve essere messo a confronto. Questo riferimento deve essere fornito nella dichiarazione del tipo di documento. Questa dichiarazione è compresa nel '''prologo''' del documento XML, cioè dopo la dichiarazione XML e prima dell'elemento radice.
to:
* pubblico. Avviene nel caso di DTD molto utilizzati (ad es. il DTD per XHTML).

In tutti i casi il documento XML per
il quale è richiesta la validazione deve includere un riferimento al DTD con il quale deve essere messo a confronto. Questo riferimento deve essere fornito nella dichiarazione del tipo di documento. Questa dichiarazione è compresa nel '''prologo''' del documento XML, cioè dopo la dichiarazione XML e prima dell'elemento radice.

{+Esempio+}:\\
[@
<!DOCTYPE person SYSTEM "http://indirizzo.org/xml/dtds/person.dtd">
@]
Changed line 12 from:
# [[#s3| t]]
to:
# [[#s3| Dichiarazione di attributi]]
Changed lines 65-66 from:
!!!!Attributi
to:
[[#s3]]
!!Dichiarazione di attributi
Changed line 11 from:
# [[#s2| o]]
to:
# [[#s2| Dichiarazione di elementi]]
Changed lines 19-23 from:
Il '''DTD''' ('''Document Type Definition''') è una specifica della struttura di documenti XML. Descrive quali elementi ed entità possono apparire all'interno del documento e quali possono essere i contenuti e gli attributi di tali elementi. Ovviamente applicazioni XML differenti possono utilizare DTD differenti.\\\

La '''validazione''' è il procedimento di controllo della validità del documento tramite DTD. Quindi se il documento ha una DTD e la soddisfa, allora il documento viene considerato '''valido'''. I parser che effettuano la validazione dei documenti ne confrontano il contenuto con il DTD relativo ed elencano i punti del documento che non rispettano i vincoli specificati nei DTD.\\
La validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.\\\
to:
Il '''DTD''' ('''Document Type Definition''') è una specifica della struttura di documenti XML. Descrive quali elementi ed entità possono apparire all'interno del documento e quali possono essere i contenuti e gli attributi di tali elementi. Ovviamente applicazioni XML differenti possono utilizzare DTD differenti.\\\

La '''validazione''' è il procedimento di controllo della validità del documento tramite DTD. Quindi se il documento ha una DTD e la soddisfa, allora viene considerato '''valido'''. I parser che effettuano la validazione dei documenti ne confrontano il contenuto con il DTD relativo ed elencano i punti del documento che non rispettano i vincoli specificati nei DTD.\\
Bisogna ricordare che la validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.\\\
Changed line 25 from:
* salvato in un file separato(solitamente con estensione ''.dtd'') dal documento di cui descrive le regole. In questo modo più documenti XML potranno essere legati allo stesso DTD.
to:
* salvato in un file separato (solitamente con estensione ''.dtd'') dal documento di cui descrive le regole. In questo modo più documenti XML potranno essere legati allo stesso DTD.
Changed lines 28-33 from:
In entrambi i casi il documento XML per il quale è richiesta la validazione deve includere un riferimento al DTD con il quale deve essere messo a confronto. Questo riferimento deve essere fornito nella dichiarazione del tipo di documento.\\
Questa
dichiarazione è compresa nel '''prologo''' del documento XML, cioè dopo la dichiarazione XML e prima dell'elemento radice.


!!!Sintassi
!!!!Elementi
to:
In entrambi i casi il documento XML per il quale è richiesta la validazione deve includere un riferimento al DTD con il quale deve essere messo a confronto. Questo riferimento deve essere fornito nella dichiarazione del tipo di documento. Questa dichiarazione è compresa nel '''prologo''' del documento XML, cioè dopo la dichiarazione XML e prima dell'elemento radice.


[[#s2]]
!!Dichiarazione di elementi
Changed lines 19-23 from:
Il '''Document Type Definition''' ('''DTD''') è una specifica della struttura di documenti XML. Descrive quali elementi ed entità possono apparire all'interno del documento e quali possono essere i contenuti e gli attributi di tali elementi. Ovviamente applicazioni XML differenti possono utilizare DTD differenti.\\
La validazione è il procedimento di controllo della validità del documento tramite DTD. Quindi se il documento ha una DTD e la soddisfa, allora il documento viene considrtato '''valido'''. I parser che effettuano la validazione dei documenti ne confrontano il contenuto con il DTD relativo ed elencano i punti del documento che non rispettano i vincoli specificati nei DTD.\\
La validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.\\
Il suo utilizzo è opzionale e può essere specificato sia all'interno del documento XML (generalmente all'inizio) che in un documento separato cui fa riferimento con una particolare direttiva ([@<!DOCTYPE root-element SYSTEM "filename">@]).
to:
Il '''DTD''' ('''Document Type Definition''') è una specifica della struttura di documenti XML. Descrive quali elementi ed entità possono apparire all'interno del documento e quali possono essere i contenuti e gli attributi di tali elementi. Ovviamente applicazioni XML differenti possono utilizare DTD differenti.\\\

La '''validazione''' è il procedimento di controllo della validità del documento tramite DTD. Quindi se il documento ha una DTD e la soddisfa, allora il documento viene considerato '''valido'''. I parser che effettuano la validazione dei documenti ne confrontano il contenuto con il DTD relativo ed elencano i punti del documento che non rispettano i vincoli specificati nei DTD.\\
La validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.\\\

Il DTD può essere:
* salvato in un file separato(solitamente con estensione
''.dtd'') dal documento di cui descrive le regole. In questo modo più documenti XML potranno essere legati allo stesso DTD.
* incorporato all'interno di un documento XML.

In entrambi i casi il documento XML per il quale è richiesta la validazione deve includere un riferimento al DTD con il quale deve essere messo a confronto. Questo riferimento deve essere fornito nella dichiarazione del tipo di documento.\\
Questa dichiarazione è compresa nel '''prologo''' del documento XML, cioè dopo la dichiarazione XML e prima dell'elemento radice.
Changed lines 20-25 from:


La validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.


: se il documento rispetta tale specifica si dice ''valido'' rispetto ad essa.
Il suo utilizzo è opzionale e può essere specificato sia all'interno del documento XML (generalmente all'inizio) che in un documento separato cui fa riferimento con una particolare direttiva ([@<!DOCTYPE root-element SYSTEM "filename">@]).
to:
La validazione è il procedimento di controllo della validità del documento tramite DTD. Quindi se il documento ha una DTD e la soddisfa, allora il documento viene considrtato '''valido'''. I parser che effettuano la validazione dei documenti ne confrontano il contenuto con il DTD relativo ed elencano i punti del documento che non rispettano i vincoli specificati nei DTD.\\
La validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.\\

Il suo utilizzo è opzionale e può essere specificato sia all'interno del documento XML (generalmente all'inizio) che in un documento separato cui fa riferimento con una particolare direttiva ([@<!DOCTYPE root-element SYSTEM "filename">@]).
Changed lines 22-24 from:
to:
La validazione opera sul principio che tutto ciò che non è esplicitamente permesso, è considerato vietato.
Changed lines 27-29 from:
E' costituito da un insieme di regole, che possono essere di due tipi:
* regole che definiscono gli ''elementi'' XML ammissibili e il loro contenuto
* regole che specificano gli ''attributi'' degli elementi XML, il loro tipo e i vincoli sul loro valore
to:
Changed line 10 from:
# [[#s1| p]]
to:
# [[#s1| Validazione]]
Changed lines 18-19 from:
!!Cos'è
Il '''Document Type Definition''' ('''DTD''') è una specifica della struttura di documenti XML: se il documento rispetta tale specifica si dice ''valido'' rispetto ad essa. Il suo utilizzo è opzionale e può essere specificato sia all'interno del documento XML (generalmente all'inizio) che in un documento separato cui fa riferimento con una particolare direttiva ([@<!DOCTYPE root-element SYSTEM "filename">@]).
to:
!!Validazione
Il '''Document Type Definition''' ('''DTD''') è una specifica della struttura di documenti XML. Descrive quali elementi ed entità possono apparire all'interno del documento e quali possono essere i contenuti e gli attributi di tali elementi. Ovviamente applicazioni XML differenti possono utilizare DTD differenti.\\



: se il documento rispetta tale specifica si dice ''valido'' rispetto ad essa. Il suo utilizzo è opzionale e può essere specificato sia all'interno del documento XML (generalmente all'inizio) che in un documento separato cui fa riferimento con una particolare direttiva ([@<!DOCTYPE root-element SYSTEM "filename">@]).
Changed lines 18-112 from:
!!
to:
!!Cos'è
Il '''Document Type Definition''' ('''DTD''') è una specifica della struttura di documenti XML: se il documento rispetta tale specifica si dice ''valido'' rispetto ad essa. Il suo utilizzo è opzionale e può essere specificato sia all'interno del documento XML (generalmente all'inizio) che in un documento separato cui fa riferimento con una particolare direttiva ([@<!DOCTYPE root-element SYSTEM "filename">@]).

E' costituito da un insieme di regole, che possono essere di due tipi:
* regole che definiscono gli ''elementi'' XML ammissibili e il loro contenuto
* regole che specificano gli ''attributi'' degli elementi XML, il loro tipo e i vincoli sul loro valore

!!!Sintassi
!!!!Elementi
Per definire gli '''elementi''' leciti all'interno del documento si utilizza la seguente sintassi:

%center%[@<! ELEMENT nomeElemento (modelloDiContenuto)>@]

Il '''modello di contenuto''' può essere di vari tipi:

* se l'elemento ''ne contiene altri annidati'':\\
[@<! ELEMENT nomeElemento (nomeElementoAnnidato1, nomeElementoAnnidato2, ...)>@]

* se l'elemento ''ha contenuto testuale'':\\
[@<! ELEMENT nomeElemento (#PCDATA)>@]

* se l'elemento ''ha contenuto misto'' si utilizza il simbolo '''|''' come separatore:\\
[@<! ELEMENT nomeElemento (#PCDATA | nomeElementoAnnidato)>@]

* se l'elemento ''non è sicuramente vuoto, ma non se ne conosce il modello di contenuto'':\\
[@<! ELEMENT nomeElemento ANY>@]

* se l'elemento ''è vuoto'':\\
[@<! ELEMENT nomeElemento EMPTY>@]

Ogni elemento può avere diversi '''indicatori di occorrenza''' per i suoi sotto-elementi, quindi diversa cardinalità:

* se ho ''una sola occorrenza'', non ho indicatori\\
[@<! ELEMENT nomeElemento (nomeElementoAnnidato)>@]
* se l'occorrenza è ''facoltativa'' (0 o 1 volta), si indica col simbolo '''?'''\\
[@<! ELEMENT nomeElemento (nomeElementoAnnidato?)>@]
* se l'occorrenza è ''obbligatoria e ripetibile'' (1 o più volte), si indica col simbolo '''+'''\\
[@<! ELEMENT nomeElemento (nomeElementoAnnidato+)>@]
* se l'occorrenza è ''facoltativa e ripetibile'' (0 o più volte), si indica col simbolo '''*'''\\
[@<! ELEMENT nomeElemento (nomeElementoAnnidato*)>@]

!!!!Attributi
Gli '''attributi''' forniscono informazioni aggiuntive sugli elementi, e per definire quelli leciti all'interno del documento si utilizza la seguente sintassi:

[@ <!ATTLIST nomeElemento
nomeAttributo1 (tipo) valoriPredefiniti
nomeAttributo2 (tipo) valoriPredefiniti
... ... ...>@]

I '''tipi''' sono fondamentalmente tre:
* ''stringhe'', indicate dalla parola chiave '''CDATA'''
* ''token'', che limitano i valori permessi sull'attributo. Un esempio è '''ID''' che identifica in modo univoco un elemento
* ''enumerazioni'', che specificano una serie di valori permessi indicati tra parentesi tonde e separate da '''|'''. Ad esempio:\\
[@<!ATTLIST messaggio
Avviso ( basso | normale | urgente) “basso”>@]
Ho tre valori permessi (basso, normale, urgente) di cui basso è quello predefinito.

Per quanto riguarda i '''valori predefiniti''' degli attributi, su essi possono essere imposti alcuni vincoli:
* se l'attributo è ''obbligatorio'', si indica col simbolo '''#REQUIRED'''
* se l'attributo è ''facoltativo'', si indica col simbolo '''#IMPLIED'''
* se all'attributo ''deve essere associato un valore costante'', si indica col simbolo '''#FIXED "valore"'''
* per dare un ''valore di default'' all'attributo, basta metterlo tra virgolette. Es: "valore1"

!!!Esempio
Documento XML di partenza:
[@<elenco>
<prodotto codice="123">
<descrizione> libro </descrizione>
<prezzo> 50 </prezzo>
</prodotto>
<prodotto codice="456">
<descrizione> penna stilo </descrizione>
</prodotto>
</elenco>@]

DTD risultante:
[@(1) <!ELEMENT ELENCO (PRODOTTO+)>
(2) <!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO?)>
(3) <!ATTLIST PRODOTTO codice ID #REQUIRED>
(4) <!ELEMENT DESCRIZIONE (#PCDATA)>
(5) <!ELEMENT PREZZO (#PCDATA)>@]

Commenti punto per punto:
* (1) l'elemento ELENCO contiene altri elementi di tipo PRODOTTO. In particolare ne deve avere obbligatoriamente almeno 1
* (2) l'elemento PRODOTTO contiene altri due elementi: DESCRIZIONE (che può avere un'unica occorrenza) e PREZZO, la cui presenza è facoltativa
* (3) l'elemento PRODOTTO ''deve'' avere come attributo il suo codice identificativo
* (4) e (5) gli elementi DESCRIZIONE e PREZZO sono stringhe di testo

!!!Limiti
Il ''Document Type Definition'' è molto semplice da scrivere e questo ha un prezzo:
* gli unici tipi di dati ammessi sono quelli testuali (niente numeri interi o reali, booleani, ecc)
* possono esprimere un numero di vincoli sugli attributi molto limitato
* non sono estendibili
* non gestiscono ''namespace''
Added lines 1-21:
(:title Tecnologie Web - DTD:)
[[Torna alla pagina di Tecnologie Web -> TecnologieWeb]]
----

%titolo%''':: Tecnologie Web - DTD ::'''

>>left bgcolor=#f5f9fc width=240px border='2px solid #cccccc' padding=5px<<
%center%'''Indice'''

# [[#s1| p]]
# [[#s2| o]]
# [[#s3| t]]
# [[#s4| a]]
>><<


[[#s1]]
!!

----
[[Torna alla pagina di Tecnologie Web -> TecnologieWeb]]