为什么sum(//*)会在这个xml上返回这个答案?

evi*_*ise 4 xpath

这是xml

<a><b>2</b><c>3</c></a>
Run Code Online (Sandbox Code Playgroud)

这是XPath查询

sum(//*)
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

Type: Num
Value : 28.0000
Run Code Online (Sandbox Code Playgroud)

这是XPath 1.0
请解释类型转换(一步一步)

ale*_*cxe 6

让我们分解一下:

  • //*将匹配a,b以及c节点
  • sum()函数将总结number()每个节点的函数调用结果
  • number()函数将调用string()每个匹配的节点
  • number()"a" 的结果为23,"b"的结果为2,"c"的结果为3 -23+2+3=28