Apache Cocoon 2

Motivaci�n, Introducci�n y Explicaci�n

Sa�l Z�rrate C�rdenas


Tabla de contenidos
1. �Por qu� Cocoon?
1.1. Motivaci�n
1.2. Entornos de publicaci�n web (Web Publishing Framework)
2. Cocoon
2.1. �Qu� es Cocoon?
2.1.1. Funcionamiento a nivel de usuario
2.2. Cocoon 1 Vs Cocoon 2
3. Estructura y arquitectura de Cocoon
3.1. Conceptos claves
3.1.1. Estructura
3.1.2. Arquitectura
4. Cocoon y las XSPs
4.1. Introducci�n
4.2. Tipos de p�ginas XSP
4.2.1. XSP con la l�gica embebida en la presentaci�n
4.2.2. XSP con hojas de estilos
4.2.3. XSP con bibliotecas de etiquetas
4.3. Conectividad a bases de datos
5. Paralelismo con Cocoon
6. Instalaci�n de Cocoon 2
6.1. Requisitos para la instalaci�n
6.1.1. Instalaci�n de Tomcat
6.1.2. Ambiente Java
6.2. Instalando Cocoon
6.2.1. Instalaci�n R�pida De Cocoon
6.2.2. Instalaci�n a partir de los fuentes
7. Configuraci�n y personalizaci�n en Cocoon
7.1. El sitemap
7.1.1. Selecci�n y match en Cocoon
7.1.2. Funcionalidad del sitemap
7.1.3. Estructura b�sica del sitemap
8. Desarrollo en Cocoon
8.1. Contenido est�tico
8.2. Contenido Din�mico
8.2.1. Dando l�gica con programaci�n en Java
8.2.2. Acceso a bases de datos
8.3. Deployment en Cocoon
8.3.1. Condiciones m�nimas
8.3.2. Inclusi�n de un subsitemap en el sitemap de Cocoon
8.3.3. C�digo del subsitemap
A. Formato de reuni�n semanal
A.1. Introducci�n
A.2. Descripci�n formato de reuni�n semanal
A.2.1. Elementos del formato de reuni�n semanal
A.3. XML
A.3.1. �Qu� es?
A.3.2. Ejemplo XML con el formato de reuni�n semanal de Ingenier�a de Software
A.4. XSL
A.4.1. Algunos aspectos de XSL
A.5. Usando el formato de reuni�n semanal en Cocoon
Tabla de figuras
3-1. Cocoon desde un punto de vista estructural
3-2. Arquitectura de Cocoon
4-1. Flujo en XSP
5-1. WorkFlow en Cocoon
6-1. Ventana de bienvenida de Tomcat
6-2. Ventana de bienvenida de Cocoon
A-1. Formato de reuni�n semanal en Cocoon
Tabla de ejemplos
7-1. Ejemplo de un sitemap b�sico
8-1. C�digo para funcionamiento de un solicitud de un fichero XML presentado como un HTML
8-2. C�digo para definir un Data Source para acceso a una base de datos
8-3. C�digo para cargar clases para acceso a bases de datos.
8-4. Ejemplo de C�digo de Base de Datos necesario a incluir con la Base de Datos hsql
8-5. Pipeline necesario para una XSP con etiquetas SQL y acceso a una Base de Datos
8-6. C�digo de una XSP con conexi�n a Base de datos con etiqueta SQL
8-7. Pipeline necesario para una XSP con etiquetas ESQL y acceso a una Base de Datos
8-8. C�digo de una XSP con conexi�n a Base de datos con etiqueta ESQL
8-9. C�digo para incluir un subsitemap
8-10. C�digo b�sico de un subsitemap
A-1. Ejemplo de una DTD para el formato de reuni�n semanal
A-2. Ejemplo de un documento XML para el formato de reuni�n semanal
A-3. Ejemplo de una XSL para el formato de reuni�n semanal
A-4. C�digo para a�adir un pipeline que cargue el formato de reuni�n semanal

Cap�tulo 1. �Por qu� Cocoon?

1.1. Motivaci�n

