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 < 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>
<!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