xquery错误:使用where子句时

时间:2012-10-31 18:03:15

标签: xquery

{
    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

1 个答案:

答案 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