Bonjour,
J'ai un problème dont je ne trouve pas la solution. Je suis sur que j'ai loupé un truc mais je ne sais pas quoi. cela concerne les variables.

Mon XML ressemble a ca :
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
<FICHEOFF ID="SOCI20F20_014_J" maj="12">
	<CARTOUCHE>
		<NUMERO>20.14j</NUMERO>
		<TITRE>Pr&ecirc;t</TITRE>
		<REFERENCE>Code 
		</REFERENCE>
	</CARTOUCHE>
	<TITREF Type="Chapitre">Chapitre VIII
	</TITREF>
	<PARA>[...]</PARA>
	<ARTICLE>
		<NUM-ART ID="SOCI20F20_014_J_ARTR318-2">Art.&nbsp;R. 318-2</NUM-ART>
		<PARA>blabla</PARA>
	</ARTICLE>
</FICHEOFF>
Et la XSL me permettant de traiter ca :

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
<xsl:template match="FICHEOFF">
<table border="0" cellpadding="5" cellspacing="1" width="100%">
                        <tr>
                            <td>
                                <span class="FD-Arial-11-B-Noir">
                                    <xsl:value-of select="CARTOUCHE/REFERENCE"/>
                                </span>
                                <br/>
                                <br/>
                                <xsl:copy-of select="CARTOUCHE/TITRE"/>
                            </td>
                            <td align="center" bgcolor="#EFEFEF">
                                <p>
                                    <span class="FD-Arial-10-B-Noir">FICHE
                                        <br/>
                                    </span>
                                    <span class="FD-Arial-12-B-Noir">
                                        <xsl:value-of select="CARTOUCHE/NUMERO"/>
                                    </span>
                                </p>
                            </td>
                        </tr>
                    </table>
<xsl:apply-templates select="//FICHEOFF/child::*/*[name() != 'CARTOUCHE']"/>
 
</xsl:template>
Si je met un simple "<xsl:apply-templates/> a la fin tout le contenue de la cartouche est remis juste en dessous ce que je voudrait éviter

Dans l'ideal je voudrait arriver a faire ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:value-of select="$texte" />
Avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<xsl:variable name ="textesimple" select="PARA | TABLEAU | EQN"/>
	<xsl:variable name ="texte" select="$textesimple | ENC | OBSERVATION"/>
Sachant que ces vararibles doivent pouvoir être atteinte en plusieurs endroit (xsl:template match="TOTO">) dans ma XSL

Donc ou dois je mettre mes deux ligne de varaibles ??? Apparement je peut les mettre juste en dessous de "<xsl:output method="html"/>" ...

Mais sinon je peut aussi me contenter d'une autre solution peut être plus facile. Si je pouvait appliquer toutes les balises qui sont contenue dans un noeud mais en évitant le première noeud(CARTOUCHE)
J'ai bien un truc comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:apply-templates select="//FICHEOFF/child::*/*[name() != 'CARTOUCHE']"/>
ou comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:apply-templates select="//FICHEOFF/child::*/*[position() != 1]"/>
Mais rien ne marche

Le problème se repose dans les éléments "ARTICLE" (avec "NUM-ART"), donc il me faudrait une méthode qui peut s'appliquer sur chacun.

Je pensait décomposer au maximum mes traitement XSL mauis je ne sais pas si c'est vraiment la meilleur solution.

Merci