2008-11-06 7 views
5

J'ai le bloc de code suivant dans mon xslt;Comment puis-je faire des opérations de chaîne dans XSLT?

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

Mais comme vous pouvez le deviner quand la valeur est 34,5 au lieu de 34,5, il est reconnu comme une chaîne qui rend la comparaison entier pas possible. Je pensais remplacer, avec. serait une solution qui nécessite un remplacement de char. Ma question est de savoir comment je peux le faire ou Il serait bon de savoir plus sur les opérations de chaîne dans XSLT ...

Répondre

8

Il y a une fonction translate() dans XPath:

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

De plus, vous devriez utiliser de la fonction numérique, qui convertit est l'argument d'un certain nombre (ou NaN, en cas d'échec):

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

Voir la documentation for translate() et la documentation for number() à w3.org.

0

Merci beaucoup.

cela fonctionne, mais avec une modification simple:

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

par la façon dont il est pas XSLT il est sur le point XPath :) bon d'apprendre ...

0

Dans 2, vous pouvez XSL également utiliser le plein replace() qui prend même en charge les modèles regex.

+0

c'est cool merci .. – erdogany

Questions connexes