Hola en esta cuarta parte del curso hablaremos sobre los DTD teniendo su origen en SGML es una de las formas de definir la estructura de un documento XML para que cuando un programa lo lea se pueda saber la estructura (actualmente se usan más otras formas de hecho en python veremos que al menos lo que hice no requiere un DTD)
Esto es un ejemplo de DTD:
<!ELEMENT billetes(billete*)>
<!ELEMENT billete(nombre,horario,tren)>
<!ATTLIST billete id #ID #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT horario (#PCDATA)>
<!ELEMENT tren (vagon,fila,asiento)
<!ELEMENT vagon (#PCDATA)>
<!ELEMENT fila (#PCDATA)>
<!ELEMENT asiento (#PCDATA)>
Como podeis ver el DTD tiene primero la sentencia <!ELEMENT nombre_del_elemento (#PCDATA o otro elemento)
esto nos permite definir un elemento lo que hay entre parentesis es el tipo de dato del elemento o el nombre de otro elemento en el caso de que se desee otro elemento ahi, usando ATTLIST nombreElemento nombreAtributo
definimos los atributos posteriormente le añadimos el tipo de dato CDATA
o usar un enum para añadir una serie de valores de datos concretos por ejemplo <!ATTLIST semaforo estado (verde|amarillo|rojo) ""
además podemos poner entre comillas un valor por defecto
Tipos de datos para los atributos:
- CDATA: Es el tipo texto podemos introducir cualquier tipo de texot
- ID: No puede empezar por numeros llevar espacios es un identificador y debe ser unico ya que es un ID
- NMTOKEN: Los NMTOKEN no pueden tener espacios y solo pueden llevar coma, dos puntos, guiones,guiones bajos,letras, numeros y practicamente nada más
- NMTOKENS son como una lista de NMTOKEN divididos por espacios
Los tipos de datos de los Elementos son principalmente:
- EMPTY: Es decir que el elemento esta vacio aunque todavia puede contener atributos ya que esto se refiere al contenido de los elementos
- ANY: Se puede introducir cualquier tipo de dato
- PCDATA: Es decir texto
Ademas de todo eso se pueden usar simbolos para definir la cantidad de un elemento que debe haber si no hay signos solo puede haber un ejemplar de ese elemento pero si hay alguno de los siguientes signos