Xquery 是否查找子元素的总数?
如何编写XQuery以显示作者的图书总数?一种方法是:Xquery 是否查找子元素的总数?,xquery,Xquery,如何编写XQuery以显示作者的图书总数?一种方法是: <?xml version="1.0" encoding="UTF-8"?> <root> <author> <name>A</name> <book>Book1</book> <book>Book2</book> </author> <auth
<?xml version="1.0" encoding="UTF-8"?>
<root>
<author>
<name>A</name>
<book>Book1</book>
<book>Book2</book>
</author>
<author>
<name>B</name>
<age>45</age>
<book>Book3</book>
</author>
</root>
它将返回所有著有最多数量书籍的作者
作为一个衬里,这可以简化为:
let $max-books = max(/root/author/count(book))
return /root/author[count(book) = $max-books]
另一种方法是:
/root/author[count(book) = max(/root/author/count(book))]
这将返回一位拥有最多图书数量的作者。@Fox:你不应该在这个问题上加上家庭作业标签吗- @奥利弗·哈勒姆:嗯,@Fox想列出每个作者以及该作者的图书数量,而不是图书数量最高的作者 你的第一个问题
(for $author in /root/author
order by count($author/book) descending
return $author/name)[1]
包含语法错误。您应该使用:=而不是仅使用=。此外
@福克斯:要找到解决办法,请看一看。可以使用for部分使用XPath表达式选择每个book节点,并将每个节点绑定到$book变量。然后使用let部分以$book为起点定义两个变量$authorName和$amountOfBooks。最后,使用返回部分定义生成的XML所需的输出格式
let $max-books = max(/root/author/count(book))
return /root/author[count(book) = $max-books]