Xml XQuery/XPath:如何计算特定值在不同元素中的出现次数?

Xml XQuery/XPath:如何计算特定值在不同元素中的出现次数?,xml,xpath,xquery,Xml,Xpath,Xquery,我试图编写一个查询,返回两个独立元素(“redaktør”(编辑器)和“forfatter”(作者))中出现最多的作者/编辑器。例如,下面我从XML中包含了两个bok元素。作者西蒙·格雷出现过两次,一次作为作者,一次作为编辑,而迈克尔·布伦达奇只出现过一次(作为作者)。从这个XML中,结果应该是Simon Gray 到目前为止,我有以下疑问: let $xml := doc('../Fagboker.xml') return ( for $name in ($xml//forfatter)

我试图编写一个查询,返回两个独立元素(“redaktør”(编辑器)和“forfatter”(作者))中出现最多的作者/编辑器。例如,下面我从XML中包含了两个bok元素。作者西蒙·格雷出现过两次,一次作为作者,一次作为编辑,而迈克尔·布伦达奇只出现过一次(作为作者)。从这个XML中,结果应该是Simon Gray

到目前为止,我有以下疑问:

let $xml := doc('../Fagboker.xml')
return
(
   for $name in ($xml//forfatter)
   order by count($xml//forfatter[. = $name]) descending
   return 
        <x>{$name}</x>
 )[1]
let$xml:=doc('../Fagboker.xml')
返回
(
对于($xml//forfatter)中的$name
按计数排序($xml//forfatter[.=$name])降序
返回
{$name}
)[1]
这只返回作者最常出现的内容。我还需要将其扩展到count编辑器。我尝试过以下查询:

let $xml := doc('../Fagboker.xml')
return
(
for $name in ($xml//forfatter)
    order by count($xml[. = $name] and $xml/*[parent::bok[child::redaktør]]) descending
return <x>{$name}</x>
)[1]
let$xml:=doc('../Fagboker.xml')
返回
(
对于($xml//forfatter)中的$name
按计数排序($xml[.=$name]和$xml/*[parent::bok[child::redaktør]])降序
返回{$name}
)[1]
无济于事。我是否需要完全重写这篇文章,或者是否有办法将“redaktør”包含在内


Java中的数据结构:从抽象数据类型到Java集合
框架
西蒙
灰色
2006
1.
编程
皮尔逊
第1部分:导言第1章:高等教育第1分章
XQuery:XML查询语言
布伦达吉
迈克尔
西蒙
灰色
2004
1.
XML
数据库
艾迪生卫斯理职业酒店
第1部分:简介第1章:Hei XPath
您可以使用union(
|
)运算符在一个XPath中同时选择
forfatter
redaktør

let $xml := doc('../Fagboker.xml')
return
(
    for $name in distinct-values(/fagbøker/bok/*[self::forfatter|self::redaktør])
    let $count := count(/fagbøker/bok/*[self::forfatter|self::redaktør][. eq $name])
    order by $count descending
    return <x>{$name}</x>
)[1]
let$xml:=doc('../Fagboker.xml')
返回
(
对于不同值的$name(/fagbøker/bok/*[self::forfatter | self::redaktør])
让$count:=count(/fagbøker/bok/*[self::forfatter | self::redaktør][.eq$name])
按$count降序排序
返回{$name}
)[1]

let $xml := doc('../Fagboker.xml')
return
(
    for $name in distinct-values(/fagbøker/bok/*[self::forfatter|self::redaktør])
    let $count := count(/fagbøker/bok/*[self::forfatter|self::redaktør][. eq $name])
    order by $count descending
    return <x>{$name}</x>
)[1]