Puesto que las raíces de DTD's ("Data Type Definition Documents") se encuentran en SGML en este ejemplo se describe la utilización de un derivado de SGML: HTML.
La descripción que continua es solo una parte del DTD que conforma a HTML, el DTD completo se encuentra en http://www.w3.org/TR/REC-html40 .
Cabe mencionarse que cuando es utilizado este DTD para validar documentos XML y se encuentra de acuerdo con éste, al documento XML se le denomina: XHTML.
<?xml encoding="UTF-8"?> Esta primera linea es necesaria únicamente si el DTD será utilizado para validar XML. <!ELEMENT html (head, body)> Este renglón indica que el elemento html debe contener los elementos head y body anidados en su declaración. <!ELEMENT head (title,style*)> Aquí se indica que el elemento head debe contener el elemento title y puede contener cero o más (*) elementos style. <!ELEMENT title (#PCDATA)> El elemento title contiene datos puros (crudos) , también conocidos por "Parsed Character Data" <!ELEMENT style (#PCDATA)> Aquí se indica que el elemento style <!ATTLIST style además de contener datos puros(#PCDATA) type CDATA #IMPLIED puede contener el atributo type > el cual contiene caracteres simples ( CDATA ); el término #IMPLIED indica que este atributo es opcional Los elementos ENTITY en un DTD proporcionan una forma de agrupar <!ENTITY % content "p|h1"> diversos ELEMENT's y referirse a ellos através de un nombre <!ENTITY % inline "#PCDATA|a|br"> corto, en este caso se definen dos ENTITY's llamados content e inline que serán utilizados en las siguientes declaraciones. Se indica que dentro del elemento a pueden anidarse los elementos <!ELEMENT a (#PCDATA|b|br)*> b, br y datos puros(PCDATA); <!ATTLIST a además se debe declarar el href CDATA #REQUIRED atributo href con caracteres name CDATA #IMPLIED simples, mientras el atributo > target es opcional. <!ELEMENT br EMPTY> El elemento br no puede contener ni atributos ni elementos anidados. Dentro de los elementos p y h1 pueden anidarse cualquier numero(*) <!ELEMENT p (%inline;)*> de elementos que se encuentren <!ELEMENT h1 (%inline;)*> en el ENTITY llamado inline. Finalmente, se indica que en el <!ELEMENT body (%content;)+> elemento body puede anidarse uno <!ATTLIST body o más (+) elementos del ENTITY bgcolor CDATA #IMPLIED content, además existe la > posibilidad de definir el atributo bgcolor que contiene caracteres simples. |
El siguiente fragmento cumple con los requerimientos del DTD anterior.
<?xml version="1.0" encoding="UTF-8"?> <html> <head> <title>Página Utilizando DTD</title> </head> <body bgcolor="FFFFFF"> <h1> Este es un titulo con un <a href="http://www.osmosislatina.com"> link hacia Osmosislatina </a> </h1> <p> Eso es todo </p> </body> </html> |
template
, XPath, Condicionales y Ciclos en XSL.