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:
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>
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).
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 :
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">&lt;br /&gt;</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>
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.

Quelqu'un aurait-il une idée pour me mettre sur la piste ?

Merci d'avance !