2009-08-12 68 views
28

Quiero convertir un valor de cadena en xslt a un valor entero. Estoy usando xslt 1.0, así que no puedo usar esas funciones compatibles con xslt 2.0. Por favor ayuda.Convertir cadena a entero en XSLT 1.0

+2

Podría dar un documento XML de entrada de ejemplo, una muestra de XSLT y posiblemente describir la salida deseada? –

+0

puede tomar cualquier archivo de muestra y convertir la cadena en número entero. Supongo que no es necesario para las muestras – Kapil

+0

Pero, ¿cómo desea que se vea su salida? ¿Y qué quieres hacer con ese número? Es muy difícil ayudar sin saber lo que estás tratando de lograr. –

Respuesta

52

Añadiendo a la respuesta de jelovirt, puede usar el número() para convertir el valor en un número, luego en redondo(), piso() o techo() para obtener un entero entero.

Ejemplo

<xsl:variable name="MyValAsText" select="'5.14'"/> 
<xsl:value-of select="number($MyValAsText) * 2"/> <!-- This outputs 10.28 --> 
<xsl:value-of select="floor($MyValAsText)"/> <!-- outputs 5 --> 
<xsl:value-of select="ceiling($MyValAsText)"/> <!-- outputs 6 --> 
<xsl:value-of select="round($MyValAsText)"/> <!-- outputs 5 --> 
+1

En XPath 1.0, si una función (como 'floor()', 'ceiling()' o 'round()' espera un argumento de tipo de datos numéricos, entonces va a lanzar implícitamente su argumento con la función 'number()' . –

+0

¿Entonces mi "número ($ MyValAsText)" es superfluo? Bueno, ¡ahorremos esos bits! Gracias por el consejo, Alejandro. Me he ganado un poco al no lanzar suficientes veces en XSLT que suelo lanzar muy a menudo (por ejemplo). – jeffreypriebe

31

XSLT 1.0 no tiene un tipo de datos entero, solo el doble. Puede usar number() para convertir una cadena en un número.