Una definición de tipo de
documento o DTD (siglas en inglés de document type definition)
es una descripción de estructura y sintaxis de un documento XML o SGML. Su
función básica es la descripción de la estructura de datos, para usar una
estructura común y mantener la consistencia entre todos los documentos que
utilicen la misma DTD.
De esta forma, dichos documentos pueden ser validados,
conocen la estructura de los elementos y la descripción de los datos que trae
consigo cada documento, y pueden además compartir la misma descripción y forma
de validación dentro de un grupo de trabajo que usa el mismo tipo de
información.
¿Qué describe una DTD?
Las DTD se emplean generalmente para determinar la
estructura de un documento mediante etiquetas (en inglés tags) XML o SGML. Una DTD
describe:
- Elementos: indican qué
etiquetas son permitidas y el contenido de dichas etiquetas.
- Estructura: indica el
orden en que van las etiquetas en el documento.
- Anidamiento: indica qué
etiquetas van dentro de otras.
Ejemplo
Un ejemplo de una DTD XML muy simple, para describir una lista de personas:
< !ELEMENT lista_de_personas (persona*)>
< !ELEMENT persona (nombre, fechanacimiento?, sexo?, numeroseguridadsocial?)>
< !ELEMENT nombre (#PCDATA) >
< !ELEMENT fechanacimiento (#PCDATA) >
< !ELEMENT sexo (#PCDATA) >
< !ELEMENT numeroseguridadsocial (#PCDATA)>
Un ejemplo de un fichero XML que hace uso de esta DTD:
<?xml version="1.0"
encoding="ISO-8859-1"?>
<!DOCTYPE lista_de_personas SYSTEM
"ejemplo.dtd">
<lista_de_personas>
<persona>
<nombre>José García</nombre>
<fechanacimiento>25/04/1984</fechanacimiento>
<sexo>Varón</sexo>
</persona>
</lista_de_personas>
Limitaciones de la DTD
Un esquema basado en una DTD tiene bastantes
limitaciones. Una DTD no permite definir elementos locales que
sólo sean válidos dentro de otros elementos. Por
ejemplo, si queremos tener un elemento <Manager> que describa
al gestor de una compañía o al de unaelegación, y
la definición de Manager es diferente en cada caso, con una DTD
tendríamos
que crear los elementos “CompanyManager” y “DelegationManager” para evitar el
conflicto de nombres.
Es decir, la
falta de jerarquía en una DTD obliga a introducir una jerarquía a base de
guiones o puntos en el espacio de nombres
(Name Space). En una DTD es poco flexible la
definición de elementos con contenido mixto, es decir, que incluyan
otros elementos además de texto. Además no es
posible indicar a qué tipo de ato (número, fecha, moneda) ha de
corresponder
un atributo o el texto de un elemento.
la necesidad de superar estas
limitaciones propicia la aparición de otros
lenguajes de esquema como XMLSchema, herramientas más completas de
descripción que son una alternativa a las DTD.
No hay comentarios:
Publicar un comentario