Hoy en d�a, la presencia en el Web es cada vez m�s relevante e importante para las empresas. D�a a d�a se demandan m�s servicios en Internet. Por esto, son requeridos sistemas con gran capacidad de transformaci�n y asimilaci�n de las nuevas tendencias, de las nuevas tecnolog�as y del constante cambio del propio mercado.

Una caracter�stica importante de este tema es lo que ata�e a la presentaci�n de la informaci�n en m�ltiples formas y dispositivos. Si tenemos en cuenta el manejo de la informaci�n como hasta actualmente se est� haciendo y analizamos lo que significa para una empresa tener toda su presentaci�n en p�ginas HTML, podemos notar que imponer un cambio de imagen en las propias p�ginas es una labor dispendiosa y debido a que se trata de "remendar" algo ya hecho, se torna en una tarea poco agradable.

Peor a�n, si se trata de presentar la informaci�n de la empresa en un formato distinto al HTML, ya que adem�s de crear la presentaci�n se debe recolectar la informaci�n de la presentaci�n en el formato que est� manejando, es decir, el HTML.

Como usted ya se habr� dado cuenta, el tener la informaci�n en la misma capa en la que se presenta, genera inconvenientes grandes y desencadena una cantidad de factores negativos para las organizaciones tales como gastos en mantenimiento, mayor tiempo en los desarrollos, p�rdida de tiempo y dinero en la capacitaci�n de personas para que conozcan la estructura de presentaci�n, etc.

Para las empresas en las cu�les los datos de presentaci�n se generan de forma din�mica, el problema pasa del dise�ador al programador. En estos casos el programador tiene que ir al c�digo y cambiar la presentaci�n, pero pensemos que en realidad �sto no es el trabajo de un programador, es precisamente la presentaci�n, trabajo del dise�ador. Es claro que el dise�ador no puede hacerlo (y tampoco debe, por que no es su oficio) ya que su l�nea de trabajo no est� pensada para esto. �sto se da mucho en generaci�n din�mica de aplicaciones que utilizan tecnolog�as del estilo de Servlets. Sin embargo n�tese que el programador, al tener que modificar en su c�digo fuente aspectos de presentaci�n corre un riesgo alto de alterar el funcionamiento de la aplicaci�n, lo cual cae en una soluci�n peor e improductiva.

Una soluci�n mejorada de los Servlets sali� con la tecnolog�a J2EE. En los J2EE Beans (que son la forma de presentar la informaci�n) se deber�a tener el m�nimo c�digo, es decir, el necesario para las clases que contienen toda la l�gica del negocio. Por otro lado, con los taglibs (etiquetas XML para definir c�digo) se posibilita crear p�ginas que no tienen una sola l�nea de c�digo.

Bien, �sto mejora las cosas; sin embargo se siguen teniendo b�sicamente tres problemas:

  1. Si se quieren obtener distintas presentaciones, es necesario modificar el c�digo Java que se encarga de dar formato a los datos

  2. El mantenimiento puede no ser tan transparente ya que un dise�ador puede alterar el c�digo embebido en el HTML.

  3. En ocasiones puede ocurrir que se incluya c�digo Java mas all� del necesario para que puedan funcionar correctamente los beans.

Ser�a �ptimo poder tener productos de informaci�n que fueran independientes de las distintas formas de presentaci�n y que si ese contenido se generara din�micamente, ese dinamismo tambi�n fuera totalmente independiente. En pocas palabras se quiere separar Contenido, L�gica y Presentaci�n.

Si se tuviera en un repositorio toda la informaci�n sin ninguna caracter�stica que la atara a alg�n tipo de presentaci�n, se podr�an implantar cada una de las vistas que se desearan sin que se debiera tener en cuenta alguna de las otras. Luego, el cambio o el mantenimiento de una de las vistas no le afectar�a, sino a ella misma.


1.2. Entornos de publicaci�n web (Web Publishing Framework)

