5

我的 xslt 中有以下代码块;

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

但是您可能会猜到,当值是 34,5 而不是 34.5 时,它被识别为字符串,这使得整数比较变得不可能。我想用 . 将是需要 char 替换的解决方案。我的问题是我怎么能做到这一点,或者了解更多关于 XSLT 中的字符串操作的信息会很棒......

4

3 回答 3

8

translate()XPath 中有一个函数:

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

此外,您应该使用 number 函数,它将其参数转换为数字(或 NaN,如果失败):

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

请参阅w3.org的文档translate()文档。number()

于 2008-11-06T09:58:31.933 回答
0

非常感谢。

它可以工作,但只需进行一个简单的修改:

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

顺便说一句,这与 XSLT 无关,而是关于 XPath :) 很好学...

于 2008-11-06T10:07:35.177 回答
0

replace()在 XSL 2 中,您还可以使用甚至支持正则表达式模式的成熟版本。

于 2009-01-11T17:16:45.347 回答