Xml number()有时包含逗号和小数。如何检查它是否';这是一个数字
我正在测试文档的第一个节点是否具有数字值。 我试着通过简单的Xml number()有时包含逗号和小数。如何检查它是否';这是一个数字,xml,xslt,xpath,xslt-1.0,Xml,Xslt,Xpath,Xslt 1.0,我正在测试文档的第一个节点是否具有数字值。 我试着通过简单的 <xsl:when test="number(//ss:wd[0])"> <!---ss: being the namespace prefix--> <!--- My code --> </xsl:when> 然而,它并没有返回预期的结果。我认为这是因为被检查的值有时有逗号和/或小数 那么,XSLT不认为“1.1”或“1000.1”是数字吗? 我怎样才能避开这个问题呢 增加
<xsl:when test="number(//ss:wd[0])"> <!---ss: being the namespace prefix-->
<!--- My code -->
</xsl:when>
然而,它并没有返回预期的结果。我认为这是因为被检查的值有时有逗号和/或小数
那么,XSLT不认为“1.1”或“1000.1”是数字吗?
我怎样才能避开这个问题呢
增加:
我使用choose和when是因为我想检查其他选项,比如它是否有特定的值
那么,XSLT不认为“1.1”或“1000.1”是数字吗
number()函数(顺便说一句,它是一个XPath函数,不是XSLT)认为“1.1”是一个数字,“1000.1”是NaN(不是数字)。注意,可以识别小数点,但在任何角色中都不能识别逗号
您可以在执行测试之前将逗号翻译掉——假设这是唯一的障碍。XSLT/XPath无法处理分组选择器。在使用
number()
之前,请先使用translate
来测试它以删除它们(尽管这可能会导致一些非数字漏掉,如、、、、0
等)
不做分组分隔符,但它应该明确。有一个方面得到确认,谢谢:)如果数字没有逗号会发生什么?代码是否返回错误?不,它没有。
translate
调用只删除所有逗号字符。
number(translate(//ss:wd[0], ',', ''))