Declaración
En cualquier caso, la declaración de un DTD debe ir en el DOCTYPE (Document Type Declaration).
En este apartado, se mostrarán las tres formas de integrar un DTD en un XML:
- De manera externa.
- De manera interna.
- De manera mixta.
Declaración externa
En la declaración externa se especifica una ubicación externa donde se encuentra el archivo DTD.
La ubicación externa del fichero puede ser:
- Privada: se indica en el DOCTYPE mediante la palabra clave
SYSTEM
. - Pública: el fichero es accesible desde una URL pública. En este caso, se utiliza la palabra clave
PUBLIC
.
Por ejemplo, si el documento es privado, la declaración sería de la siguiente manera:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE email SYSTEM "email.dtd">
<email>
<date>2021-01-20</date>
<to>Tove</to>
<from>Jani</from>
</email>
El fichero email.dtd
debe existir y su contenido podría ser el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT email (date, to, from)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT date (#PCDATA)>
Esta forma permite compartir un documento DTD entre varios ficheros XML, evitando tener que escribir el mismo código continuamente. Por este motivo, es la forma más recomendada.
Declaración interna
En la declaración interna, el contenido del DTD se incluye directamente en el DOCTYPE del documento XML.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE email[
<!ELEMENT email (date, to, from)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
]>
<email>
<date>2021-01-20</date>
<to>Tove</to>
<from>Jani</from>
</email>
Declaración mixta
La declaración mixta consiste en combinar la declaración externa con la interna.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE email SYSTEM "email.dtd" [
<!ELEMENT email (date, to, from)>
]>
<email>
<date>2021-01-20</date>
<to>Tove</to>
<from>Jani</from>
</email>
El fichero email.dtd
debe existir y su contenido podría ser el siguiente:
<!ELEMENT date (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>