No es un bug, es una característica no documentada

17/4/15

Lenguaje de marcas. DTD

14:25 Posted by Inazio , No comments
El DTD (Definición de Tipo de Documento) es un archivo que se usa para especificar como está estructurado un documento XML. Consultar DTD en W3schools aquí.

Una estructura de un DTD básico sería la siguiente:

<!DOCTYPE nota[
     <!ELEMENT nota(de, para, encabezamiento, texto)>
     <!ELEMENT de(#PCDATA)>
     <!ELEMENT para(#PCDATA)>
     <!ELEMENT encabezamiento(#PCDATA)>
     <!ELEMENT texto(#PCDATA)>

]>

#PCDATA significa datos de caracteres parseados. En un campo de texto, es el texto que hay entre dos etiquetas. Será leido por un lector y se examinará por si tiene entidades


Así si lo reconoce lo pondrá en forma de entidad, si no de otra forma entendería que, por ejemplo en el caso de que hubiera un libro llamado 2 < 3 entendería que se trata de un elemento hijo.

Asímismo también tenemos #CDATA, en el que le diremos que el lector cojerá todo y lo tratará como una cadena de caracteres. En nuestro caso del libro, leería 2 &lt 3.

Vamos a realizar el DTD del XML librería que está a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<librería>
     <libro categoría="Cocina">
         <título idioma="en">Everyday Italian</título>
         <autor>Giada De Laurentiis</autor>
         <edición>2005</edición>
         <precio>30.00</precio>
     </libro>
     <libro categoría="Infantil">
         <título idioma="en">Harry Potter</título>
         <autor>J K. Rowling</autor>
         <edición>2005</edición>
         <precio>29.99</precio> 
     </libro>
     <libro categoría="Desarrollo Web">
         <título idioma="en">Learning XML</título> 
         <autor>Erik T. Ray</autor>
         <edición>2003</edición>
         <precio>39.95</precio>
     </libro>
</librería>


El DTDT sería el siguiente:

<!DOCTYPE librería[
     <!-- Puede tener más de un libro -->
     <!ELEMENT librería(libro+)>
     <!-- Un libro solo tendrá un titulo, autor, edicion y precio -->
     <!ELEMENT libro(titulo, autor, edicion, precio)>
     <!ELEMENT titulo(#PCDATA)>
     <!ELEMENT autor(#PCDATA)>
     <!ELEMENT edicion(#PCDATA)>
     <!ELEMENT precio(#PCDATA)>
     <!-- Definir los atributos -->
     <!ATTLIST libro categoría CDATA>
     <!-- Obligo a insertar categoría idioma -->
     <!ATT titulo idioma CDATA #REQUIRED>

]>

0 comments:

Publicar un comentario