Para los que o bien nos guste, o bien nos vemos obligados a usar transformadas xslt a veces en exceso, muchas veces nos encontramos con algunos problemas como son los números. Cuando debemos de hacer operaciones que van mas allá de sumar y restar dentro de una transformada xslt, nos encontramos muchas veces con un gran problema al mostrar los resultados de las operaciones. Por ejemplo, un caso practico (el mio de hoy, aunque me pasa desde que empecé a trabajar con xslt), ha sido que tengo que mostrar un combo (select) con maletas, pero cuando el trayecto es español, como no, al precio de esas maletas (incluido en el combo) hay que añadir un 7% de iva. Al proceder a esto, muchas veces me aparecen números que son auténticos chorizos, por ejemplo 37.000000004€, por lo que queda un poco feo en un combo. La solución es dar formato al numero/variable y dejarlo truncado a 2 decimales.
Para dar formato a un numero en una transformada xslt, podemos utilizar la función nativa de xslt format-number. Esta función cuenta con 2 parámetros, un primero que especificamos el numero a dar formato y como segundo parámetro que especifica cual sera el formato que se le dará al numero. La función tendría un formato tal que:
/**
* Función de xslt nativa e independiente del lenguaje, ya sea java, .Net, php, etc. para dar formato a un numero desde XSLT
* pero a veces puede provocar algún que otro fallo dependiendo del lenguaje que la implementa.
* @param number Numero a dar formato
* @param format Formato que se le dará, se utilizan los caracteres ('0', '#', '.', ',', '%')
* @return Numero con su formato especificado
*/
string format-number(string number, string format)
Para dar formato, podemos utilizar los siguientes caracteres: