对不起标题,我不知道这个问题的最佳标题是什么
我遇到XQUERY
的困难。结果不是我的预期
这是xml
<Equipes>
<Equipe>
<equipeId>1</equipeId>
<equipeNom>Equipe A</equipeNom>
<JoueurEquipe>
<dateDebut>2011-01-01</dateDebut>
<dateFin>2013-01-01</dateFin>
<numero>1</numero>
<joueurId>1</joueurId>
</JoueurEquipe>
<JoueurEquipe>
<dateDebut>2010-01-01</dateDebut>
<dateFin>2012-01-01</dateFin>
<numero>2</numero>
<joueurId>2</joueurId>
</JoueurEquipe>
</Equipe>
<Equipe>
<equipeId>2</equipeId>
<equipeNom>Equipe B</equipeNom>
<JoueurEquipe>
<dateDebut>2009-01-01</dateDebut>
<dateFin>2012-01-01</dateFin>
<numero>1</numero>
<joueurId>3</joueurId>
</JoueurEquipe>
<JoueurEquipe>
<dateDebut>2010-01-01</dateDebut>
<dateFin>2014-01-01</dateFin>
<numero>2</numero>
<joueurId>4</joueurId>
</JoueurEquipe>
</Equipe>
</Equipes>
这是查询
for $b in doc("ligue.xml")/ligue/Equipes
return
<Equipes>
{
$b/Equipe/equipeId,
$b/Equipe/equipeNom
}
</Equipes>
结果是
<equipes>
<equipeId>1</equipeId>
<equipeId>2</equipeId>
<equipeNom>Equipe A</equipeNom>
<equipeNom>Equipe B</equipeNom>
</equipes>
我需要的是
<equipes>
<equipeId>1</equipeId>
<equipeNom>Equipe A</equipeNom>
<equipeId>2</equipeId>
<equipeNom>Equipe B</equipeNom>
</equipes>
我不知道我错过了什么
谢谢
答案 0 :(得分:3)
迭代你实际想要输出迭代的东西:
<Equipes>{
for $b in doc("ligue.xml")/ligue/Equipes/Equipe[equipeId][equipeNom]
return ($b/equipeId, $b/equipeNom)
}</Equipes>
现在,让我们探讨为什么您的先前查询的行为。这样:
for $b in doc("ligue.xml")/ligue/Equipes
return
<Equipes>
{
$b/Equipe/equipeId,
$b/Equipe/equipeNom
}
</Equipes>
...找到Equipes
元素,其中只有一个元素(使for循环无效)。然后它搜索$b/Equipe/equipeId
和$b/Equipe/equipeNom
,两者都评估包含多个元素的列表,并连接这两个列表以获得输出。