J'ai un xml tel que celui-ci:
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
<main>
  <partie1>
    <c1001>checked</c1001>
    <c1005>12</c1005>
    <c1100>45678.84</c1100>
    ....
    <c1250>
       <valeur>45678.19</valeur>
       <valeur>1235.74</valeur>
    </c1250>
    <c1250-autres>12457.74</c1250-autres>
    <c1250-avantages>1247.73</c1250-avantages>
    <c1280>417.91</c1280>
    ...
 </partie1>
 <partie2>
    ...
 </partie2>
</main>
et le but est d'afficher le contenu sous la forme de tableau à 2 colonnes : code et valeur. Là ou ça se complique, c'est que les codes c1250, c1250-autres, et c1250-avantages (s'ils existent) doivent être additionnés et affichés qu'une seule fois.
Par conséquent, j'avais pensé utiliser un template:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<xsl:template match="(c1250|c1250-autres|c1250-avantages)[1]">
<!-- Faire la somme et l'afficher -->
<xsl:value-of select="sum(valeur|parent::part1/c1250-pecule|parent::part1/c1250-avantages|parent::part1/c1250-autres|parent::part1/c1250-reprise)" />
 
</xsl:template>
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<xsl:template match="c1250|c1250-autres|c1250-avantages">
<!-- ne rien faire -->
</xsl:template>
De sorte que dès qu'un des éléments c1250, c1250-autres, ou c1250-avantages est trouvé, le premier template est utilisé et par contre, les occurences suivantes sont gérées par le 2ème template qui dès lors ignore les éléments.

Lorsque je le teste dans XMLSpy, ça fonctionne. Par contre, en Visual Studio, j'ai l'erreur "Unexpected token '(' in the expression".

Quelqu'un pourrait-il me dire ce qui ne va pas et/ou comment résoudre mon problème?
Merci