Document Type Definition

De Viquipèdia
Dreceres ràpides: navegació, cerca

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ó[modifica | modifica el codi]

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?[modifica | modifica el codi]

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[modifica | modifica el codi]

  • Un exemple d'una DTD XML molt senzilla, per descriure una llista de persones:
<!ELEMENT llista_de_persones (persona*)>
<!ELEMENT persona (nom, datanaixement?, genere?, numeroseguretatsocial?)>
<!ELEMENT nom (#PCDATA) >
<!ELEMENT datanaixement (#PCDATA) >
<!ELEMENT genere (#PCDATA) >
<!ELEMENT numeroseguretatsocial (#PCDATA) >

Observant l'exemple línia a línia ens diu:

  1. <llista_persones> és un nom d'element vàlid. L'* indica que hi poden haver 0 o més elementss de persona.
  2. <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.
  3. <nom> és un nom d'element vàlid. Conté caràcters.
  4. <genere> és un nom d'element vàlid. Conté caràcters. És opcional.
  5. <datanaixement> és un nom d'element vàlid.
  6. <numeroseguridadsocial> és un nom d'element vàlid.
  • Un exemple d'un fitxer XML que fa ús d'aquesta DTD descrit anteriorment:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE llista_de_persones SYSTEM "exemple.dtd">
<llista_de_persones>
 <persona>
 <nom>Josep García</nom>
 <datanaixement>25/04/1984</ datanaixement >
 <genere>masculí</genere>
 </persona>
</llista_de_persones>

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 es requereixen per comprovar que la DTD és sintàcticament correcte.

Limitacions de la DTD[modifica | modifica el codi]

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.

Vegi també[modifica | modifica el codi]


Enllaços externs[modifica | modifica el codi]