cerca
Basi di Dati - Complementi - Document Type Definition
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.BDC-DTD History

Hide minor edits - Show changes to output

Changed lines 8-9 from:
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 all'inizio di un documento XML.
to:
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">@]).
Added lines 94-100:

!!!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 39-40:
* se ho ''una sola occorrenza'', non ho indicatori\\
[@<! ELEMENT nomeElemento (nomeElementoAnnidato)>@]
Changed lines 65-68 from:
* 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"
to:
* 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
Changed lines 18-19 from:
%center% [@<! ELEMENT nomeElemento (modelloDiContenuto)>@]
to:
%center%[@<! ELEMENT nomeElemento (modelloDiContenuto)>@]
Added lines 47-66:
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"
Added lines 1-50:
(:title Basi di Dati - Complementi - Document Type Definition:)

%titolo%''':: Basi di Dati - Complementi ::'''

%center%%sottotitolo%'''Document Type Definition'''

!!!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 all'inizio di un documento XML.

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 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

----
[[Torna alla pagina di Basi di Dati - Complementi -> BDComplementi]]