Programación en castellano
Inicio > Tutoriales > Internet > XML > SVG y VML > Curso de XML
-Tutoriales

Curso de XML


DTD de artículos

En la elaboración de una DTD podemos diferenciar tres pasos:

  • El proceso de abstracción de los elementos que forman un tipo de documento y las relaciones que existen entre ellos.
  • Plasmación de este proceso de abstracción en una DTD.
  • Validación de la DTD y verificación práctica de que se ajusta a nuestras necesidades.

Estructura lógica del tipo de documento artículo

La primera parte es sin duda alguna la más complicada y posiblemente la más importante. Es el momento en el cual vamos a estructurar la información que luego representaremos mediante una DTD. No es un problema de conocer el XML o de saber las DTD. Es sobretodo una cuestión de tener clara la información con la que vamos a trabajar, qué elementos la componen,qué características tienen y cómo vamos a organizarla.

Un artículo a un nivel general está formado por dos partes bien diferenciadas: el contenido del artículo y la metainformación sobre el artículo.

Estructura general de una articulo

La metainformación no es más que la información relativa al contenido del documento, como su título, autor, tamaño del archivo, fecha de creación, historial de los cambios, palabras clave, y demás información asociada.

En nuestro caso vamos a utilizar:

  • título
  • autor
  • palabras clave
  • resumen
Estructura general de metainfo

En esta parte podríamos poner mucha más información, toda la que creamos que nos puede hacer falta. Toda esta información nos puede resultar útil, por ejemplo,para la búsqueda y gestión de estos documentos.

En la parte de contenido tendremos que identificar los elementos que nos permitan representar esos contenidos. Si tomamos como ejemplo este tutorial, que puede considerarse como una generalización de nuestro documento artículo, observamos que la información está organizada en bloques de texto (párrafos, listas, tablas) e imágenes. Y que además estos bloques están organizados estructuralmente en capítulos y subcapítulos Esta estructura para nuestros artículos será igual: representaremos la información mediante elementos párrafos, listas, imágenes, etc. y la organizaremos en subcapitulo1es y subsubcapitulo1es.

En nuestro caso utilizaremos exactamente los siguientes elementos:

  • párrafos
  • listas, tanto ordenadas como desordenadas
  • imágenes
  • código, ya que nuestros artículos (al menos en el ejemplo que desarrollamos) serán sobre temas informáticos.
Elementos de bloque

Y estructuralmente toda la información anterior podrá estar organizada en subcapitulo1es.

Estructura contenido

También debemos tener en cuenta qué elementos pueden existir dentro de esos bloques de texto. Podríamos querer destacar parte del contenido del texto, porque es el nombre de una función o el nombre de un autor; podríamos querer poner referencias a otro documentos u otros direcciones, etc.

En nuestro caso, utilizaremos exactamente los siguientes:

  • Un elemento mediante el cual destacaremos parte del contenido
  • Enlaces
Elementos en linea

Hasta el momento ya hemos visto qué elementos pueden formar nuestro documento artículo y cómo están organizados. Pero nos falta por ver un detalle muy importante: que propiedades tienen.

Por ejemplo, tenemos el elemento imagen mediante el cual nos será posible incluir imágenes en nuestro artículo. Algunas propiedades posibles son: el fichero en el que se encuentra la imagen, qué dimensiones tendrá, cuál será su tamaño, etc.

Nuestro ejemplo será sencillo, y los únicos elementos que tendrán propiedades serán los elementos enlace e imagen.

  • El enlace tendrá una propiedad mediante la cual indicaremos la ubicación del recurso destino y otra mediante la cual describiremos el recurso.
  • La imagen tendrá una propiedad mediante la cual indicaremos la ubicación del fichero que la contiene y otra mediante la cual describiremos el recurso.

. Representación en una DTD de esta estructura lógica

Ya tenemos una representación abstracta de la estructura de un tipo de documento artículo y ,por tanto,ya estamos en condiciones de escribir una DTD que represente dicha estructura.

Lo primero es elegir el nombre del elemento raíz, que denominaremos articulo. Por tanto, el documento XML tendrá el siguiente aspecto:


<articulo>
.......
</articulo>

y en nuestra DTD:


<!ELEMENT articulo (metainfo, cuerpo)>

donde indicaremos que está formado por los elementos metainfo y cuerpo obligatorios y en ese orden.

El elemento metainfo estará formado por los elementos titulo, autor, pclave, y resumen.


<!ELEMENT metainfo (titulo, autor, pclaves?, resumen?)>

Donde indicaremos que los elementos pclaves y resumen son optativos.

El contenido del elemento titulo sólo puede ser texto:


