Nous devons transformer du XML contenant des nombres en notation exposant (scientifique) par exemple.XSLT: Gestion des valeurs numériques utilisant la notation exponentielle
<Value>12.34e12</Value> <Value>-12.34e-12</Value>
plutôt fâcheusement, nous ne pouvons pas utiliser la fonction somme() et autres parce que l'analyseur XSLT attend nombres d'être au format décimal.
[Nous utilisons la .Net classe XslCompiledTransform pour faire la transformation, mais je pense que ce problème est commun à toutes les implémentations XSLT]
La seule solution à ce problème que nous avons à ce jour est de transformer la valeur de chaîne à un nombre en utilisant une fonction javascript (voir ci-dessous), puis écrire notre propre modèle de somme qui appelle cette fonction.
Il me semble qu'il doit y avoir un meilleur moyen - est-il?
/* This function attempts to coerce the input into a number. */ function toNumber(x) { if(!x) { return Number.NaN; } if(typeof x === 'number') { return x; } return parseFloat(x); };
Merci pour la réponse. Malheureusement, je suis bloqué avec les classes de transformation .Net qui (pour autant que je sache) sont XSLT 1.0. :-( –
Saxon devrait fonctionner sur .net bien que j'aie seulement utilisé la version de Java – Krab
Xalan 2.7 fonctionne également bien. – Erlock