En este apartado vamos a escribir una DTD que nos permitir� estructurar y mantener en formato XML nuestras direcciones preferidas.
Para hacernos una idea de los elementos que nos permiten definir una direcci�n podemos dar una vuelta por algunos de los buscadores m�s conocidos y observar qu� informaci�n suelen presentar sobre una direcci�n.
Si por ejemplo visitamos Altavista, observaremos que al presentarnos una direcci�n nos ofrece la siguiente informaci�n:

Por tanto, una direcci�n la podr�amos representar mediante los siguientes elementos:
- T�tulo de la direcci�n
- URL de la direcci�n
- Descripci�n
- Idioma del contenido de la direcci�n.
A los cuales nosotros a�adiremos tambi�n un elemento valoraci�n, que nos permitir� indicar nuestro criterio sobre una direcci�n.
Un borrador de documento XML, mediante el cual representamos una direcci�n, podr�a ser:
<direccion> <titulo>....</titulo> <url>...</url> <descripcion>...</descripcion> <idioma>...</idioma> <valoracion>...</valoracion> </direccion>
Y orden�ndolo un poco:
<direccion idioma="" valoracion=""> <titulo>....</titulo> <url>...</url> <descripcion>...</descripcion> </direccion>
�Ejercicio: Escribir DTD para el elemento direccion.
Escribir una peque�a DTD que se ajuste al XML anterior. Teniendo en cuenta que:
- El contenido de los elementos titulo, url y descripcion:
- S�lo pueden ser texto.
- Tienen que aparecer en ese orden.
- Y el �nico elemento no obligatorio es la descripci�n.
- Los atributo idioma son obligatorios.
- El atributo valoracion s�lo puede tener valores entre 1 y 5 y por defecto su valor es 1.
- El atributo idioma s�lo puede tener los valores esp y ing.
Soluci�n:
La soluci�n es:
<!ELEMENT direccion (titulo, url, descripcion?)> <!ATTLIST direccion valoracion (1|2|3|4|5) "1" idioma (esp|ing) #REQUIRED> <!ELEMENT titulo (#PCDATA)> <!ELEMENT url (#PCDATA)> <!ELEMENT descripcion (#PCDATA)>
Ahora lo que nos falta es crear unos elementos que nos permitan agrupar las direcciones en grupos (al estilo de las carpetas de Windows), de manera que las podamos tener ordenadas en conjuntos y subconjuntos.
Es decir, de una forma similar a �sta:
<bookmark>
<titulo>Mis direcciones favoritas</titulo>
<descripcion>Direcciones favoritas.</descripicion>
....direcciones....
<grupo id="deporte">
<titulo>Deportes</titulo>
....direcciones...
<grupo id="futbol">
<titulo>Futbol</titulo>
.....direcciones...
</grupo>
</grupo>
...direcciones
<bookmark>
�Ejercicio: Escribir la DTD de bookmarks
Ampliar la mini DTD que hemos escrito para una direcci�n, de manera que nos permita agrupar las direcciones en grupos y subgrupos al estilo del Explorador de Windows.
- El elemento ra�z se llamara bookmark y est� formado por los siguiente elementos:
- Un elemento metainfo al estilo de la DTD de art�culos.
- Por un elemento titulo.
- Por un elemento descripcion optativo que s�lo puede aparecer una vez.
- Y a continuaci�n aparecer�n direcciones o grupos de direcciones.
- Las carpetas se llamar�n grupo y podran contener otros elementos grupo y por supuesto direcciones.
- Cada grupo tendr� un atributo id que lo identifique de forma un�voca.
- Su primer elemento es el elemento titulo.
- Luego puede estar formado indistamente por direcciones o grupos de direcciones.
- Como m�nimo, en el caso de que no tenga otro grupo, deber� tener al menos una direcci�n.
Soluci�n:
�sta ser�a la DTD:
<!ELEMENT bookmark (metainfo,titulo,descripcion?,(direccion | grupo)+)> <!-- ...Aqui va desarrollado el elemento metainfo ... --> <!ELEMENT descripcion (#PCDATA)> <!ELEMENT grupo (titulo,(direccion | grupo)+)> <!ATTLIST grupo id ID #REQUIRED> <!ELEMENT direccion (titulo, url, descripcion?)> <!ATTLIST direccion valoracion (1|2|3|4|5) "1" idioma (esp|ing) #REQUIRED> <!ELEMENT url (#PCDATA)>
�M�nimo XML para la DTD de bookmarks
Escribir el documento XML m�nimo que se ajuste a la DTD para "bookmarks".
Soluci�n:
S�lo tenemos que fijarnos en los elementos de la DTD que sean obligatorios.
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE bookmark SYSTEM "bookmark.dtd"> <bookmark> <metainfo> <titulo>Mis direcciones favoritas</titulo> <autor> <nombre>Joaquin Bravo Montero</nombre> </autor> </metainfo> <titulo>Mis direcciones favoritas</titulo> <direccion idioma="esp"> <titulo>Programacion en castellano</titulo> <url>http://www.programacion.net</url> </direccion> </bookmark>
NOTA: Visualizar el documento XML, por ejemplo en el IE5 y observar qu� pasa con el atributo valoracion.
�Bookmark en XML sobre el tema seleccionado.
Escribir en XML un documento bookmark sobre el tema seleccionado.
Soluci�n:
En el
bookmark se recogen interesantes direcciones sobre WML y WAP.