Es aqu�, donde surgen los Entornos de Publicaci�n Web Basados en XML y XSL. En este tipo de aplicaci�n se tienen las ventajas de la tecnolog�a XML, tales como ser un est�ndar, ser una meta com�n para las empresas de tecnolog�a, facilidad en la transformaci�n con el apoyo de la tecnolog�a XSL, separaci�n total entre datos y presentaci�n de los mismos, separaci�n entre el rol del programador y el rol del dise�ador (y por lo tanto m�s productividad, menos costos y m�s paralelismo de trabajo), mejor y m�s f�cil tratamiento al mantenimiento y ser compatible con el resto de tecnolog�as.

Hasta este punto un entorno de publicaci�n web en xml resuelve el problema contenido-presentaci�n. �Pero y la l�gica de la aplicaci�n?

Bien, para esta parte existen varias propuestas, pero la m�s interesante es un proyecto del grupo Apache que denominan XSP (eXtensible Server Pages). Para conocer un poco m�s de XSP vea el Cap�tulo 4

Como vemos, ya se explic� a grandes rasgos que el entorno de publicaci�n web basado en XML es la mejor soluci�n al problema planteado: Separar Contenido, L�gica y Presentaci�n. Es aqu� en donde entra el proyecto del grupo Apache llamado por ellos Apache Cocoon.

Importante

Es importante resaltar que esta soluci�n tiene un problema: Es muy poco madura y aun anda en proceso de prueba lo cual genera expectativas de todo tipo. Cocoon es hasta el momento entre este tipo de soluciones, la m�s desarrollada y cuenta con gran credibilidad en este momento.


Cap�tulo 2. Cocoon

2.1. �Qu� es Cocoon?

Cocoon es un sistema de publicaci�n Web, basado en XML/XSL. Cuenta con desarrollo total en Java por lo cual se puede ejecutar desde cualquier servidor que pueda contener Servlets; y al ser un Servlet cuenta con las ventajas de �stos, es decir, se ejecutan como threads de forma simult�nea en el mismo contexto y no tienen que llamar a m�todos auxiliares como lo hacen tecnolog�as del estilo CGI.

Cocoon es Open Source. Es bastante configurable y personalizable. Adem�s adopta caracter�sticas para escribir p�ginas de servidor en XML (XSPs). Permite diferenciar el procesamiento del documento para tenerlo en distintos formatos, dependiendo del tipo de software que hace la petici�n y cuenta con un sistema de cach� para tener un mejor rendimiento. Un elemento adicional y clave para tener en cuenta es que es un producto gratuito y por lo tanto no tendr� que gastar dinero para su adquisici�n.

Su usted desea separar contenido, presentaci�n y l�gica en su aplicaci�n, una buena alternativa es adoptar Cocoon.


2.2. Cocoon 1 Vs Cocoon 2

Cocoon est� siendo desarrollado por una parte del equipo Apache XML. Cocoon 2 tiene cambios tan significativos con respecto a Cocoon 1, que se podr�a decir casi que fue escrito de nuevo.

Los desarrolladores de Cocoon 2 dicen que lo que han hecho es aprender de lo que vivieron durante el desarrollo de Cocoon 1, y lo implementaron para mejorar la eficiencia y la escalabilidad del proyecto.

Cocoon 1 trabajaba sobre DOM (Document Object Model) para poder pasar los documentos XML entre componentes. El problema es que el trabajo con �rboles DOM se torna ineficiente ya que el procesamiento de un �rbol consume mucha m�s memoria que el documento XML original.

Cocoon 2 est� construido sobre el API SAX que es mucho m�s eficaz cuando se trata de manipular documentos XML.

Por otro lado, el manejo de la aplicaci�n cambia bastante de Cocoon 1 a Cocoon 2. Mientras que en Cocoon 1, en los documentos XML se deb�an incluir las instrucciones para hacer el procesamiento del documento (atando el documento XML a Cocoon), en Cocoon 2 se puede configurar para determinado fichero XML que transformaci�n debe aplic�rsele, fuera del mismo fichero. Note que �sto es una gran ventaja con respecto a la flexibilidad del sistema, ya que en la versi�n 1 de Cocoon la reutilizaci�n de c�digo se disminuye considerablemente y la capa que separa el contenido de la l�gica y la presentaci�n se vuelve casi imperceptible.


