首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xsl sum() <traffic> of <users>,同名

Xsl sum() <traffic> of <users>,同名
EN

Stack Overflow用户
提问于 2012-07-18 06:27:25
回答 2查看 92关注 0票数 0

我是xsl的初学者。

我需要计算同名(名称不是" name“+”姓氏“)的用户流量总和,例如,计算所有名为"Jonh”的用户的流量之和。而xsl版本应该仅为1.0。

我发现一个有同样问题的话题

http://social.msdn.microsoft.com/Forums/eu/xmlandnetfx/thread/c9f09ba6-1c79-43df-bbc2-3966710fff23

我试着用它:

代码语言:javascript
复制
<span>Total: <xsl:value-of select="sum(//user[contains(name,'Jonh')]../traffic)" /></span>

代码语言:javascript
复制
<span>Total: <xsl:value-of select="sum(//user[contains(name,'Jonh')]/traffic)" /></span>

但没有任何效果。它不计算和。有人能帮我找到解决办法吗。

XML文件

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type='text/xsl' href='traffic.xsl'?>
<root>
   <user>
       <name>Jonh Connor</name>
       <traffic>800</traffic>
   </user>
   <user>
       <name>John Kennedy</name>
       <traffic>200</traffic>
   </user>
   <user>
       <name>Jack London</name>
       <traffic>100</traffic>
   </user>
   <user>
       <name>Sema Schlumberger</name>
       <traffic>300</traffic>
   </user>
   <user>
       <name>Jack Vorobey</name>
       <traffic>700</traffic>
   </user>
   <user>
       <name>John Lennon</name>
       <traffic>500</traffic>
   </user>
   <user>
       <name>John Romero</name>
       <traffic>4003</traffic>
   </user>
</root>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-18 06:40:00

你的第二个表情有效..。

代码语言:javascript
复制
 <xsl:value-of select="sum(//user[contains(name,'Jonh')]/traffic)" />

我测试了这个,它起作用了。请注意名字中明显的错误:“容”和“约翰”。

注意,虽然表达式是正确的,但如果您可以依赖示例输入所隐含的结构,那么当上下文节点是文档根时,您可能更喜欢一个更有效的解决方案:

代码语言:javascript
复制
 <xsl:value-of select="sum(root/user/name[contains(.,'Jonh')]/../traffic)" />

警告

这种表达形式不区分名称和名称的部分。所以如果你用“Rom”加起来,你会得到4003,因为姓“John Romero”包括“Rom”。如果这不是期望的结果,那么您需要澄清匹配的规则。

票数 1
EN

Stack Overflow用户

发布于 2012-07-18 06:51:36

第二个表达式工作良好。无论如何,我宁愿从表达式中删除contains()函数,因为它可能导致计算中的错误。要只为名为"John“的用户获得结果,请使用下面的示例:

代码语言:javascript
复制
<span>Total: <xsl:value-of select="sum(/root/user[name = 'Jonh']/traffic)" /></span>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11535452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档