Notion de Pipeline > Le SiteMap > Les composants

Le SiteMap : Définition

Le but du SiteMap est de permettre aux non-programmeurs de créer des sites et des applications Web à partir de composants logiques et de documents XML. Le siteMap est définis à la racine de chaque site dans le fichier sitemap.xmap

Le SiteMap contient toute la logique du site, il permet de centraliser les règles de traitements en fonctions des URL demandées par l'utilisateur. C'est donc dans le SiteMap que l'on doit définir les différents pipelines et les règles d'accès en fonction des URL.

Le fichier de SiteMap est un simple fichier XML respectant la DTD définis pour les SiteMaps. Il est ainsi trés simple d'éditer ce fichier pour y ajouter de nouveaux éléments. Ce fichier XML est tout de même compilé pour gagner en performances.

 

La Structure

Le fichier SiteMap (sitemap.xmap) possède une structure définis comme suit :

<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <map:components/>
  <map:views/>
  <map:resources/>
  <map:action-sets/>
  <map:pipelines/>
</map:sitemap>

 

<map:components>

L'element <map:components> permet de faire l'assiociation entre les noms des composants utilisés dans les pipelines et les objets (classes Java) correspondants.
Chaque composant possède au minimum deux attributs :
   - name : qui permet d'identifier le composant (il sera appelé dans les pipelines par ce nom)
   - src : qui spécifie la class du composant.

<map:components>
  <map:generators/>
  <map:transformers/>
  <map:serializers/>
  <map:readers/>
  <map:selectors/>
  <map:matchers/>
  <map:actions/>
  <map:pipes/>
</map:components>

 

<map:views>

L'élément <map:view> définis différents affichage possibles pour le site. Les vues sont définies infépendament des pipelines et peuvent être utilisées au sein de n'importe quel pipeline définis dans le SiteMap

<map:views>
  <map:view name="content" from-label="content">
    <map:serialize type="xml"/>
  </map:view>

  <map:view name="links" from-position="last">
    <map:serialize type="links"/>
  </map:view>
</map:views>

 

<map:resources>

L'élément <map:resource> permet de définir des pipelines génériques qui sont utilisé de nombreuses fois dans le SiteMap. (Exemple : un message d'erreur)

<map:resources>
  <map:resource name="Access refused">
    <map:generate src="./error-pages/restricted.xml"/>
    <map:transform src="./stylesheets/general-browser.xsl"/>
    <map:serialize status-code="401"/>
  </map:resource>
</map:resources>

 

<map:action-sets>

L'élément <map:action-sets> est utilisé pour arranger les actions en groupes.

<map:action-sets>
  <map:action-set name="employee">
    <map:act type="add-employee" action="Add"/>
    <map:act type="del-employee" action="Delete"/>
    <map:act type="upd-employee" action="Update"/>
    <map:act type="sel-employee" action="Select"/>
  </map:action-set>
</map:action-sets>


Définir un Pipeline

La déclaration d'un Pipeline dans le SiteMap est trés simple, il suffit de d'ajouter un élément map:pipeline à l'intérieur de l'élément map:pipelines.

Le tableau suivant regroupe les différents éléments pouvant être utilisés à l'intérieur d'un pipeline :

Element Description
map:match Choisit le pipeline à utiliser en fonction du "match" (voir Matchers)
map:select, map:when, map:otherwise Choisit le pipeline à utiliser sur des criteres logiques. (voir Selectors)
map:mount Charge un sous-SiteMap
map:redirect-to Effectue une redirection vers un autre URI
map:call Appel un fragment d'un autre pipeline
map:parameter Permet de définir les paramètres pour les composants du pipeline
map:act Appel un composant Action
map:generate Définis l'étape de génération du pipeline (voir Generator)
map:aggregate, map:part Définis une génération alternative en utilisant plusieurs pipelines.
map:transform Permet de définir 0 ou plusieurs Transformers
map:serialize Définis l'étape de rendu final du pipeline (voir Serializer)
map:handle-errors Permet de définir le gestionnaire d'exceptions


Exemple de définitions d'un pipeline dans le fichier SiteMap

//Définition du serializer HTML
<map:serializer logger="sitemap.serializer.html" mime-type="text/html"
 name="html" src="org.apache.cocoon.serialization.HTMLSerializer"/>

//Pipeline affichage en HTML
<map:match pattern="hello.html">
  <map:generate src="content/hello.xml"/>
  <map:transform src="style/xsl/page2html.xsl"/>
  <map:serialize type="html"/>
</map:match>
retour haut de page
:: Olivier Mayaud - © 2004 ::