Cap�tulo 3. Estructura y arquitectura de Cocoon

En este apartado me dedicar� a hablar un poco de la estructura interna y arquitectura en la que se basa Cocoon.


3.1. Conceptos claves

Antes de entrar en detalles es recomendable mostrar tres conceptos claves de la estructura de Cocoon. �stos son:


3.1.1. Estructura

Estructuralmente hablando Cocoon est� compuesto de:

La anterior informaci�n se puede apreciar con el siguiente gr�fico.


Cap�tulo 4. Cocoon y las XSPs


4.2. Tipos de p�ginas XSP

De acuerdo a la forma como se programan, las XSPs se pueden dividir en tres grupos:

  1. Con la l�gica embebida en la presentaci�n

  2. Con hojas de estilos

  3. Con bibliotecas etiquetas


Cap�tulo 5. Paralelismo con Cocoon

Como ya nos hemos podido dar cuenta el paralelismo con Cocoon se incrementa de forma enorme. Esto mejora tanto la calidad de los productos (ya que las personas se especializan en un �rea en particular) como los tiempos de desarrollo de trabajo y de respuesta de los mismos. Aqu� se explica como se puede hacer Workflow con Cocoon. En �ste se deben tener en cuenta estos 5 perfiles.


Cap�tulo 6. Instalaci�n de Cocoon 2

En este apartado nos adentramos en un campo un poco m�s denso, explicando c�mo hacer la instalaci�n de Cocoon.


6.1. Requisitos para la instalaci�n

Ya que Cocoon es una aplicaci�n Web hecha en Java, debe ejecutarse sobre un motor de Servlets. Como estamos hablando de Java, Cocoon puede ser ejecutado sobre cualquier motor de Servlets. Para este caso en particular se ha utilizado Tomcat 4.0.3


6.1.1. Instalaci�n de Tomcat

La instalaci�n de Tomcat es realmente muy sencilla.

Lo primero que debe hacer es descargar el instalador. �sto lo puede hacer desde este enlace en el cu�l encontrar� la �ltima versi�n de este producto de licencia libre. Para el momento en el que este documento estaba siendo elaborado la versi�n m�s reciente de Jakarta Tomcat era la 4.0.3 y ya exist�a una alfa para la versi�n 4.1.0

Una vez descargado el instalador, ejec�telo. Los pasos a seguir son bastante intuitivos y no presentan problema alguno.

En el directorio donde instal� Tomcat, es decir, donde est� la ra�z de la aplicaci�n, lo llamaremos CATALINA_HOME (CATALINA es el nombre del contenedor de Servlets de Tomcat, el cu�l tiene una implementaci�n totalmente distinta desde la versi�n 4).

Para subir y bajar Tomcat vaya al directorio CATALINA_HOME/bin. Ah� encontrar� dos scripts para llevar a cabo esta operaci�n (startup y shutdown respectivamente).

Tomcat se ejecuta por omisi�n en el puerto 8080, as� que una vez que haya arrancado Tomcat puede probar la instalaci�n abriendo en el navegador la direcci�n http://localhost:8080. Si la instalaci�n no tuvo problemas se le mostrar� una p�gina de bienvenida semejante a �sta:


6.2. Instalando Cocoon

6.2.1. Instalaci�n R�pida De Cocoon

De Cocoon se pueden obtener dos distribuciones. La que trataremos en esta parte es la distribuci�n en binario que puede ser descargada de este enlace. Con esta distribuci�n lo �nico que usted debe hacer es descargarla y descomprimirla en cualquier directorio. En el directorio que usted eligi� deber� haber quedado el fichero cocoon.war. Este fichero es el de la aplicaci�n Cocoon.

Para que Tomcat y Cocoon se puedan comunicar, usted debe copiar el cocoon.war en el directorio CATALINA_HOME/webapps e iniciar Tomcat.

