Documento XML asociado a una DTD interna
La sintaxis para escribir una DTD interna es:
<!DOCTYPE elemento-raíz [ declaraciones ]>
EJEMPLO En un documento XML se quiere guardar una lista de marcadores de páginas web, almacenando de cada uno de ellos su nombre, una descripción y su URL. Para ello, se puede escribir, por ejemplo, el archivo "marcadores-con-dtd-interna.xml" siguiente, que contiene una DTD interna:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE marcadores [
<!ELEMENT marcadores (pagina)*>
<!ELEMENT pagina (nombre, descripcion, url)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT url (#PCDATA)>
]>
<marcadores>
<pagina>
<nombre>Abrirllave</nombre>
<descripcion>Tutoriales de informática.</descripcion>
<url>http://www.abrirllave.com/</url>
</pagina>
<pagina>
<nombre>Wikipedia</nombre>
<descripcion>La enciclopedia libre.</descripcion>
<url>http://www.wikipedia.org/</url>
</pagina>
<pagina>
<nombre>W3C</nombre>
<descripcion>World Wide Web Consortium.</descripcion>
<url>http://www.w3.org/</url>
</pagina>
</marcadores>
- Obsérvese que, en la DTD se ha indicado que marcadores es el elemento raíz del documento XML, el cual puede contener cero o más páginas. Para indicar esto último, se ha escrito: (pagina)*
- Escribiendo pagina (nombre, descripcion, url) se especifica que, cada elemento "pagina" tiene que contener tres elementos (hijos): "nombre", "descripcion" y "url".
- Con #PCDATA (Parsed Character Data) escrito entre paréntesis "()" se indica que los elementos "nombre", "descripcion" y "url" pueden contener texto (cadenas de caracteres) analizable por un procesador XML.
Nota: al nombrar a los elementos "pagina" y "descripcion" no se han utilizado los caracteres (á) y (ó), respectivamente, para evitar posibles incompatibilidades con programas que puedan no reconocerlos.
Visualización del archivo "marcadores-con-dtd-interna.xml" en un navegador web
Al ver el archivo "marcadores-con-dtd-interna.xml" en un navegador web, como por ejemplo Google Chrome, se visualizará algo similar a:
Como se puede observar, la DTD no se muestra en el navegador.
Por otro lado, para comprobar que el documento XML escrito en este ejemplo es válido se pueden utilizar distintos programas. Por ejemplo, véase cómo validar un documento XML asociado a una DTD con XML Copy Editor.