yusuf
yusuf

Reputation: 3646

How can I do string operations in XSLT?

I have the following code block in my xslt;

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

But as you might guess when the value is 34,5 instead of 34.5 it is recognised as a string which makes integer comparison not possible. I thought replacing , with . would be solution that needs a char replace. My question is how I can do this or It would be great to know more about string operations in XSLT...

Upvotes: 5

Views: 2337

Answers (3)

Egor
Egor

Reputation:

In XSL 2 you can also use the full-fledged replace() which even supports regex patterns.

Upvotes: 0

yusuf
yusuf

Reputation: 3646

Thanx a lot.

it works but with one simple modification:

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

by the way it is not about XSLT it is about XPath :) good to learn...

Upvotes: 0

Tomalak
Tomalak

Reputation: 338376

There is a translate() function in XPath:

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

Additionally you should make use of the number function, which converts it's argument to a number (or NaN, if that fails):

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

See the documentation for translate() and the documentation for number() at w3.org.

Upvotes: 8

Related Questions