Cuando usted inicia Tomcat puede darse cuenta que el fichero es descomprimido autom�ticamente en el directorio CATALINA_HOME/webapps/cocoon/, el cual llamaremos de ahora en adelante COCOON_HOME. Para probar si cocoon est� funcionando puede abrir la direcci�n http://localhost:8080/cocoon/ en el browser, en la cual debe mostr�rsele una p�gina de bienvenida de este estilo.


6.2.2. Instalaci�n a partir de los fuentes

En ocasiones es recomendable tener una copia local del c�digo de Cocoon y compilar la aplicaci�n de forma local. Para �sto, lo que usted debe hacer es descargar el c�digo fuente de Cocoon. Esto lo puede realizar a trav�s del servidor de CVS (Current Versioning System) de Apache.

Primero det todo, usted debe tener instalado CVS. Si usted no lo ha instalado a�n en su m�quina, puede consultar el sitio web de CVS para m�s informaci�n.

En el momento que tenga instalado el CVS, ingrese al servidor de CVS de Apache de la siguiente forma:

Cuando se le pregunte por una contrase�a escriba anoncvs. Luego escriba lo siguiente:

Una vez hecho esto se inicia la descarga de todo el c�digo necesario para la compilaci�n de Cocoon.

Cuando tenga los fuentes de Cocoon descargados, debe compilarlos para crear el fichero cocoon.war. Para empezar a ejecutar el proceso de compilaci�n utilice la siguiente instrucci�n:

�sto crear� un directorio con el c�digo compilado, las bibliotecas y el fichero cocoon.war. Una vez termine el proceso copie el cocoon.war en el directorio CATALINA_HOME/webapps y reinicie Tomcat. De esta forma Cocoon estar� ejecut�ndose en http://localhost:8080/cocoon/.


Cap�tulo 7. Configuraci�n y personalizaci�n en Cocoon

Cocoon cuenta con varios ficheros para hacer la configuraci�n y personalizaci�n del mismo. Entre �stos, el m�s importante a nivel de usuario es el sitemap.xml. En este fichero se lleva a cabo el proceso de selecci�n y match.


7.1. El sitemap


Cap�tulo 8. Desarrollo en Cocoon

8.1. Contenido est�tico

Para poder implantar sus aplicaciones de contenido est�tico en Cocoon usted debe seguir varios pasos:

Vamos a suponer que usted tiene un fichero para presentar informaci�n acerca de su empresa y es la p�gina inicial de la misma. En este caso ese fichero, por ser el inicial lo llamaremos index.

Esto quiere decir que deber� tener un fichero llamado index.xml (con su respectiva DTD, supongamos su nombre como index.dtd) en el cual tendr� la informaci�n necesaria para mostrar la p�gina principal de la empresa y adem�s deber� tener un fichero index.xsl con el cual se aplicar� formato HTML al documento XML.

Sugerencia

Es de anotar que no tiene porque crear un fichero XSL por cada fichero XML que tenga en su aplicaci�n, s�lo que para efectos de un ejemplo de muestra basta con hacerlo de esta forma.

El fichero sitemap.xmap de Cocoon nos servir� para decirle a Cocoon d�nde encontrar los fuentes, como procesarlos y c�mo presentarlos. Este fichero lo puede encontrar en COCOON_HOME/.

Lo que tiene que hacer es editar este fichero para a�adirle un pipeline con el cual se pueda atender una solicitud que muestre el fichero que desea presentar.

Para nuestro ejemplo vamos a suponer que el fichero index.xml se encuentra en la ruta $MiAplicacion/XML/, que el fichero index.dtd se encuentra en la ruta $MiAplicacion/DTD y el fichero index.xsl que transforma el XML en un HTML se encuentra en la ruta $MiAplicacion/XSL/HTML/

Atención

Tenga en cuenta la ruta en la que guarda su DTD para que el fichero XML la pueda reconocer.

Sugerencia

Es recomendable manejar rutas relativas en la declaraci�n de la DTD para mejorar la portabilidad de la aplicaci�n.

Sugerencia

Cuando este construyendo aplicaciones en Cocoon es bastante �til definir directorios para guardar sus ficheros XML, XSL, sus DTD, sus fuentes, sus clases, etc.

