我有一个带有代码的xsl模板
<xsl:if test="(base_extra_fee_rule_amount='75.0000')">
但是我希望代码在该字段有任何值的情况下运行,或者如果该字段为NaN则不运行代码
我尝试了
<xsl:if test="not(base_extra_fee_rule_amount='NaN')">
但是那是行不通的,有没有简单的方法可以做到这一点?
答案 0 :(得分:2)
不确定您的目的是什么。
通常,您可以使用谓词选择/匹配具有有效数值的节点-例如:
<xsl:template match="amount[number()=number()]">
答案 1 :(得分:2)
测试X是否为NaN
的最简单方法是(X=X)
,因为只有X为NaN时,该表达式才会返回false。
如果您想要一个更具可读性的表达式,那么string(number(X))='NaN'
可以完成工作。
但是,请注意,操作数base_extra_fee_rule_amount
返回元素节点或不返回任何内容。只有数字类型的值可以是NaN,因此在尝试将其转换为数字之前,元素不会是NaN。这可以显式地或隐式地发生,并且详细信息取决于您使用的是XSLT 1.0还是2.0,在后一种情况下取决于它是否支持架构。在此阶段,尚不清楚您要应用哪种测试。您是否有兴趣测试该元素是否具有字符串值“ NaN”,还是有兴趣测试该元素是否具有非数字值?
答案 2 :(得分:-1)
PaddyD:-
感谢通知:-
<xsl:template match="base_extra_fee_rule_amount!=''"> <xsl:text>@@@@</xsl:text> </xsl:template>