Accueil > Développement d'applications SDX > Les API > L'API XSP


Présentation de l'API XSP

Dernière modification : 2001/11/02 14:34:18     Contact : Martin Sévigny

L'API XSP permet de créer facilement des pages Web dynamiques dans des applications SDX. Les pages dynamiques sont d'ailleurs au coeur de l'approche SDX, cette plate-forme étant orientée vers la diffusion de documents XML en contexte, le contexte étant très souvent dynamique, comme par exemple le nom de l'utilisateur qui demande une page.

C'est pourquoi la bibliothèque de balises XSP fournie avec SDX est très développée, et permet, à l'aide de simple code XML, d'inclure des fonctionnalités assez avancées telles que l'ajout d'un document, la recherche d'information, etc.

Quelques mots sur XSP

La technologie XSP est au coeur du projet Cocoon. Pour en savoir plus à ce sujet, il est conseillé de consulter la documentation associée à ce projet. SDX est basé sur la version 1.8.2 de Cocoon, et il est bon de noter que la version 2 de Cocoon est sensiblement différente et non compatible. La version 2 de SDX devrait éventuellement s'adapter à cette nouvelle architecture.

Essentiellement, le but d'une page XSP est de produire un document XML qui sera par la suite traité par une feuille de style XSLT avant d'être envoyé à l'utilisateur. Dans le modèle de traitement Cocoon, cette technologie est utilisée afin de préparer des documents XML qui ne peuvent être connus à l'avance, et donc des pages dynamiques.

La transformation d'une page XSP (qui est, rappelons-le, un document XML) vers le document XML final est effectuée par le processeur XSP inclus dans Cocoon, et cette transformation est effectuée à l'aide de XSLT.

Afin de rendre ce processus efficace, le résultat de la page XSP et de sa transformation est converti en une classe Java qui sera compilée et donc réutilisable. Cette classe contiendra les instructions nécessaires pour créer dynamiquement le document XML à traiter.

Autrement dit, le résultat final d'une page XSP est une classe Java. D'ailleurs, il est possible d'inclure du code Java dans une page XSP, et ce code sera directement intégré dans la classe Java produite.

Par conséquent, on peut dire que l'on a accès à tout le langage Java dans une page XSP, et à toutes les classes publiques disponibles dans l'environnement Java en cours. On peut donc définir des pages dynamiques fort complexes.

Les bibliothèques de balises

Les bibliothèques de balises en XSP permettent de définir des structures XML qui seront utilisées fréquemment, sans avoir à les recopier dans toutes les pages XSP qui en ont besoin.

Par exemple, supposons que dans une application, plusieurs pages XSP ont besoin d'inclure la date actuelle dans un élément date. Cette fonctionnalité pourrait être incluse dans une bibliothèque de balises de la sorte :

<xsl:template match="sdx:includeDate">
  <xsp:logic>
    Element dateElement = document.createElement("date");
    java.util.Date today = new java.util.Date();
    dateElement.appendChild(document.createTextNode(today.toString());
    xspCurrentNode.appendChild(dateElement);
  </xsp:logic>
</xsl:template>

Ensuite, dans une page XSP, nous pourrions include cet élément XML :

<sdx:includeDate/>

et automatiquement le document XML produit par la page XSP contiendrait un élément date à l'endroit où l'on a inséré l'élément sdx:includeDate. Par exemple, la page XSP suivante :

<?xml version="1.0"?>
<?cocoon-process type="xsp"?>
<?cocoon-process type="xslt"?>
<?xml-stylesheet href="index.xsl" type="text/xsl"?>
<xsp:page language="java"
 xmlns:xsp="http://www.apache.org/1999/XSP/Core"
 xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx"
>
 <document>
  <sdx:includeDate/>
 </document>
</xsp:page>

donnera comme résultat le document XML suivant :

<?xml version="1.0"?>
<document>
  <date>2001/10/04 14:35:34</date>
</document>

Localisation de l'API XSP de SDX

L'API XSP de SDX est constitué d'une bibliothèque de balises. Cette bibliothèque de balises doit être déclarée dans le fichier cocoon.properties (le fichier de configuration fourni avec SDX contient cette déclaration), et le domaine de nom qui lui est associé dans les pages XSP doit y être défini, comme dans les exemples précédents.

Les biblitohèques de balises sont des transformations XML. La bibliothèque SDX est fournie dans le fichier aa1_sdx.jar que l'on trouve dans le répertoire webapps/sdx/WEB-INF/lib de la distribution. Pour l'extraire, vous pouvez utiliser un utilitaire ZIP ou encore le programme jar fourni avec le JDK Java. Dans le fichier JAR, vous trouverez la bibliothèque de balises dans le fichier fr/gouv/culture/sdx/taglibs/sdx.xsl.