Bien, el pipeline que usted debe a�adir es de este estilo:

Analicemos un poco m�s detalladamente esto. La l�nea match pattern="MiAplicacion/index.html" le indica a Cocoon que cuando llegue una solicitud del tipo http://localhost:8080/cocoon/MiAplicacion/index.html la atienda obteniendo los datos del fichero XML $MiAplicacion/XML/index.xml (esto se le indica mediante la l�nea generate type="file" src="$MiAplicacion/XML/index.xml") y aplic�ndole la transformaci�n dada por el fichero XSL ubicado en $MiAplicacion/XSL/HTML/index.xsl (lo cual se le dice mediante la l�nea transform src="$MiAplicacion/XSL/HTML/index.xsl").

Nota

Para un ejemplo un poco m�s detallado consulte el Ap�ndice A.


8.2. Contenido Din�mico


8.2.2. Acceso a bases de datos

Para acceder una base de datos usted debe tener en cuenta tres pasos:

  1. Configurar el Data Source para acceder la base datos.

    �sto lo debe hacer en al fichero cocoon.xconf a�adiendo las siguientes l�neas en la etiqueta datasources

  2. Configurar el fichero web.xml

    Para que cargue el driver e incluir el driver de tal forma que Cocoon tenga un lugar desde donde cargarlo.

    Para configurar el web.xml con ayuda de la etiqueta init-param y la etiqueta hija de �sta, param-name con valor load-class enunciando dentro de esta �ltima el nombre del driver y separando el nombre de los distintos drivers por coma o espacio. Por ejemplo, para incluir un driver para Oracle y otro para IBM WebSphere las l�neas de c�digo que deber�an verse en el fichero web.xml ser�an:

    Nota

    Si usted est� utilizando la Base de Datos que viene con Cocoon (hsql)este paso no es necesario

  3. Si va a utilizar hsql debe a�adir las instrucciones de base de datos que necesite su aplicaci�n, tales como sentencias de autenticaci�n, de creaci�n de tablas, de inserciones de datos, etc. Esto lo debe hacer en el fichero cocoondb.script ubicado en la ruta COCOON_HOME/WEB-INF/db/

    Para nuestro caso se a�adieron las siguientes l�neas:

    con lo cual se est� dando la posibilidad al usuario usuario con contrase�a contrasena hacer operaciones sobre la tabla Pruebas, la cu�l tiene 2 registros.


8.2.2.1. Etiquetas SQL y ESQL

Para la construcci�n de p�ginas XSP, contamos con dos tipos de etiquetas, SQL y ESQL.

La diferencia radica en que ESQL siendo m�s nuevo, presta mayores funcionalidades como combinar distintos tipos de hojas de estilos, soporte para prepared statements y manejo de varios resultsets en una sola sentencia, entre otras cosas. De ah� su nombre, Extended SQL.

A continuaci�n presentar� dos ejemplos con estas tecnolog�as para analizar y tener en cuenta c�mo funciona cada una.


8.2.2.1.2. Ejemplo con uso de etiqueta ESQL

Teniendo en cuenta todo lo anteriormente expuesto, se pueden escribir p�ginas con etiquetas sql.

Nota

Note que en este caso, es en la p�gina XSP en donde se define el nombre de la conexi�n.

Como usted ya se habr� podido dar cuenta, la diferencia en implementaci�n entre ambas tecnolog�as es m�nima. Dependiendo de las necesidades de su aplicaci�n puede escojer entre ambas, teniendo en cuenta las potencialidades de ESQL y el desconocimiento que existe a�n por su poco tiempo de vida en el mundo del software.


8.3. Deployment en Cocoon


8.3.2. Inclusi�n de un subsitemap en el sitemap de Cocoon

En el fichero sitemap.xmap de Cocoon se deben a�adir las siguientes l�neas:

Bien, miremos un poco este c�digo para comprenderlo mejor:

Sugerencia

