El API JAXP

XML (eXtensible Markup Language) es un conjunto de reglas de s�ntaxis y gu�as para definir lenguajes de texto basados en marcas. Los lenguajes XML tienen un gran n�mero de usos, incluyendo.

  • El intercambio de informaci�n
  • La definici�n de tipos de documentos
  • La especificaci�n de mensajes

La informaci�n que se expresa en un formato estructurado basado en texto puede ser f�cilmente transmitida, trasformada e interpretada por entidades que entiendan la estructura. De esta forma XML nos trae los mismos beneficios multi-plataforma para el intercambio de informaci�n que el lenguaje de programaci�n Java tiene para el procesamiento.

La tecnolog�a JavaServer Pages (JSP) proporciona especificaci�n y servicios de documentos que combinan elementos de lenguaje de marcas est�ticos y elementos creados din�micamente mediante objetos del lenguaje Java. Las p�ginas JSP se ejecutan como Servlets Java, normalmente en el contexto de un servidor Web donde generan documentos de respuesta dependientes del contenido usando datos almacenados en bases de datos y en otros objetos de aplicaci�n basados en servidor.

Los servidores de aplicaciones y las herramientas de desarrollo que soportan la tecnolog�a JSP est�n disponibles a trav�s de muchos vendedores (inlcuyendo grupos de c�digo abierto) para un �mplio rango de plataformas hardware y software.

La tecnolog�a JSP proporciona un n�mero de capacidades que son ideales para trabajar con XML. Las p�ginas JSP pueden contener cualquier tipo de datos basados en texto, por eso son correctas para generar documentos que contienen marcas XML. Las p�ginas JSP tambi�n pueden usar todo el poder de la plataforma Java para acceder a objetos del lenguaje para analizar y transformar mensajes XML en documentos. En particular, como parte del entorno Java, las p�ginas JSP pueden usar objetos que utilicen los nuevos APIs Java para procesar datos XML. Finalmente la tecnolog�a JSP proporciona un mecanismo de abstracci�n para encapsular la funcionalidad y as� facilitar su uso dentro de una p�gina JSP.

Est� p�gina muestra c�mo las p�ginas JSP pueden.

Esta p�gina asume que est�s familiarizado con la tecnolog�a JSP, incluyendo los componentes JavaBeans y las librer�as de etiquetas personalizadas.

.�Usar Fuentes de datos XML en P�ginas JSP

Es sencillo usar m�ltiple fuentes de datos, incluyendo fuentes XML, en una p�gina JSP; la siguiente figura ilustra la forma est�ndard de hacer esto. Una p�gina conecta con un fuente de datos a trav�s de un objeto del lado del servidor, transforma la informaci�n en obstracciones de datos y los muestra usando elementos JSP.

Consideremos la siguiente representaci�n XML de un inventario de libros.

<?xml version="1.0" encoding="ISO-8859-1"?>
<books>
<book isbn="123">
<title>Web Servers for Fun and Profit</title>
<quantity>10</quantity>
<price>$17.95</price>
</book>
<book isbn="456">
<title>Web Programming for Mobile Devices</title>
<quantity>2</quantity>
<price>$38.95</price>
</book>
<book isbn="789">
<title>Duke: A Biography of the Java Evangelist</title>
<quantity>25</quantity>
<price>$15.00</price>
</book>
</books>

Hay dos formas en las que podr�amos usar datos XML en una p�gina JSP.

  • Convertir los elementos XML en objetos del lado del servidor y luego extraer las propiedades de los objetos.
  • Invocar una transformaci�n de los datos XML.

.�Convertir XML en Objetos del Lado del Servidor y Extraer las Propiedades del Objeto

En la primera aproximaci�n, los objetos se crearon para representar la informaci�n contenida en el documento XML. Actualmente tenemos que escribir c�digo, usando DOM o SAX y encapsularlo dentro de una etiqueta de usuario o un componente JavaBean, para crear estos objetos. En el futuro, la tecnolog�a "XML/Java Binding" (JSR 31 en el "Java Community Process") automatizar� este proceso porque nos permitir� compilar un esquema XML en una clase Java.

