Programación en castellano
-Tutoriales

El API JAXP


Diseñar una Estructura de Datos XML

Esta página cubre algunas cosas que podemos usar cuando tomemos decisiones de diseño XML.

. Ahorrarnos Algún Trabajo

Siempre que sea posible, usaremos un DTD existente. Es mucho más sencillo ignorar las cosas que no necesitamos que diseñar todo desde el principio. Además, al usar un DTD estándard hace posible el intercambio de datos, y puede ser posible usar datos en herramientas desarrolladas por otros.

Por eso, si existe un estándard de la industria, debemos considerar referenciar ese DTD con un parámetro de entidad externo. Un lugar para buscar DTDs estándards de la industria es el repositorio creado por la "Organization for the Advancement of Structured Information Standards (OASIS)" en http://www.XML.org. Otro lugar para chequear es "CommerceOne's XML Exchange" en http://www.xmlx.com, que se describe como "un repositorio para crear y compartir definiciones de tipos de documentos".

. Atributos y Elementos

Uno de los problemas que encontraremos más frecuentemente mientras diseñamos una estructura XML es modelar un ítem de dato dado como un subelemento o como un atributo de un elemento existente. Por ejemplo, podríamos modelar el título de un deslizamiento como.

<slide>
  <title>This is the title</title>
</slide>

o como:

<slide title="This is the title">...</slide>

En algunos casos, las diferentes características de atributos y elementos hacen fácil la elección. Consideremos primero estos casos, y luego veremos casos donde la elección es más ambigua.

. Elección Forzada

Algunas veces, la elección entre un atributo y un elemento se ve forzada por la naturaleza de los atributos y los elementos. Veamos algunas de estas consideraciones.

El dato contiene subestructuras
En este caso, el ítem de datos debe ser modelado como un elemento. No puede ser modelado como un atributo, porque los atributos sólo toman strings sencillos. Por eso si el título puede contener texto enfatizado como este:The <em>Best</em> Choice, entonces puede ser un elemento.

El dato contiene múltiples líneas
Aquí, también tiene sentido usar un elemento. Los atributos necesitan ser sencillos, strings cortos o de otro modo no se pueden leer.

El dato cambia frecuentemente
Cuando el dato va a ser modificado frecuentemente, especialmente por el usuario final, tiene sentido modelarlo como un elemento. Los editores de XML tienden a hacer muy sencillo encontrar y modificar elementos de datos. Los atributos pueden ser más difíciles de conseguir, y por lo tanto más difíciles de modificar.

El dato es un string pequeño que raramente cambia
Este es el dato que puede ser modelado como un atributo. Sin embargo, sólo porque pueda no quiere decir que se deba. Chequearemos la siguiente sección "Elecciones de estilo" para asegurarnos.

El dato está confinado a un pequeño número de elecciones fijas
Esta es una de las veces en que realmente tiene sentido usar un atributo. Usando el DTD, puede prevenirse que el atributo tome cualquier valor que no está permitido. Un editor XML puede incluso proporcionar estas elecciones en una lista desplegable. El autor del documento XML no puede usar ningún valor que no sea parte del DTD. Si en el futuro se quiere usar un nuevo valor, se tendrá que modificar el DTD antes de que el autor del documento pueda hacer uso de él.

. Elecciones de Estilo

Frecuentemente las elecciones no son tan claras como hemos visto arriba. Cuando una elección no está forzada, necesitamos un sentido de "estilo" para guiarnos. La pregunta a responder es, qué hace un buen estilo XML y por qué.

Desafortunadamente, definir un sentido de estilo para XML es tan nebuloso como definir "estilo" cuando se habla de arte o música. Sin embargo, tenemos unas cuantas formas de aproximarnos. El objetivo de esta sección es darnos algunos pensamientos útiles sobre el sujeto "Estilo XML".

Visibilidad
Primero usaremos el concepto de visibilidad de los elementos XML y los atributos. Si se espera que el dato sea mostrado al usuario final - debe ser modelado como un elemento. Por otro lado, si la información guía el procesamiento XML pero nunca será mostrada, podría ser mejor modelarlo como un atributo.

Proveedor/Consumidor
Otra forma de pensar en la visibilidad es preguntarnos quién es el consumidor y/o productor de la información. También podemos pensar en términos de quién o qué está procesando la información.

Contenedor contra Contenido
Otra forma de pensar entre elementos y atributos es pensar en un elemento como un contenedor. Por analogía, los contenidos del contenedor corresponden a los modelos de datos XML como elementos. Por otro lado, las características del contenedor corresponden a los modelos de datos XML como atributos. Un buen estilo XML será, de una forma consistente, la separación de los contenidos de un contenedor de sus características.

. Normalizar Datos

En el tutorial de SAX, la sección Definir Atributos y Entidades en el DTD muestra como crear una entidad externa que podemos referenciar en un documento XML. Como una entidad tiene todas las ventajas de una rutina modularizada -- cambiar una copia afecta a todos los documentos que la referencian. El proceso de eliminar redundancias es conocido como normalización, por eso definir entidades es una buena forma de normalizar nuestros datos.

En un fichero HTML, la única forma de conseguir está clase de modularidad es con enlaces HTML -- pero por supuesto entonces el documento esta fragmentado, y no completo. Por otro lado, las entidades XML, no sufren dicha fragmentación. La entidad referenciada actúa como una macro -- el contenido de la entidad es expandido en su lugar, produciendo un documento completo. Y cuando la entidad está definida como un fichero externo, múltiples documentos pueden referenciarlo.

Las consideraciones para definir una referencia de entidad, son prácticamente las mismas que usamos para modularizar el código del programa.

  1. Si nos encontramos escribiendo lo mismo más de una vez, debemos pensar en una entidad. Que nos permita escribirla en un lugar y referenciarla en muchos lugares.

  2. Si la información va a cambiar, especialmente si se usa en más de un lugar, debemos pensar en una entidad.

  3. Si la entidad nunca será referenciada desde fuera del fichero actual, la definiremos en el local_subset del DTD del documento, como definiriamos un método o una clase interna en un programa.

  4. Si la entidad va a ser referenciada desde múltiples documentos, debemos definirla como una entidad externa, de la misma forma que definiríamos una clase externa.

Las entidades externas producen XML modular que es más pequeño, más fácil de actualizar y de mantener. También pueden resultar documentos más difíciles de visualizar.

. Normalizar DTDs

También podemos normalizar nuestras declaraciones DTD fabricando externamente piezas comunes y referenciándolas con un parámetro de entidad. Este proceso se describe en la sección de SAX en Definir Parámetros de Entidad.

También podemos configurar DTDs condicionales, como se describe en la sección Secciones Condicionales del tutor de SAX. Si el número y tamaño de las secciones condicionales es relativamente pequeño con respecto al tamaño del DTD completo, puede permitirnos una "sola fuente" un DTD que podemos usar para múltiples propósitos. Si el número de secciones condicionales crece, el resultado puede ser un documento tan complejo que sea difícil de editar.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados