xslt 1.0如何测试数字

时间:2011-08-01 08:28:33

标签: xslt xslt-1.0

如何测试元素的值是否为数字/可转换为数字?

我需要做的是复制值(如果它是一个数字),如果它是一个字符串则替换为99

3 个答案:

答案 0 :(得分:2)

string(number($ x))='NaN'测试$ x是否可以转换为数字。

答案 1 :(得分:1)

答案 2 :(得分:1)

除了 @Michael Kay的正确答案:

number($x) = number($x)

true()可投放到数字时,此表达式为$x

这里我们使用以下事实:

  1. 如果$x不是数字,那么根据定义,number($x)NaN

  2. NaN不等于任何值,即使是NaN

  3. 现在,您的最后一个问题

      

    我需要做的是复制值,如果它是一个数字,并替换   它是99,如果它是一个字符串

    使用

      $x * (number($x) = number($x))
    +
      99 * not(number($x) = number($x))
    

    解释:当数字表达式的一部分时,布尔值将转换为数字(true() - > 1,false() - > 0)。在上面的表达式中,+的一个参数将为0,其中一个将为1,具体取决于$x是否为/是数字。