En el siguiente ejemplo, una p�gina JSP recupera datos XML desde dos URLs y usa los datos para generar una p�gina HTML. Observa que la URL puede apuntar a una fuente que genere datos XML de forma din�mica, o a un documento XML est�tico, se puede utilizar la misma t�cnica para generar XML.

La p�gina JSP usa la etiqueta personalizada del analizador para extraer y almacenar los datos XML en dos objetos: un customer y una colecci�n books. Luego la p�gina extrae las propiedas del objeto customer y usa una etiqueta personalizada para iterar a trav�s de la colecci�n y mostrar una tabla que liste las propiedades de los objetos book.

<%@ taglib uri="..." prefix="tl" %>
<html>
<tl:parse id="customer" type="Customer"
xml="XML_Customer_URL"/>
<tl:parse id="saleBooks" type="BookInventory"
xml="XML_Book_Inventory_URL"/>
<head>
<title>Welcome</title>
</head>
<body>
Welcome�
<jsp:getProperty name="customer" property="lastName"/>
�
<jsp:getProperty name="customer" property="firstName"/>
<table border="0" width="50%">
<tl:iterate id ="book" type=�Book�
collection=�<%= saleBooks.getBooks() %>� >
<tr>
<td>
<jsp:getProperty name="book"
property="title"/>
</td>
<td>
<jsp:getProperty name="book"
property="price"/>
</td>
</tr>
</tl:iterate>
</table>
</body>
</html>

Uno de los documentos XML de este ejemplo (los datos del inventario de libros) est� compuesto por fragmentos XML (elementos book). No es realmente necesario analizar el documento completo en memoria para extraer los datos -- podemos analizarlo usando SAX o JDOM, por ejemplo, y extraer los datos de un fragmento cada vez. La siguiente versi�n del ejemplo usa la etiqueta personalizada iterateOnXMLStream para implementar esta alternativa.

<%@ taglib uri="..." prefix="tl" %>
<html>
<tl:parse id="customer" type="Customer"
xml="XML_Customer_URL"/>
<head>
<title>Welcome</title>
<body>
as above ...
<table border="0" width="50%">
<tl:iterateOnXMLStream id="book" type="Book"
xml="XML_Book_Inventory_URL">
<tr>
as above ...
</tr>
</tl:iterateOnXMLStream>
</table>
</body>
</html>

.�Convertir XML Usando una Transformaci�n XSLT

Otra forma de usar datos XML en un p�gina JSP es aplicar una transformaci�n a la fuente de los datos XML, o para extraer los datos, o para crear un nuevo formato. Esta transformaci�n puede hacerse usando varios mecanismos diferentes y accediendo a trav�s de etiquetas personalizadas.

XSLT es un lenguaje transformacional est�ndarizado en el W3C que puede ser usado para transformar datos XML en HTML, PDF u otro formato XML. Por ejemplo, podemos usar XSLT para convertir un documento XML de un formato usado por una compa�ia al formato usado por otra compa�ia.

Para generar el HTML de la p�gina de la secci�n anterior usando est� aproximaci�n necesitamos una hoja de estilo XSL y una forma de aplicar esa hoja de estilos. La hoja de estilos XSL del ejemplo siguiente realiza las transformaciones necesarias para los elementos book y customer. La hoja de estilos genera marcas HTML y extrae los datos de los elementos.

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="books">
<table border="0" width="50%">
<xsl:for-each select="book">
<tr>
<td>
<i><xsl:value-of select="title"/></i>
</td>
<td>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="customer">
<b><xsl:value-of select="first_name"/>�
<xsl:value-of select="last_name"/></b>
</xsl:template>
</xsl:stylesheet>

Para aplicar la hoja de estilo, program�ticamente invocamos a un procesador XSLT desde un scriplet JSP o una etiqueta personalizada. El proyecto de jakarta-taglibs de la "Apache Software Foundation" mantiene una librer�a de etiquetas que contiene varias de ellas para procesar entradas XML y aplicar transformaciones XSLT. La p�gina JSP siguiente invoca a la etiqueta apply de esta librer�a con store.xsl para transformar los datos del cliente y del inventario de libros.

