(Anterior)
Namespaces, Schemas y DTD's
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>
|