XSLT 1.0 n'a pas pour soutenir la notation scientifique.
Ce: number('-1.8959581529998104E-4')
Résultat: NaN
Ce: number('-0.000189595815299981')
Résultat: -0.000189595815299981
XSLT 2.0 a un support pour la notation scientifique
Ce: number('-1.8959581529998104E-4')
Résultat: -0.000189595815299981
EDIT: Une XSLT très simple 1.0 solution de contournement:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="number[substring-after(.,'E')]">
<xsl:variable name="vExponent" select="substring-after(.,'E')"/>
<xsl:variable name="vMantissa" select="substring-before(.,'E')"/>
<xsl:variable name="vFactor"
select="substring('100000000000000000000000000000000000000000000',
1, substring($vExponent,2) + 1)"/>
<xsl:choose>
<xsl:when test="starts-with($vExponent,'-')">
<xsl:value-of select="$vMantissa div $vFactor"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$vMantissa * $vFactor"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Avec cette entrée:
<number>-1.8959581529998104E-4</number>
Sortie:
-0.00018959581529998104
@Alejandro, merci encore !!! J'essaye de faire fonctionner ma transformation en utilisant VS2008 dans l'IDE. Ai-je besoin de faire quelque chose pour l'obliger à utiliser la version 2.0 pour xsl? I.e? –
Andez
Il suffit de regarder sur les forums MSDN et la version 2.0 n'est pas supportée dans VS2008. :-( – Andez
@Andez: Il semble que vous pouvez utiliser une implémentation XSLT 2.0, mais vous ne pouvez pas les intégrer avec VS. Lien: http://stackoverflow.com/questions/4099051/saxon-with-visual-studio- 2010-est-il-un-moyen-d'utiliser-le-débogueur –