{
for $movie in distinct-values(doc("movies.xml")/movies/movie)
where count(doc("movies.xml")/movies/movie[title=$movie/title]) = count(distinct-values(doc("movies.xml")/movies/movie/source))
return
<title> {$movie/title} </title>
}
在这个特定的查询中,我试着:查找“电影”文档中所有来源提供的电影标题。我在where子句的行上收到错误。错误是:'/'的第一个操作数的必需项类型是node();提供的值具有项类型xs:anyAtomicType
答案 0 :(得分:0)
问题是distinct-values()
返回不同的字符串值,因此您尝试在字符串上使用xpath表达式。 $movie/title
评估为(xs:string)/title
无效并引发异常。
但是我理解你的目标的方式,我认为查询不会返回你想要的结果。尝试使用此解决方案返回从所有来源提供的电影标题:
let $sources-distinct-all := count(distinct-values(doc("movies.xml")/movies/movie/source))
for $title in distinct-values(doc("movies.xml")/movies/movie/title)
let $sources-distinct-movie := count(distinct-values(doc("movies.xml")/movies/movie[title eq $title]/source))
where ($sources-distinct-all eq $sources-distinct-movie)
return $title