0

タイトルで申し訳ありませんが、この質問に最適なタイトルを知りませんでした

で困ってい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>

何が欠けているのかわからない

ありがとうございました

4

1 に答える 1

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... 1 つしかない要素を見つけます(for ループが役に立たなくなります)。$b/Equipe/equipeId次に、とを検索します$b/Equipe/equipeNom。どちらも複数の要素を含むリストとして評価され、これら 2 つのリストを連結して出力​​を取得します。

于 2012-07-12T15:22:10.790 に答える