Bonjour à tous,
Le passage à l'euro fait a laissé des traces, et je dois calculer deux sommes dans ma feuille XSL.
Voici un petit exemple de la feuille XML:
Il y a plus de données que ça normalement, mais le fait est que les francs et les euros sont mélangés, et que les nombre trop grands sont notés en écriture scientifique (puissance de dix).
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 <inscription_1 valide="true"> <date_inscription>2000-08-08</date_inscription> <montant_creance devise="FRF">1.15E7</montant_creance> <creancier id_adr_creance="AD5" id_creancier="1"> <coordonnee> ... </coordonnee> </creancier> </inscription_1> <inscription_1 valide="true"> <date_inscription>2000-09-08</date_inscription> <montant_creance devise="FRF">1.07002E7</montant_creance> <creancier id_adr_creance="AD6" id_creancier="1"> <coordonnee> ... </coordonnee> </creancier> </inscription_1> <inscription_1 valide="true"> <date_inscription>2003-10-06</date_inscription> <montant_creance devise="EUR">1219592.16</montant_creance> <creancier id_adr_creance="AD5" id_creancier="1"> <coordonnee> ... </coordonnee> </creancier> </inscription_1>
Lorsque j'affiche les nombres avec number() et format-number(), tout se passe bien et mon nombre apprarait tel qu'il le devrait ... mais dès que je cherche à faire une somme avec un nombre noté en puissance de dix, ça plante : NaN !
Un petit bout de mon code :
J'ai bien essayé de mettre number() avant sum(), mais rien n'y fait. Par contre, si j'ai des nombres écrits "normalement", tout marche.
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 <!-- Affichage des sommes, si elles ont lieu d'être --> <xsl:if test="count(*[starts-with(name(),'inscription')]/montant_creance[@devise='EUR']) > 0"> <xsl:value-of select="format-number(number(sum(*[starts-with(name(),'inscription')]/montant_creance[@devise='EUR'])), '### ###,00','euro')" /><xsl:text> EUR</xsl:text> </xsl:if> <xsl:if test="count(*[starts-with(name(),'inscription')]/montant_creance[@devise='FRF']) > 0"> <xsl:if test="count(*[starts-with(name(),'inscription')]/montant_creance[@devise='EUR']) > 0"> <xsl:text disable-output-escaping="yes"><br /></xsl:text> </xsl:if> <xsl:value-of select="format-number(number(sum(*[starts-with(name(),'inscription')]/montant_creance[@devise='FRF'])), '### ###,00','euro')" /><xsl:text> FRF</xsl:text> </xsl:if> <!-- Affichage des montants --> <xsl:if test="count(*[starts-with(name(),'inscription')]) > 0"> <ul> <xsl:for-each select="*[starts-with(name(),'inscription')]"> <li> <p> <strong>Montant créance</strong> : <xsl:value-of select="format-number(number(montant_creance), '### ###,00','euro')" /><xsl:text> </xsl:text><xsl:value-of select="montant_creance/@devise" /> </p> </li> </xsl:for-each> </ul> </xsl:if> </xsl:for-each> </xsl:if>
Quelqu'un aurait-il une idée pour me mettre sur la piste ?
Merci d'avance !
Partager