我正在测试文档的第一个节点是否具有数字值。 我试着通过简单地做
来做到这一点<xsl:when test="number(//ss:wd[0])"> <!---ss: being the namespace prefix-->
<!--- My code -->
</xsl:when>
但是,它没有返回预期的结果。我认为这是因为检查的值有时会有逗号和/或小数。
那么,XSLT不认为'1.1'或1,000.1'是数字吗? 我该如何解决这个问题?
添加了: 我正在使用选择和何时因为我想检查其他选项,例如它是否具有特定值
答案 0 :(得分:3)
那么,XSLT不认为'1.1'或1,000.1'是数字吗?
number()函数(BTW是XPath函数,而不是XSLT)将“1.1”视为数字,将“1,000.1”视为NaN(非数字)。 IOW,小数句点被识别,逗号 - 任何角色 - 都不是。
您可以在执行测试之前翻译逗号 - 假设这是唯一的障碍。
答案 1 :(得分:1)
XSLT / XPath无法处理分组选择器。在使用translate
进行测试以删除它们之前,请先使用number()
(尽管这会导致某些非数字漏掉,例如,,,0
等)。
number(translate(//ss:wd[0], ',', ''))