# Document Type Definition

Document Type Definition (DTD, en català definició de tipus de document) és una descripció d'estructura i sintaxi d'un document XML o SGML. La seva funció bàsica és la descripció del format de dades, per a utilitzar un format comú i mantenir la consistència entre tots els documents que empren la mateixa DTD. D'aquesta manera, aquests documents, poden ser validats, tenen una manera d'incloure en el document la descripció de les dades que conté, i poden compartir la mateixa descripció i forma de validació dins d'un grup de treball que utilitza el mateix tipus d'informació.

## Definició

La DTD és una definició, en un document SGML o XML, que n'especifica les restriccions quant a estructura i sintaxi. La DTD es pot incloure dins del fitxer del document, però normalment es desa en un fitxer ASCII de text separat. La sintaxi de les DTDs per a SGML i XML és similar però no idèntica.
La definició d'una DTD especifica la sintaxi d'una aplicació SGML o XML, que pot ésser un estàndard àmpliament utilitzat com XHTML o una aplicació local.

## Què descriu una DTD?

Les DTDs són utilitzades generalment per a determinar l'estructura d'un document mitjançant etiquetes (en anglès tags) XML o SGML. Una DTD descriu:
* Elements: indiquen quines són les etiquetes permeses i el contingut de les etiquetes.
* Estructura: indiquen l'ordre en el que van les etiquetes dins del document.
* Anidaments: indiquen quines etiquetes van dins d'altres.

## Exemples

* Un exemple d'una DTD XML molt senzilla, per descriure una llista de persones:
Observant l'exemple línia a línia ens diu:
* <llista_persones> és un nom d'element vàlid. L'* indica que hi poden haver 0 o més elementss de persona.
* <persones> és un nom d'element vàlid. Aquest conté obligatòriament l'element nom mentre que la resta són opcionals. I són perquè, hi ha el símbol'?' que ens ho indica.
* <nom> és un nom d'element vàlid. Conté caràcters.
* <genere> és un nom d'element vàlid. Conté caràcters. És opcional.
* <datanaixement> és un nom d'element vàlid.
* <numeroseguridadsocial> és un nom d'element vàlid.
* Un exemple d'un fitxer XML que fa ús d'aquesta DTD descrit anteriorment:
La DTD mostrada més a munt, requereix un element "nom" dins de cada element "persona"; l'element "llista_de_persones" és també obligatori, però la resta són opcionals.
És possible renderitzar aquest exemple, en un navegador habilitat per a XML (com IE5 o Mozilla) enganxant i desant la DTD en un fitxer de text, anomenat exemple.dtd i el fixter .xml a un fitxer de text anomenat de forma diferent, i obrint el fitxer .xml amb el navegador. Ambdós fitxers han d'estar emmagatzemats en el mateix directori (o carpeta). No obstant això, alguns navegadors no comproven que un document XML segueixi les normes de la DTD; només calen per comprovar que la DTD és sintàcticament correcte.

## Limitacions de la DTD

Un esquema basat en una DTD té força limitacions. Una DTD no permet definir elements locals que només siguin vàlids dins d'altres elements. Per exemple, si volem tenir un element <Manager> que descrigui el gestor d'una companyia o el d'una delegació, i la definició de Manager és diferent en cada cas, amb una DTD hem de crear els elements "CompanyManager" i "DelegationManager" per evitar el conflicte de noms. És a dir, la falta de jerarquia en una DTD obliga a introduir una jerarquia a base de guions o punts a l'espai de noms (Namespace). En una DTD, és poc flexible la definició d'elements amb contingut mixt, és a dir, que incloguin altres elements a part del text. A més no és possible indicar a quin tipus de dada (número, data, moneda) pertany un atribut o text d'un element.
La necessitat de superar aquestes limitacions propicia l'aparició d'altres llenguatges d'esquema com XML Schema, eines més completes de descripció que són una alternativa a les DTDs.

## Vegeu també

* XML
* Validació XML
* XML Schema
* Web semàntica
* RSS

## Enllaços externs

* DTD Tutorial (castellà)
* Diferents tipus de documents per HTML (anglès)