XSLT中是否有字符串(string(。))?

时间:2012-03-19 17:25:28

标签: xslt

我正在处理一些自动生成的XSLT代码。

它包含以下内容:

string(string(.))
number(string(.))
string(number(string(.)))

这些有什么意义吗?或者它们可以简化为

string(.)
number(.)
string(.)

2 个答案:

答案 0 :(得分:2)

对于第一个,我很确定它可以减少到string(.)。对于第三个我不认为你可以将它减少到string(.),例如对于具有字符作为其字符串内容的上下文节点(例如<foo>a</foo>),number(string(.))为您提供特殊数字值“不是数字”,如果再次string(),则会得到(http://www.w3.org/TR/xpath/#section-Number-Functionshttp://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。但这些边缘情况不太可能对您的应用程序很重要。