DTD para validar XML y HTML

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.

DTD ("Parcial") para HTML html.dtd

<?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.

Documento XML datos.xml

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

Menú Curso

XML y sus Orígenes

Manipulación y Proceso de XML

DOM, SAX y JDOM

Namespaces, Schemas y DTD's

XSL: XSLT, XPath y TraX

XMLRPC y SOAP (Web Services)

Diseño con XMLRPC

Diseño con SOAP .

Apéndice "A" (Procesando XML con parsers).

Apéndice "B" (Validando XML con Schemas y DTD's).

Apéndice "C" (XSL: XPath y "XSL Stylesheets").

Apéndice "D" (XMLRPC: Diseño).

Apéndice "E" (SOAP, WSDL, UDDI y WSIL : Diseño).