En ambientes de desarrollo es bastante �til tener la opci�n de que cada vez que se haga un cambio, �ste se pueda reflejar de forma inmediata. Sin embargo en ambientes de producci�n es mejor tener configurado que los cambios se reflejen una vez el servicio se baje y se vuelva a restaurar; �sto es para no perjudicar a los usuarios de la aplicaci�n quienes podr�an tener la impresi�n de una aplicaci�n lenta.

Mejor a�n si crea una copia de la aplicaci�n, para tener una en producci�n y otra en desarrollo para hacer las pruebas. Para conocer como crear una aplicaci�n en Cocoon consulte la sugerencia que est� al final de la secci�n Secci�n 6.2.2


8.3.3. C�digo del subsitemap

El subsitemap, el cual debe estar ubicado como ya se dijo en la ruta $MiAplicacion/ debe seguir el siguiente estilo:

Miremos un poco este subsitemap:


Ap�ndice A. Formato de reuni�n semanal


A.2. Descripci�n formato de reuni�n semanal

En el formato de reuni�n semanal se pueden identificar tres componentes: informaci�n general de la reuni�n, agenda de la reuni�n e informes por rol.

Cabe anotar que mientras la informaci�n general es de car�cter obligatorio, la agenda y los informes por rol pueden o no aparecer en el documento, pero si aparecen ser� s�lo una vez.

A continuaci�n se describen estos tres elementos


A.3. XML


A.3.2. Ejemplo XML con el formato de reuni�n semanal de Ingenier�a de Software


A.3.2.2. XML del formato de reuni�n semanal

Aqu� podemos apreciar un ejemplo de un posible documento XML del formato de reuni�n semanal.

Puede obtener el fuente de este ejemplo haciendo click aqu�.

Ejemplo A-2. Ejemplo de un documento XML para el formato de reuni�n semanal


<?xml version="1.0" standalone="no"?>
<!DOCTYPE reunionSemanal SYSTEM "reunionSemanal.dtd">
<reunionSemanal> 
  <informacionGeneral> 
	 <sitio> Oficina W302 </sitio> 
	 <fecha> 27 de Febrero de 2002 </fecha> 
	 <horaInicio> 4:00 pm </horaInicio> 
	 <horaFin> 5:32 pm </horaFin> 
	 <secretario> Juan Torres </secretario> 
	 <asistente> Sa�l Zarrate Cardenas </asistente> 
	 <asistente> Juan Pablo Quiroga </asistente> 
	 <asistente> Jaime Irving D�vila </asistente> 
  </informacionGeneral> 
  <agenda> <aspectos> 
	 <aspecto> 
		<descripcion> Practicar DTD, XML </descripcion> 
		<propuestas> 
		  <propuesta aprobado="No"> 

			 <textoPropuesta> Desarrollar un ejemplo con el Formato de Lanzamiento
				de Ingenieria de Software </textoPropuesta> 
			 <decision> Como ya se present� el Formato de
     de Lanzamiento de Ingenieria de Software, 
					no hay que documentarlo </decision> 
		  </propuesta> 
		  <propuesta aprobado="Si"> 
			 <textoPropuesta> Desarrollar un ejemplo con el Formato de Reuni�n
				Semanal de Ingenieria de Software </textoPropuesta> 
		  </propuesta> 
		</propuestas> 
	 </aspecto> 
	 <aspecto> 
		<descripcion> Practicar XSL </descripcion> 
		<propuestas> 
		  <propuesta aprobado="Si"> 
			 <textoPropuesta> Desarrollar un ejemplo con el XML del Formato de
				Reuni�n Semanal de Ingenieria de
     Software para presentaci�n en html
			</textoPropuesta> 
		  </propuesta> 
		</propuestas> 
	 </aspecto> 
	 <aspecto> 
		<descripcion> Practicar DocBook </descripcion> 
		<propuestas> 
		  <propuesta aprobado="Si"> 
			 <textoPropuesta> Documentar el desarrollo del XML y el XSL del
				Formato de Reuni�n de Ingenieria de
     Software </textoPropuesta>
		  </propuesta> 
		</propuestas> 
	 </aspecto> </aspectos> 
  </agenda> 
  <informesPorRol> 

	 <informePorRol rol="planeacion"> 
		Se cumpli� con las expectativas de las metas planeadas
	 </informePorRol> 
	 <informePorRol rol="soporte"> 
		Se dieron vinculos de Internet para poder tener ayudas en el desarrollo
		de los temas
	 </informePorRol> 
	 <informePorRol rol="desarrollo"> 
		El trabajo acordado es interesante y cumple con lo buscado
	 </informePorRol> 

  </informesPorRol> 

