我正在处理一些自动生成的XSLT代码。
它包含以下内容:
string(string(.))
number(string(.))
string(number(string(.)))
这些有什么意义吗?或者它们可以简化为
string(.)
number(.)
string(.)
答案 0 :(得分:2)
对于第一个,我很确定它可以减少到string(.)
。对于第三个我不认为你可以将它减少到string(.)
,例如对于具有字符作为其字符串内容的上下文节点(例如<foo>a</foo>
),number(string(.))
为您提供特殊数字值“不是数字”,如果再次string()
,则会得到(http://www.w3.org/TR/xpath/#section-Number-Functions,http://www.w3.org/TR/xpath/#section-String-Functions)字符串“NaN”。我不确定第二个是可以减少的,也许你可以用我提供的链接检查边缘情况的细节。
答案 1 :(得分:2)
XPath 2.0中存在边缘情况,其中number(字符串(。))与数字(。)不完全相同,例如,如果上下文项是xs的实例:gYear则number(。)将失败,但number(string(。))将成功;相反,如果上下文项是布尔值,则数字(。)将true转换为1,false将转换为0,而number(string(。))将两者都转换为NaN。但这些边缘情况不太可能对您的应用程序很重要。