Bonjour à tous,

mon chef m'a demandé de développer un petit fichier xsl pour rendre lisible par l'humain un fichier utilisé lors de l'appel à ant (compilation, tests unitaires et fonctionnels, résolution des dépendances, .... en gros ce fichier fait pas mal de choses ). Ce fichier ressemble à celà :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<?xml version="1.0"?>
<dependencies module="moduleATraiter" version="4-6-3" moduleType="proprietaire" hasConflict="no">
   <ModuleList>
      <module name="dependance1" version="1-2-0" moduleType="proprietaire" level="4" isUsed="yes" id="mod1">
         <deliverables>
            <deliverable name="dependance1.jar" id="dep1_0"/>
         </deliverables>
      </module>
      <module name="dependance2" version="4-6-3" moduleType="proprietaire" level="3" isUsed="yes" id="mod0">
         <deliverables>
         </deliverables>
      </module>
      <module name="dependance3" version="1-13-0" moduleType="proprietaire" level="2" isUsed="yes" id="mod2">
         <deliverables>
            <deliverable name="dependance3.jar" id="dep2_0"/>
         </deliverables>
      </module>
      <module name="dependance4" version="5-1-1" moduleType="libExterne" level="1" isUsed="yes" id="mod3">
         <deliverables>
            <deliverable name="dependance4_0_5-1-1.jar" id="dep3_0"/>
            <deliverable name="dependance'_0_mock_5-1-1.jar" id="dep3_1"/>
         </deliverables>
      </module>
   </ModuleList>
</dependencies>
pour produire un fichier de ce type :

This is the head dependencies for this module : moduleATraiter
in version 4-6-3
----------------------------------------------------------------------------------------------------
dependencies on module : dependance4, version 5-1-1, at level 1
----------------------------------------------------------------------------------------------------
dependencies on module : dependance3, version 1-13-0, at level 2
----------------------------------------------------------------------------------------------------
dependencies on module : dependance2, version 4-6-3, at level 3
----------------------------------------------------------------------------------------------------
dependencies on module : dependance1, version 1-2-0, at level 4
----------------------------------------------------------------------------------------------------
[/code]

Grosso modo, il s'agit de récupérer les niveaux de dépendance d'un composant (défini par l'attribut level de l'élément module) et de présenter toutes les dépendances en fonction de leur niveau. Chaque niveau sera représenté par une couleur particulière (pas aléatoire : on a plus de 250 composants et on aimerait bien que les utilisateurs aient l'habitude que le bleu symbolise le premier niveau de dépendances, le rouge le second, ... (couleur à titre complètement indicatif).
Premier point de difficulté : on ne connait pas le nombre de niveau de dépendances d'un composant à l'avance. Ce nombre n'est connu que pendant le traitement xslt (en gros on n'a pas d'infos clair dans l'arbre qui nous donnerait levelMax).

J'ai essayé quelques solutions assez crades histoire de fournir une première version fonctionnelle (qui appelle un template qui match module pour les level 0 puis 1 puis 2 puis 3 puis 4 puis 5 -> si il y a plus de 5 niveaux de dépendances, ce qui est quelquefois le cas, les autres niveaux ne sont pas affichés ). Petite info, ce fichier xsl n'est pas interprété par un quelconque navigateur mais par Xalan en version 2-5-1 afin de produire un fichier html pour chaque composant et de les mettre à disposition sur un serveur.

Quelqu'un aurait-il la gentillesse de me donner un coup de main sur mon problème ? Je débute avec le xsl (bien que j'ai lu plusieurs fois le doc w3c et fureté pas mal de sites web) et j'ai beaucoup de mal avec les langages fonctionnels (pas de vrais variables ni de fonctions qui retournent un résultat !!).

Merci d'avance.