Bonjour,
Voilà un extrait de mon fichier 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
 
<AA>
 <M desc="modalités">
   <m value="a" desc="solo">
   <m value="b" desc="en équipe">
   ...
 </M>
 <CS>
   <C>
      <M a="1" b="0" c="1" ...>
      <V a="test'/>
      <desc>
           <desc_fr>ceci est un test</desc_fr>
           <desc_en>this is a test</desc_en>
      </desc>
   </C>
   ...
  </CS>
</AA>
la transformation XSLT

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
32
33
34
35
36
37
38
39
 
...
<xsl:variable name="modalite" select="AA/M"/>
 
<xsl:for-each select="AA/CS/C">
 
<xsl:variable name="carte" select="."/>
<xsl:variable name="encours" select="position()"/>
 
<!-- formulaire -->
<xsl:element name="form">
	<xsl:attribute name="action">#</xsl:attribute>
	<xsl:attribute name="class"></xsl:attribute>
	<xsl:attribute name="name">frm_<xsl:value-of select="$encours"/></xsl:attribute>
	<xsl:attribute name="id">frm_<xsl:value-of select="$encours"/></xsl:attribute>
 
	<xsl:for-each select="$modalite/m">
		<xsl:element name="label">
		<xsl:attribute name="class"></xsl:attribute>
		<xsl:attribute name="for">mod_<xsl:value-of select="$encours"/>_<xsl:value-of select="position()"/></xsl:attribute>
		<xsl:value-of select="@desc"/>
		</xsl:element>
 
		<xsl:element name="input">
		<xsl:attribute name="class"></xsl:attribute>
		<xsl:attribute name="type">checkbox</xsl:attribute>
		<xsl:attribute name="name">mod_<xsl:value-of select="$encours"/></xsl:attribute>
		<xsl:attribute name="id">mod_<xsl:value-of select="$encours"/>_<xsl:value-of select="position()"/></xsl:attribute>
		<xsl:attribute name="value"><xsl:value-of select="@val"/></xsl:attribute>
		<xsl:variable name="valeur"><xsl:value-of select="string(@val)"/></xsl:variable>
		<xsl:if test="Quel test???"><!-- Est-ce un test if qu'il faut faire? -->
			<xsl:attribute name="checked">checked</xsl:attribute>
		</xsl:if>
		</xsl:element>
	</xsl:for-each>
 
</xsl:element>
...
</xsl:for-each>

Ce que je souhaite obtenir
Pour chaque <C> je produis un formulaire (jusque là ça va)
Dans chaque formulaire il y a un groupe de case à cocher reprenant tous les <m>, ça aussi ça fonctionne.
Par contre, j'aimerai que si dans C/M/@un_attribut cette valeur est égale à 1, la case à cocher correspondante dans le formulaire ait l'attribut checked="checked".
J'ai fait un xsl:if test=C/M/@chaque_attribut and string(@val)=l_attribut_en_question qui fonctionne, mais j'aimerai faire un truc qui permette de tester un nombre quelconque d'attributs, genre une boucle avec une variable, mais là, je bloque, si vous pouviez éclairer ma lanterne.
Merci