<!ELEMENT titulo (#PCDATA)>

El contenido del elemento autor serán los elementos nombre, email, url. De esta manera permitimos incluir más información sobre el autor del artículo,


<!ELEMENT autor (nombre, email?, url?)>

aunque solo es obligatorio el elemento nombre. El contenido de estos tres elementos es simplemente texto:


<!ELEMENT nombre (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT url (#PCDATA)>

El elemento pclaves, que no es obligatorio, tiene como contenido sólo texto:


<!ELEMENT pclaves (#PCDATA)>

Y el elemento resumen, que tampoco es obligatorio, está formado sólo por texto:


<!ELEMENT resumen (#PCDATA)>

A continuación pasamos a describir los elementos del elemento contenido, que identificaremos mediante la etiqueta cuerpo.

El elemento cuerpo empezará por un elemento titulo seguido de subcapitulo1es, aunque puede ser que el autor comience el artículo por alguno de los elementos que hemos englobado como bloques de texto e imágenes.


<!ELEMENT cuerpo (titulo, (para | imagen | lds | lo | codigo)* ,subcapitulo1*)>

Mediante el elemento para representaremos los párrafos.


<!ELEMENT para (#PCDATA|destacar|enlace)*>

Su contenido, además de texto, es el elemento destacar y enlace.

Y el elemento imagen:


<!ELEMENT imagen EMPTY>
<!ATTLIST imagen
   direccion CDATA #REQUIRED>
	descripcion CDATA #REQUIRED>

Será un elemento vacio. Sus características están determinadas en el valor de sus atributos:

  • direccion, donde indicaremos la localización del fichero que contiene la imagen. Es obligatorio.
  • descripcion, donde escribiremos una descripción de la imagen. Es obligatorio.

Mediante el elemento lds indicamos las listas desordenadas las cuales pueden estar formadas por los elementos de entrada de lista o por otras listas:


<!ELEMENT lds (il, (il | lds | lo)*)>

Y el elemento lo indicará listas ordenadas:


<!ELMENT lo (il, (il | lds |lo)*)>

Mediante el elemento il indicamos los elementos que forman la lista, y cuyo contenido es el siguiente:


<!ELEMENT il (#PCDATA|destacar|enlace)*>

Mediante el elemento codigo indicamos que lo que vamos a escribir es código.

<!ELEMENT codigo (#PCDATA)>

Su contenido sólo es texto.

El artículo podrá estar dividido en subcapitulo1es. Vamos a limitar las subcapitulo1es posibles a dos niveles. Las de primer nivel las identificaremos mediante el elemento subcapitulo1 y las de segundo nivel mediante el elemento subcapitulo11. Aunque esta estructuración no es obligatoria.

<!ELEMENT cuerpo (titulo, (para | imagen | lds | lo | codigo)* ,subcapitulo1*)>
<!ELEMENT subcapitulo1 
          (titulo, (para | imagen | lds | lo | codigo)*, subcapitulo11*)>
<!ELEMENT subcapitulo11 (titulo, (para | imagen | lds | lo | codigo)*)>

Las subcapitulo1es deben comenzar por el elemento titulo y van a estar identificadas de forma unívoca por un atributo id.

<!ATTLIST subcapitulo1
	id ID #REQUIRED>

<!ELEMENT subcapitulo11 (titulo, (para | imagen | lds | lo | codigo)*)>
<!ATTLIST subcapitulo11
	id ID #REQUIRED

Hay que tener claro que cuanto más identificados tengamos los elementos y más información tengamos sobre cada uno ,mejor;.más acciones podremos realizar posteriormente sobre el documento. En nuestro caso,por sencillez, sólo identificaremos mediante un atributo de tipo ID las subcapitulo1es. Pero en los próximos capítulos, que veremos la DTD para escribirlas FAQS, o la DTD del WML,comprobaremos quw como todos los elementos están identificados mediante el atributo de ID.

Y, por último, sólo nos faltan definir los elementos en línea que como ya hemos visto aparecen en los elementos para y il.

Mediante el elemento destacar, resaltaremos texto.

<!ELEMENT destacar (#PCDATA)>

Su contenido sólo puede ser texto.

Mediante el elemento enlace podremos hacer referencia a un recurso externo.

<!ELEMENT enlace (#PCDATA)>

Su contenido sólo puede ser texto y será precisamente el ancla del enlace.

Sus atributos coinciden con las del elemento imagen, teniendo la misma funcionalidad.

<!ATTLIST imagen
   direccion CDATA #REQUIRED>
	descripcion CDATA #REQUIRED>

La DTD completa la podéis encontrar en el archivo articulo.dtd

. Ejercicio: Ejemplo mínimo de XML para la DTD artículo.

Escribir el mínimo XML válido que se ajuste a la DTD que nos define la estructura de la DTD para escribir artículos.

Solución:

Simplemente tenemos que fijarnos en los elementos que hemos indicando que son obligatorios.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE articulo SYSTEM "articulo.dtd">
<articulo>
<metainfo>
   <titulo>Documento XML mínimo para la DTD de artículos</titulo>
	<autor>
		<nombre>Joaquin Bravo Montero</nombre>
	</autor>
</metainfo>
<cuerpo>
   <titulo>Documento XML mínimo para la DTD de artículos</titulo>
</cuerpo>
</articulo>

Y para verificarlo, suponiendo que a dicho fichero lo hemos llamado minimoarticulo.xml y que el archivo articulo.dtd se encuentra en el mismo directorio:

pxml minimoarticulo.xml

minimoarticulo.xml

. Ejercicio: Artículo en XML

Escribir en XML un artículo sobre un tema que te interese.

Solución:

En el artículo se describe cómo generar WML desde un Servlet.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados