Xml Xquery并以

Xml Xquery并以,xml,xquery,Xml,Xquery,我对Xquery有问题 我有以下XML: <peliculas> <pelicula fechaEstreno='2007'> <titulo>Los Otros</titulo> <director>Alejandro Amenabar</director> </pelicula> <pelicula fechaEstreno='1986'> <titulo>Sa

我对Xquery有问题

我有以下XML:

<peliculas>
<pelicula fechaEstreno='2007'>
    <titulo>Los Otros</titulo>
    <director>Alejandro Amenabar</director>
</pelicula>
<pelicula fechaEstreno='1986'>
    <titulo>Sangre Facil</titulo>
    <director>Ethan Coen</director>
</pelicula>
<pelicula fechaEstreno='1990'>
    <titulo>No es pais para viejos</titulo>
    <director>Ethan Coen</director>
    <director>Joel Coen</director>
</pelicula>
<pelicula fechaEstreno='2007'>
    <titulo>The Lovely Bones</titulo>
    <director>Peter Jackson</director>
</pelicula>
</peliculas>

神鬼第六感
亚历桑德罗·亚曼巴
桑格雷面部
伊桑·科恩
不,我是帕拉维约斯
伊桑·科恩
乔尔·科恩
可爱的骨头
彼得·杰克逊
我需要显示“titulo”,其中“director”以“A”开头。所以我尝试了这样的方法:

for $c in doc('C:\...\pelis.xml') //pelicula
where starts-with($c/director, 'A')
return
<pelicula>
{$c/titulo}
</pelicula>
用于文档中的$c('c:\…\pelis.xml')//pelicula
其中以($c/主管,'A'开头)
返回
{$c/titulo}
但我有一个错误:

需要项,找到序列:(元素控制器{…},…)

我以前使用过“ends with”,我认为它的语法也与“starts with”类似,但它不起作用


我该怎么做呢?

对于第三个
pelicula
元素,XPath
$c/director
返回两个元素的序列:

(
  <director>Ethan Coen</director>,
  <director>Joel Coen</director>
)
以下是一个您可以替代的示例:

for $c in doc('C:\...\pelis.xml')//pelicula
where
    some $director in $c/director
    satisfies starts-with($director, 'A')
return <pelicula>{
    $c/titulo
}</pelicula>
用于文档中的$c('c:\…\pelis.xml')//pelicula
哪里
大约$c/director中的$director
以($director,'A'开头)
返回{
$c/提特罗
}
使用一些XPath技巧,您甚至可以使其变得更加简洁:

for $c in doc('C:\...\pelis.xml')//pelicula[director[starts-with(., 'A')]]
return <pelicula>{
    $c/titulo
}</pelicula>
doc中的$c('c:\…\pelis.xml')//pelicula[director[以(,'A')]开头]
返回{
$c/提特罗
}

这比“以…结尾”要复杂一点。。。我不知道“一些……满足”的存在。但它是有效的。非常感谢。是什么让你认为
fn:以(…)
结尾的工作方式不同?它也不允许多个项目的序列。我将在回答中添加一个使用XPath谓词的更简洁的解决方案。
for $c in doc('C:\...\pelis.xml')//pelicula[director[starts-with(., 'A')]]
return <pelicula>{
    $c/titulo
}</pelicula>