El API JAXP

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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO