xQuery - 计数功能

thr*_*ash 7 xquery

我希望形成一个xQuery,如果这个类别包含超过x的书籍,它将返回书籍的类别.例如,如果我有4个类别; 音乐,电影,教育,健康和他们都有1本书,除了音乐有3,我正在寻找列出该类别.我尝试了一系列查询,但似乎无法正确使用,我每次都没有得到任何结果,我相信我需要在某些时候使用不同的值?不太确定.

源的例子可以看到下面,即时通讯在犯规源保存为一个文件,所以对我来说,测试的XQuery已经开始使用编辑器测试查询:

例如,$ book in/bookstore/book ...

<bookstore>        
<book category="Music">
            <year>  2005  </year>
            <price>  50  </price>
        </book>
    <book category="Music">
            <year>  2010  </year>
            <price>  35  </price>
        </book>
    <book category="Music">
            <year>  1982  </year>
            <price>  70  </price>
        </book>
    <book category="Film">
            <year>  2000  </year>
            <price>  10  </price>
        </book>
    <book category="Health">
            <year>  1965  </year>
            <price>  50  </price>
        </book>
    <book category="Education">
            <year>  2012  </year>
            <price>  70  </price>
        </book>
</bookstore>
Run Code Online (Sandbox Code Playgroud)

任何帮助都非常感谢!

Dan*_*ley 5

类似于@ koopajah的答案,因为我已经写了它,我会提交它...

for $category in distinct-values(/*/book/@category)
where count(/*/book[@category=$category]) >= 3
return
    <results>{$category}</results>
Run Code Online (Sandbox Code Playgroud)

有了外部文件......

let $doc := doc('input.xml')

for $category in distinct-values($doc/*/book/@category)
where count($doc/*/book[@category=$category]) >= 3
return
    <results>{$category}</results>
Run Code Online (Sandbox Code Playgroud)

来自评论的修改xquery ...

for $x in doc('input.xml')/bookstore 
for $y in distinct-values($x/book/@category) 
where count($x/book[@category=$y]) >= 3 
return $y 
Run Code Online (Sandbox Code Playgroud)