Documentos XML válidos. Las DTD
En el anterior capítulo estudiamos las reglas a seguir para poder crear documentos XML bien formados. En este capítulo avanzamos un paso más y veremos qué son y qué tenemos que hacer para crear documentos XML válidos
Un documento XML válido es un objeto de texto que,además de ser un documento XML bien formado, sigue las reglas de una DTD específica.
Pero veamos qué es exactamente una DTD.
¿Que es una DTD?
Una DTD (Document Type Definition) es un conjunto de reglas para definir un documento XML y etiquetarlo adecuadamente. En una DTD definimos los "componentes" de un documento XML y cómo se relacionan y estructuran.
Es importante tener en cuenta que una DTD no es más que una interpretación de un texto. Si tenemos un conjunto de documentos de texto que queremos convertir en documentos XML, en primer lugar debemos abstraer y generalizar los elementos de que se componen y cómo están estructurados. La declaración práctica de estos elementos y las reglas que los componen será la DTD de ese tipo de documentos. Evidentemente, esta abstracción y la forma de implementarla depende del autor que la elabore y,por tanto, es subjetiva, por lo que es posible que para un mismo documento se elaboren diferentes DTD.
La siguiente porción de texto es una DTD:
Ejemplo de DTD para HTML simple
<!ELEMENT mihtml (c1 | parrafo)*>
<!ELEMENT c1 (#PCDATA)>
<!ELEMENT parrafo (#PCDATA|negrita)*>
<!ELEMENT negrita (#PCDATA)>
Como podemos observar, en la práctica no es más que un conjunto de declaraciones.
Cada declaración empieza con la cadena "<!" y termina con la cadena "mayor que" ">". A continuación del símbolo de admiración viene una de las palabras reservadas del XML para especificar el tipo de objeto que se quiere definir, seguido del nombre del objeto declarado y los parámetros asociados.
<!objeto_declarado nombre_de_objeto parametros_asociados>
El XML soporta cinco tipos de declaraciones:
- DOCTYPE
- ELEMENT
- ATTLIST
- ENTITY
- NOTATION
de las cuales DOCTYPE, ELEMENT y ATTLIST serán estudiadas con más detalle en este
capítulo.