# XML/DTD

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
Obiettivi di apprendimento
* Comprendere che cos'è un Document Type Definition (DTD)
* Imparare come dichiarare elementi e attributi in un DTD
Il DTD descrive la forma che deve avere un documento XML per essere valido. I DTD sono stati sostituiti dallo Schema XML, che è molto più potente, quindi ti incoraggiamo a usare quest'ultimo.
Tuttavia, discutiamo di DTD qui in modo che tu possa comprenderne uno se necessario. In particolare, potrebbe essere necessario trasformare un DTD in uno schema per utilizzare questa nuova tecnologia.

## Specifica di un DTD

A differenza degli schemi, DTD non è un dialetto XML, è un linguaggio specifico.
Il DTD non è obbligatorio. Può essere interno al documento XML o esterno (in un file con l'estensione ".dtd"). Usiamo un DTD esterno quando vogliamo condividerlo tra diversi file XML.
Esempio di dichiarazione di un DTD esterno in un file XML:
Il DTD inizia con il tag:
e termina con:
Il DTD deve essere inserito dopo la dichiarazione XML iniziale.
I commenti, come in XML, vengono inseriti come segue:

## Elementi

Ogni elemento del DTD è definito come segue:
Possibili qualificatori sono:
* ANY: la struttura dell'elemento è libera
* EMPTY: l'articolo è vuoto
* #PCDATA(Parsed Character Data): dati testuali analizzabili
Questi qualificatori possono essere specificati dai seguenti elementi:
* uno e un solo sottoelemento:
(solo un telefono a persona)
* 0 o più sotto-elementi:
(una persona può avere 0, 1 o più telefoni)
* 1 o più elementi:
(una persona deve avere almeno un telefono)
* 0 o 1 articolo singolo:
(una persona ha al massimo 1 telefono, potrebbe non averne uno)
* Diversi sotto-elementi:
(una persona ha un nome e un telefono)
* Sotto-elementi identici o non identici:
(una persona ha un nome e due numeri di telefono)
* Un elemento secondario OR (esclusivo) un altro:
(uno o due telefoni a persona)
Esempio di memorizzazione di una directory di servizi. Ogni servizio ha un nome e può avere uno o più telefoni:

## Attributi

Sono dichiarati con ATTLIST. Ad esempio, definiamo un tipo di pagamento predefinito in contanti:

### Valori degli attributi

I valori dell'attributo (attributo-valore) sono:
| Valore | Descrizione |
| value | valore predefinito dell'attributo |
| #REQUIRED | attributo richiesto |
| #IMPLIED | attributo opzionale |
| #FIXED value | attributo a valore fisso |

### Tipi di attributi

| Type | Description |
| CDATA | valore dei dati |
| (en1|en2|..) | valore nell'elenco numerato |
| ID | identificatore univoco |
| IDREF | identificatore di un altro elemento |
| IDREFS | elenco di altri identificatori |
| NMTOKEN | nome di un XML valido |
| NMTOKENS | elenco di nomi XML |
| ENTITY | entità |
| ENTITIES | elenco di entità |
| NOTATION | nome di una valutazione |
| xml: | valore di un XML predefinito |

## Entità

Dichiarare un'entità consente di integrarla chiamando il suo nome preceduto da una e commerciale, dal simbolo della percentuale o dalle virgolette (&, % o ") e seguito da un punto e virgola (;). Per esempio:
Questo esempio è estratto dalla specifica XHTML per i collegamenti ipertestuali:

## Note

* ↑ http://www.w3schools.com/dtd/dtd_elements.asp
* ↑ http://www.w3schools.com/dtd/dtd_attributes.asp
* ↑ http://xmlwriter.net/xml_guide/entity_declaration.shtml
* ↑ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd