Christophe.Brun@aventis.com wrote:
>>>oui, tout simplement, je cherche la formule magique pour dire :
>>>aggrege le fichier minimum.xml avec le fichier {1}.xml si il existe ...
>>>
>>>
>>Ca, j'ai compris. Mais s'il n'existe pas, qu'est-ce qu'on fait ??
>>
>>
>
>si {1}.xml n'existe pas, n'utilise que minimum.xml
>je veux juste concatener plusieurs sources si elles existent
>
><map:match pattern="*.xml">
><map:aggregate element="TOTAL">
><map:part src="{1}.xml"/> <!--si {1} existe -->
><map:part src="autrefichier_{1}.xml"/> <!--si autrefichier_{1} existe -->
>....
><map:part src="REP/minimum.xml"/> <!--fichier minimum -->
></map:aggregate>
><map:serialyse type="xml">
></map :match>
>
>car si un des fichier n'existe pas j'ai "...SourceNotFoundException:... "
>
>J'ai zappé une fonction de base de cocoon ?
>
>
Non : quand on fait une aggrégation, cocoon n'aime pas quand une des
sources n'existe pas :-)
La solution se trouve donc bien dans le XIncludeTransformer [1], qui
permet de définir un "fallback" si une resource incluse n'existe pas.
Ton <map:aggregate> va donc devenir :
<map:generate type="jxtemplate" src="include-description.xml">
<map:parameter name="prefix" value="{1}"/>
</map:generate>
<map:transform type="xinclude"/>
avec include-description.xml contenant:
<TOTAL xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="${cocoon.parameters['prefix']}.xml">
<xi:fallback/>
</xi:include>
<xi:include href="autrefichier_${cocoon.parameters['prefix']}.xml">
<xi:fallback/>
</xi:include>
<xi:include href="REP/minimum.xml"/>
</TOTAL>
L'utilisation du générateur JXTemplate [2] permet de construire une
liste d'inclusion calculée (on reporte {1} comme paramètre "prefix"), et
le <xi:fallback/> vide permet de ne rien ajouter si le fichier n'existe
pas mais ne lève pas d'erreur.
Tu verras aussi dans la doc du XIncludeTransformer qu'on peut faire une
extraction XPath à la volée avec un
href="include.xml#xpointer(/le/chemin/xpath)"
Voilà voilà, le cocooner de service a encore frappé :-)
Sylvain
[1]
http://cocoon.apache.org/2.1/userdocs/transformers/xinclude-transformer.html
[2] http://cocoon.apache.org/2.1/userdocs/flow/jxtemplate.html
--
Sylvain Wallez Anyware Technologies
http://www.apache.org/~sylvain http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Dec 15 18:50:16 2004