<%@taglib uri="http://jakarta.apache.org/taglibs/xsl-1.0"
prefix="xsltlib" %>
<html>
<head>
<title>Book Inventory</title>
</head>
<body bgcolor="white">
<center>
Welcome�
<xsltlib:apply xml="XML_Customer_URL" xsl="store.xsl"/>!
<p></p>
<font color="red">
On Sale Today ...
</font>
<p></p>
<xsltlib:apply xml="XML_Book_Inventory_URL" xsl="store.xsl"/>
</center>
</body>
</html>

Abajo puedes ver el resultado de la ejecuci�n de esta p�gina.

.�Generar Lenguajes de Marcas usando P�ginas JSP

Para que los servicios basados en Web tengan un uso m�s amplio tienen que conseguir un incremento importante para que sean accesibles desde la m�s amplia variedad de clientes. En los �ltimos a�os han proliferado diferentes tipo de clientes orientados a usuarios para aplicaciones basadas en Web: PDAs, tel�fonos m�viles WAP, y clientes de l�nea de voz terrestre. Con el incremento de las transaciones negocio-a-negocio, los servidores que consumen XML pueden tambi�n ser clientes. El escenario que nosotros visionamos se parecer�a a esto.

Estos clientes hablan los siguientes lenguajes:

Cliente Lenguaje de Marcas
Navegador basado en PC HTML, DHTML y XHTML
PDA WML y XHTML
Tel�fono M�vil WML y XHTML
Tel�fono Terrestre XML de Voz
Servidor Lenguajes XML espec�ficos de la aplicaci�n

El esfuerzo requerido para soportar todos estos clientes empeque�ecer� el esfuerzo que se hizo con las aplicaciones HTML durante los noventa. Afortunadamente las mejores herramientas ya est�n disponibles: la tecnolog�a JSP y XML. Luego describiremos c�mo usar estas herramientas para desarrollar aplicaciones Web multi-lenguaje.

.�Generar XML desde una P�gina JSP

Ya hemos visto como las p�ginas JSP pueden consumir datos XML para generar contenido din�mico. Las p�ginas JSP tambi�n pueden generar datos XML. Recordamos el documento XML presentado al principio de esta p�gina.

<?xml version="1.0" encoding="ISO-8859-1"?>
<books>
<book isbn="123">
<title>Web Servers for Fun and Profit</title>
<quantity>10</quantity>
<price>$17.95</price>
</book>
...
</books>

Una p�gina JSP podr�a generar un respuesta conteniendo este documento para satisfacer una petici�n de negocio-a-negocio sobre los contenidos de un almacen de libros. El ejemplo del consumidor descrito anteriormente tambi�n podr�a usar esta p�gina como fuente de datos XML.

El punto principal para generar XML es que la p�gina JSP seleccione el tipo de contenido de la p�gina de forma apropiada:

<%@ page contentType=�text/xml�%>
... XML document

Con este cambio, las t�cnicas descritas anteriormente para generar contenido HTML pueden usarse para generar XML.

.�Generar Multiples Lenguajes de Marcas

Hay varias aproximaciones para generar multiples lenguajes de marcas desde una aplicaci�n Web.

  • Tuber�a sencilla
  • Tuber�a m�ltiple
  • Combinaci�n de tuber�as

.�Tuber�a Sencilla

En la aproximaci�n de tuber�a sencilla, las p�ginas JSP de la aplicaci�n Web generan marcas espec�ficas de clientes aplicando transformaciones a los datos XML entrantes. Cada tipo de cliente requiere una hoja de estilo diferente y el principal coste de desarrollo est� asociado con la creacci�n y mantenimiento de estas hojas de estilo.

Esta aproximaci�n aplaza la generaci�n de las porciones est�tica y din�mica de una respuesta al momento de ejecuci�n. El coste de la ejecuci�n est� asociado con.

  • Analizar los Datos XML
  • Analizar la hoja de estilos
  • Aplicar la Transformaci�n

Si estamos usando transformaciones XSLT, podremos mejorar el rendimiento de las transformaciones creando una representaci�n binaria (usando un compilador XSLT, por ejemplo, XSLTC) para una hoja de estilo. Sin embargo, esto tambi�n hace el proceso de mantenimiento m�s complejo: cada vez que la presentaci�n cambie, la hoja de estilo debe recompilarse.

Algunas veces las diferencia entre clientes son menores y podr�a no merecer la pena modificar la transformaci�n. Por ejemplo, hay una variedad de ligeras diferencias entre clientes de escritorio basados en navegadores. En algunos casos, uno podr�a querer aprovecharse de las diferencias en vez de generar contenido para el m�nimo com�n denominador. Frecuentemente las diferencias entre estos clientes pueden encapsularse en una etiqueta personalizada que genera diferentes contenidos dependiendo de las propiedades del cliente.

Generar la presentaci�n para clientes con diferentes modelos de interacci�n y flujo de control (por ejemplo, navegadores basados en PC contra tel�fonos WAP) requiere transformaciones muy diferentes. Por ejemplo, un tel�fono m�vil no puede mostrar una tabla que contiene datos de un inventario de libros. En su lugar los datos tendr�an que mostrase en un conjunto de listas anidadas. Soportar dichas transformaciones incrementa tanto los costes de desarrollo como de ejecuci�n.

.�Tuber�as M�ltiples

La aproximaci�n de tuber�as m�ltiples usa un conjunto de p�ginas JSP espec�ficas del cliente para generar la salida.

Compar�ndola con la utilizaci�n de transformaciones XSLT, esta aproximaci�n mantiene el trabajo de creacci�n de contenido est�tico en la fase de desarrollo dejando que la generaci�n de contenido din�mico sea durante la ejecuci�n.

Junto con las creacci�n de p�ginas JSP espec�ficas del cliente, los costes de desarrollo incurren en la creacci�n y mantenimiento de objetos del lado del servidor que representan la abstracci�n de datos de la aplicaci�n. Este paso no es necesario para la aproximaci�n de tuber�a sencilla. De todas formas la aproximaci�n de tuber�as m�ltiples puede ser m�s barata que la de tuber�a sencilla por las siguientes razones.

  • Las abstracciones de datos pueden reutilizarse en diferentes tipos de p�ginas JSP.
  • Las abstracciones de datos cambian mucho menos que la presentaci�n.
  • La ejecuci�n de una p�gina JSP para generar marcas es mucho m�s eficiente que realizar una transformaci�n XSLT para generar la misma marca.

La siguiente tabla sumariza el coste de cada aproximaci�n:

Tuber�a Desarrollo Ejecuci�n
Sencillo El cliente especifica una hoja de estilo Analizar Datos XML
Analizar Hoja de Estilos
Aplicar Transformaci�n
M�ltiple Abstracci�n de Datos
El cliente especifica una p�gina JSP
Analizar Datos XML
Ejemplarizar e inicializar los componentes de abstracci�n
Ejecutar la p�gina JSP

.�Combinaci�n de Tuber�as

Podemos combinar las aproximacioens de tuber�as simples y m�ltiples. Si nuestros clientes usan diferentes lenguajes probablemente deber�amos usar una tuber�a para cada lenguaje. Para generar dialectos de un lenguaje, podr�amos aplicar transformaciones XSLT a la tuber�a de ese lenguaje.

.�Conclusi�n

La tecnolog�a JavaServer Pages y el XML son compa�eros naturales que usan fuentes de datos heterog�neas y soportan clientes multi-lenguaje. Esta p�gina ha descrito varias aproximaciones para direccionar estos requerimientos que mejoran el desarrollo y mantenimiento contra el coste de ejecuci�n. Como parte de la plataforma Java, las tecnolog�a JSP proporciona a los desarrolladores la capacidad de evaluar estas mejoras y de adoptar una tecnolog�a para procesamiento XML que satisfaga los rendimientos de su aplicaci�n particular.

.�Recursos

Para posterior informaci�n sobre las tecnolog�as descritas en esta p�gina, puedes visitar las siguientes sites (en Ingl�s).

COMPARTE ESTE ARTÍCULO

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

SIGUIENTE ARTÍCULO