Bonsoir,

Je ne suis pas doué en XSL ...
J'avais un bout de code XSL qui me permettait de présenter en 2 colonnes un texte mais je n'arrive pas à l'adapter à mon nouveau XML qui n'est pas construit de la même façon ...


Je voudrait classer en 2 colonnes les 'section', pour cela je pensait compter les 'section/titre' (le mieux serait de compter les ssection/titre mais c'est encore plus compliqué pour moi LOL)

Le XML:
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
27
28
29
30
31
 
<cours>
  <contenu>
    <partie>
      <section>
        <titre>Introduction</titre>
        <ssection>
          <titre>Historique de TCP/IP et d'internet</titre>
        </ssection>
        <ssection>
          <titre>Qu'est-ce que le World Wide Web ?</titre>
        </ssection>
        <ssection>
          <titre>Le protocole http</titre>
        </ssection>
        <ssection>
          <titre>Internet / Intranet</titre>
        </ssection>
      </section>
      <section>
        <titre>Serveurs et navigateurs Web</titre>
        <ssection>
          <titre>Communication client / serveur Web</titre>
        </ssection>
        <ssection>
          <titre>Les principaux navigateurs</titre>
        </ssection>
      </section>
    </partie>
  </contenu>
</cours>
Le XSL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
...
   <!--  Pour gérer les 2 colonnes -->
   <xsl:key name="ITEMS" match="//titre" use="count(preceding::titre)+1"/>
   <xsl:variable name="ITEM_MEDIAN" select="key('ITEMS', floor(count(//titre) div 2))"/>
   <xsl:variable name="CHAPITRE_MEDIAN" select="//contenu[partie/section/titre = $ITEM_MEDIAN]"/>
...
<table>
  <tr>
    <td>col1<xsl:apply-templates select="contenu/partie [  following-sibling::section = $CHAPITRE_MEDIAN or self::section = $CHAPITRE_MEDIAN ]"/></td>
    <td>col2<xsl:apply-templates select="contenu/partie [ preceding-sibling::section = $CHAPITRE_MEDIAN ]"/></td>
  </tr>
</table>
Ca ne match pas ce qu'il faut, j'obtiens col1 | col2 mais pas mon contenu