2008-11-06 10 views
5

Tengo el siguiente bloque de código en mi xslt;¿Cómo puedo hacer operaciones de cadena en XSLT?

 <xsl:when test="StatusData/Status/Temperature > 27"> 
     <td bgcolor="#ffaaaa">    
      <xsl:value-of select="StatusData/Status/Temperature" />    
     </td> 
     </xsl:when> 

Pero como puede imaginar cuando el valor es 34,5 en lugar de 34,5 se reconoce como una cadena que hace que la comparación de enteros no es posible. Pensé en reemplazar, con. sería una solución que necesita un reemplazo de carbón. Mi pregunta es ¿cómo puedo hacer esto o Sería muy bueno saber más acerca de las operaciones de cadena en XSLT ...

Respuesta

8

hay una función translate() en XPath:

test="translate(StatusData/Status/Temperature, ",", ".") > 27" 

Además usted debe hacer uso de la función de número, que convierte su argumento a un número (o NaN, si eso no funciona):

test="number(translate(StatusData/Status/Temperature, ",", ".")) > 27.0" 

Véase el documentation for translate() y el documentation for number() en w3.org.

0

Gracias mucho.

funciona, pero con una modificación simple:

test="number(translate(StatusData/Status/Temperature, ',', '.')) > 27.0" 

por cierto no se trata de XSLT se trata de XPath :) bueno aprender ...

0

En XSL 2 también se puede utilizar la completa replace() que incluso admite patrones de expresiones regulares.

+0

eso es genial gracias .. – erdogany

Cuestiones relacionadas