Document Type Definition: diferència entre les revisions

Contingut suprimit Contingut afegit
eu
Etiqueta: editor de codi 2017
m neteja i estandardització de codi
 
Línia 8:
== 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.
 
Línia 25:
 
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:
Línia 46:
</pre>
 
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 ==
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.