</reunionSemanal> 
    
    

A.4. XSL

XSL es el acr�nimo de eXtensible Style Language (Lenguaje de Estilo eXtensible).


A.4.1. Algunos aspectos de XSL


A.4.1.4. Ejemplo de XSL con el formato de reuni�n semanal de Ingenier�a de Software para salida en HTML

Para obtener el fuente XSL puede hacer click en este enlace.

Ejemplo A-3. Ejemplo de una XSL para el formato de reuni�n semanal


<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template match="/reunionSemanal">
		<HTML>
			<HEAD>
				<TITLE>
					Acta <xsl:apply-templates
					select="informacionGeneral/fecha"/>
				</TITLE>
			</HEAD>
			<BODY text="#000000" vLink="#840084"
			aLink="#0000ff" link="#0000ff"
			bgColor="#ffffff">
				<B>
					<font size="6">
						Acta
						<xsl:apply-templates
						select="informacionGeneral/fecha"/>
					</font>
					<BR></BR>
					<BR></BR>
					<font size="4">
						<xsl:apply-templates
						select="informacionGeneral/secretario"/>
					</font>
					<BR></BR>
					<BR></BR>
					<HR></HR>
					<BR></BR>
					<BR></BR>
					Tabla de Contenido
				</B>
				<BR></BR>
				<UL>
					<A href="#items">Items a discutir</A>
					<BR></BR>
					<A href="#decisionesTomadas">Decisiones tomadas</A>
					<BR></BR>
					<A href="#reportesDeRol">Reportes de rol</A>
				</UL>
				<HR></HR>
				<BR></BR>
				<B>
					<FONT SIZE="6">
						<A name="#items">Items a discutir</A>
					</FONT>
				</B>

				<BR></BR>
				<xsl:apply-templates select="agenda/aspectos"/>

				<HR></HR>
				<B>
					<FONT SIZE="6">
						<BR></BR>
						<A
						name="#decisionesTomadas">Decisiones
						Tomadas</A>
					</FONT>
				</B>

				<BR></BR>

				<xsl:apply-templates
				select="agenda/aspectos/aspecto/propuestas/propuesta"/>


				<HR></HR>
				<B>
					<FONT SIZE="6">
						<BR></BR>
						<A name="#reportesDeRol">Reportes de rol</A>
					</FONT>
				</B>

				<xsl:apply-templates select="informesPorRol"/>

			</BODY>
		</HTML>
	</xsl:template>

	<xsl:template match="fecha">
		<xsl:value-of select='.'/>
	</xsl:template>

	<xsl:template match="secretario">
		<xsl:value-of select='.'/> 
	</xsl:template>

	<xsl:template match="aspectos">
		<xsl:apply-templates select="aspecto"/>
	</xsl:template>

	<xsl:template match="aspecto">
		<UL>
			<LI>
				<xsl:value-of select="descripcion"/>
			</LI>
		</UL>
	</xsl:template>

	<xsl:template match="propuesta">
		<xsl:choose>
			<xsl:when test='decision!=""'>
				<UL>
					<LI>
						<xsl:value-of select="decision"/>
					</LI>
				</UL>
			</xsl:when>
		</xsl:choose>
	</xsl:template>

	<xsl:template match="informesPorRol">
		<xsl:apply-templates select="informePorRol"/>
		<BR>
		</BR>
	</xsl:template>

	<xsl:template match="informePorRol">
		<UL>
			<LI>
				Reporte de 
					<xsl:value-of select="@rol"/>:  
					<xsl:value-of select='.'/>
			</LI>
		</UL>
	</xsl:template>

</xsl:stylesheet>