Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml number()有时包含逗号和小数。如何检查它是否';这是一个数字_Xml_Xslt_Xpath_Xslt 1.0 - Fatal编程技术网

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], ',', ''))