Apache Cocoon 2: Motivación, Introducción y Explicación | ||
---|---|---|
Anterior | Capítulo 4. Cocoon y las XSPs | Siguiente |
De acuerdo a la forma como se programan, las XSPs se pueden dividir en tres grupos:
Con la lógica embebida en la presentación
Con hojas de estilos
Con bibliotecas etiquetas
En este tipo de páginas se escribe el código en la propia página XML. Ésta es la práctica de programación menos recomendada y no debería utilizarla nunca, ya que aunque puede funcionar, el mantenimiento se torna muy complicado y la reutilización se minimiza brutalmente.
Para hacer el tratamiento de este tipo de XSP, el procesador XSP analiza el XML y convierte la página en un Servlet compilado. Esto lo hace llevando el XML a Java mediante un árbol DOM. Una vez llevado a código Java, se procesa y al resultado final se le aplica una transformación XSLT para llevar el resultado final a una página HTML.
Como podemos ver esta forma de programación, degrada el código XML ya que lo combina con el Java, por lo tanto la separación entre contenido y presentación de la cual hemos hablando no se hace presente. Este tipo de forma de programar no debería ser utilizada en ningún caso a menos que sea estrictamente necesario (aunque a decir verdad nunca debería ser estrictamente necesaria).
Esta forma de programar las XSP es mucho más recomendable que la anterior. En ésta, la página XSP original sería vista como un documento XML que se vale de hojas de estilos para aplicar la lógica de la programación, es decir el código Java. Cuando el documento XML original es procesado, se le aplica la transformación y como resultado se tiene una página XSP con el código embebido.
Note que en este caso el mantenimiento de la página mejora bastante con respecto al modelo que se expuso anteriormente, sin embargo la reutilización es muy pobre ya que el código fuente Java que se necesite para otra página XSP se debe incluir en otra XSL distinta.
La idea de esta forma de implementar XSP es tener en bibliotecas especializadas, etiquetas que se encarguen de ejecutar cierto proceso, cierta función o procedimiento escrito en un lenguaje de programación (como por ejemplo Java) para que dichas bibliotecas puedan ser incluidas mediante espacios de nombres en los ficheros XML que las necesitan y así mismo se puedan utilizar las funciones que proveen dichas bibliotecas.
Estas bibliotecas deberían agruparse por roles o por tipos de funciones o servicios que proveen.
Como vemos en este caso el problema que aun teníamos, reutilización de código se vuelve imperceptible y no existe, ya que las bibliotecas y los servicios que proveen son independientes del fichero XML que las utiliza.