我有这个doc xml(简短版本):
Actions action = new Actions(Driver);
action.MoveToElement(firstCategoryTitle).Click().Build().Perform();
Thread.Sleep(5000);
firstCategoryTitle.GetCssValue("background-color").Should().Be("rgba(0, 155, 212, 1)");
艺术家在电影(电影)中播放,艺术家在<Artiste>
<artiste a_id="A62" a_p_id="UK" a_date_nais="07/06/1952" a_sexe="M">
<a_prenom>Liam</a_prenom>
<a_nom>Neeson</a_nom>
</artiste>
<artiste a_id="A66" a_p_id="UK" a_date_nais="08/09/1971" a_sexe="M">
<a_prenom>Martin</a_prenom>
<a_nom>Freeman</a_nom>
</artiste>
<Film>
<film f_id="F1" f_p_id="FR" f_r_id="A61">
<f_genre>P</f_genre>
<f_titre>Banlieue 13</f_titre>
<f_date_sortie>10/11/2004</f_date_sortie>
<f_resume>fiction française</f_resume>
<f_role ro_nom="Leïto" ro_a_id="A63"/>
<f_role ro_nom="Lola" ro_a_id="A64"/>
</film>
<film f_id="F2" f_p_id="NZ" f_r_id="A59">
<f_genre>A</f_genre>
<f_titre>Les seigneurs des anneaux</f_titre>
<f_date_sortie>19/12/2005</f_date_sortie>
<f_resume>fiction américaine</f_resume>
<f_role ro_nom="Pêcheur" ro_a_id="A25"/>
<f_role ro_nom="Sirène" ro_a_id="A2"/>
</film>
</Film>
中具有“ a_id”字段,该字段与Artiste
中ro_a_id中的字段相同
我想选择至少参加过2部电影(Film
)的每位艺术家的名字和名字(a_prenom, a_nom
)
这就是我所做的:
film
所以我不知道如何加入和提出请求,我也不知道如何返回2个字段(我知道for $artiste in doc('S:/path/file.xml')//Artiste/artiste
(: retrieve film $artiste is working in :)
let $film := ('S:/path/file.xml')//Film/film[@ro_a_id=$artiste/@a_id]
where count(@ro_a_id)>=2
order by $artiste/@a_id
return $x/a_nom, $x/a_prenom
行会产生错误)
答案 0 :(得分:1)
您非常接近,但是您的查询有两个问题:
return
子句引用了未定义的变量$x
。应将其更改为$artiste
($artiste/a_nom, $artiste/a_prenom)
。或者,您可以返回单个项目,例如,通过将两个名称部分与concat($artiste/a_nom, " ", $artiste/a_prenom)
串联而创建的字符串。where
子句应引用$film
变量,特别是$film/f_role/@ro_a_id
。 where
子句即使已修复也将导致0次点击。我已经向http://xqueryfiddle.liberty-development.net/nbUY4kp/1发布了修订的查询,其中显示了这些建议的更改。您会看到我注释了where
子句,以便我们得到一些结果。
答案 1 :(得分:1)
使查询工作最简单的方法如下:
for $artiste in doc('S:/path/file.xml')//Artiste/artiste
(: retrieve film $artiste is working in :)
let $film := doc('S:/path/file.xml')//Film/film[f_role/@ro_a_id=$artiste/@a_id]
where count($film)>=2
order by $artiste/@a_id
return ($artiste/a_nom, $artiste/a_prenom)
以下是我更改的内容:
('S:/path/file.xml')
应该是doc('S:/path/file.xml')
。@ro_a_id
是f_role
的属性,而不是film
的属性。film
元素,@ro_a_id
不在第4行的范围内。$x
从未声明过,您可能是说$artiste
。$artiste/a_prenom
不是它的一部分。您可以通过将两个部分都用括号括起来来解决这个问题。