首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串中选择某些节点/单词

如何从字符串中选择某些节点/单词
EN

Stack Overflow用户
提问于 2015-03-28 19:37:14
回答 1查看 94关注 0票数 0

我有这个密码

代码语言:javascript
复制
for $sea in distinct-values (doc("mondial.xml")//island/tokenize(@sea,"\s"))
let $count := count(doc("mondial.xml")//island[@sea = $sea]/tokenize(@sea,"\s"))
let $seacount := concat($sea," ",$count)
return $seacount

又回到了我身边

海洋-太古海洋3海-格林兰海0海-挪威海1海-巴伦茨海0

海-大西洋53海-拉布拉多海0.“等等。

如您所见,数字是$count,而sea部分是变量$sea。我现在要坚持的是选择$sea,它的最大值为$count的所有计数,并显示这个海名。我尝试过向以下内容添加一个$max变量:

代码语言:javascript
复制
 for $sea in distinct-values (doc("mondial.xml")//island/tokenize(@sea,"\s"))
let $count := count(doc("mondial.xml")//island[@sea = $sea]/tokenize(@sea,"\s"))
let $seacount := concat($sea," ",$count)
$max := concat($sea," ",max($count))
return $max

还尝试通过$count (降序)语句添加一个order,然后返回第一个节点:

代码语言:javascript
复制
for $sea in distinct-values (doc("mondial.xml")//island/tokenize(@sea,"\s"))
let $count := count(doc("mondial.xml")//island[@sea = $sea]/tokenize(@sea,"\s"))
let $seacount := concat($sea," ",$count)
order by $count descending
return $seacount[1]

我是走错路了还是?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-28 20:20:00

这将返回结果序列的每个迭代的第一个节点。在这种情况下,$seacount总是一个1字符串的序列,所以您总是选择与('sea-value count')[1]等价的字符串,这就是单例字符串的值。若要只选择一个整体,请将整个查询包装为parens,以创建所有迭代的所有值的序列,然后选择其中的第一个:

代码语言:javascript
复制
(for $sea in distinct-values (doc("mondial.xml")//island/tokenize(@sea,"\s"))
let $count := count(doc("mondial.xml")//island[@sea = $sea]/tokenize(@sea,"\s"))
let $seacount := concat($sea," ",$count)
order by $count descending
return $seacount)[1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29321671

复制
相关文章

相似问题

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