如果值为数字,我希望变量具有元素的值,但如果不是,则我希望变量具有值0
。
换句话说,在XSLT中是否有以下简单的等价物?
var foobar = is_numeric(element value) ? element value : 0
或者你会怎么写这个?
<xsl:variable name="foobar" select=" ? " />
答案 0 :(得分:10)
XPath 1.0:
<xsl:variable name="foobar">
<xsl:choose>
<xsl:when test="number($value) = number($value)">
<xsl:value-of select="$value"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
这个聪明的number($value) = number($value)
数字测试的参考:Dimitre Novatchev's answer到"Xpath test if is number" question。
答案 1 :(得分:7)
在XPath 2.0中,您可以使用&#34; castable as
&#34;
<xsl:variable name="foobar" as="xs:double"
select="if (x castable as xs:double) then x else 0" />
答案 2 :(得分:6)
您可以使用:
<xsl:variable name="x"
select="(ELEMENT[. castable as xs:double], 0)[1]"/>
或
<xsl:variable name="x"
select="sum(ELEMENT[. castable as xs:double])"/>