如何从字符串中选择某些nodes/words
How to choose certain nodes/words from a string
我有这个代码
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
哪个returns对我来说
"sea-ArcticOcean 3 sea-Greenlandsea 0 sea-NorwegianSea 1 sea-BarentsSea 0
sea-Atlantic 53 sea-LabradorSea 0 ...”等等。
数字就是$count,sea-XXX部分就是变量$sea。我现在坚持的是以某种方式选择 $sea ,它具有所有计数的最大值 $count 并显示该海名。我尝试过将 $max 变量添加到:
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(降序)语句添加订单,然后返回第一个节点:
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]
我是不是用错了方法?
这将 return 结果序列的第一个节点 对于每个 迭代。在这种情况下,$seacount
始终是 1 个字符串的序列,因此您总是 selecting 等效于 ('sea-value count')[1]
,这只是单一字符串值。为了 select 只有一个整体,将整个查询包装在括号中以创建所有迭代的所有值的序列,然后 select 第一个:
(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]
我有这个代码
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
哪个returns对我来说
"sea-ArcticOcean 3 sea-Greenlandsea 0 sea-NorwegianSea 1 sea-BarentsSea 0
sea-Atlantic 53 sea-LabradorSea 0 ...”等等。
数字就是$count,sea-XXX部分就是变量$sea。我现在坚持的是以某种方式选择 $sea ,它具有所有计数的最大值 $count 并显示该海名。我尝试过将 $max 变量添加到:
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(降序)语句添加订单,然后返回第一个节点:
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]
我是不是用错了方法?
这将 return 结果序列的第一个节点 对于每个 迭代。在这种情况下,$seacount
始终是 1 个字符串的序列,因此您总是 selecting 等效于 ('sea-value count')[1]
,这只是单一字符串值。为了 select 只有一个整体,将整个查询包装在括号中以创建所有迭代的所有值的序列,然后 select 第一个:
(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]