我正在尝试为我的 xml 文件运行一个 xquery。这是我的输入 xml 文件:
<?xml version="1.0" ?>
<authors>
<author><name> Steven</name>
<title>advanced</title>
<title>TCPIP</title>
</author>
<author><name> George</name>
<title>DataMining</title>
<title>Economic</title>
</author>
<author><name> Den</name>
<title>TCPIP</title>
<title>Economic</title>
</author>
</authors>
我正在尝试对每个标题进行分组并计算每个标题的作者数量。书籍应按作者数量递增的顺序列出。对于每本书,按字母顺序输出其标题、作者数量和所有作者的姓名。最后,输出应该是这样的:
<bib>
<book authors="1">
<title>Advanced</title>
<author>Steven</authhor>
</book>
<book authors="1">
<title>DataMining</title>
<author>George</author>
</book>
<book authors="2">
<title>TCPIP</title>
<author>Den</author>
<author>Steven</author>
</book>
<book authors="2">
<title>Economic</title>
<author>Den</author>
<author>George</author>
</book>
</bib>
这是我的代码,它不起作用:(。有什么帮助吗?如果可能,请更正我的代码而不是编写新代码,因为我希望答案看起来像我的答案。
<bib>
{for $a in doc('test')//authors
let $T:={for $c in doc ('test')//authors/author[title=$a/author/title]
order by count($T)
return <book authors="{count($T)}">
{<title> {distinct-values($T/title)}
for $x in $T
order by $x/name()
return <author>{$x/name()}</author>}
</book>}
</bib>
我认为问题在于我尝试使用该let
命令的部分。据我所知,我可以通过 let 命令对数据进行分组。我尝试为 XML 文件中的每个标题获取所有作者,然后计算作者的数量并按名称对它们进行排序。我使用此链接:http ://basex.org/products/live-demo/来测试我的答案。