在XQuery FLWOR中分组,为每个键生成以空格分隔的值列表

在XQuery FLWOR中分组,为每个键生成以空格分隔的值列表,xquery,flwor,Xquery,Flwor,我有一个包含5篇文章的XML,每一篇都是: <root> <article> <c0> <number> </number> <price> </price> </c0> <c1> <name> NewArtc1 </name> &l

我有一个包含5篇文章的XML,每一篇都是:

<root>
<article>
    <c0>
        <number>
        </number>
        <price> 
        </price>
   </c0>
   <c1>
        <name> NewArtc1
        </name>
        <nameUs>TheBest
        </nameUs>
    </c1>
    <c2>
        <name> c2_1
        </name> 
        <nameUs>NotTheBest
        </nameUs>
     </c2>
    <c2>
        <name> c2_2
        </name> 
        <nameUs>TheBest
        </nameUs>
    </c2>
    <c2>    
        <name> c2_3
        </name> 
        <nameUs>NotTheBest
        </nameUs>
   </c2>
   <c2>
        <name> c2_4
        </name> 
        <nameUs>TheBest
        </nameUs>
   </c2>
   <c2>
        <name> c2_5
        </name>     
        <nameUs>NotTheBest
        </nameUs>
   </c2>            
  </article>
<article> ...
</root>

新艺术C1
最好的
c2_1
不是最好的
c2_2
最好的
c2_3
不是最好的
c2_4
最好的
c2_5
不是最好的
...
每个项目都有几个特征(c0、c1、c2等)。我需要使用XQuery(FLWOR)返回c1的名称。后面是c2的名称,其nameUs节点的文本与nameUs节点c1的文本匹配(每篇文章有5个c2)。对于每篇文章,输出格式应为:

<c1> 
  <name>NewArtc1</name>
  <c2s>c2_2 c2_4</c2s>
</c1>

<c1> 
  <name>NewArtc2</name>
  <c2s>c2_3 c2_5</c2s>
</c1>

新艺术C1
c2_2 c2_4
纽瓦特2
c2_3 c2_5
请帮助我:/I我已经这样做了,但它返回的是对,而不是我需要的输出格式:

for $a in doc("articles.xml")//article, $i in 1 to 5
let $b:=$a/c1/nameUs
let $c:=$a/c2[$i]/nameUs
where $b/text() and $b/text()=$c/text()
return <c1>{$b/name}<c2>{$c/name/text()}</c2></c1>
doc中的$a(“articles.xml”)//article中的$i为1到5
设$b:=$a/c1/nameUs
让$c:=$a/c2[$i]/nameUs
其中$b/text()和$b/text()=$c/text()
返回{$b/name}{$c/name/text()}

也许可以试试

for $arcticle in /root/article
let $name   := $arcticle/c1/name/normalize-space()
let $nameUs := $arcticle/c1/nameUs/normalize-space()
return
    <c1>
        <name>{$name}</name>
        <c2s>{$arcticle/c2[normalize-space(nameUs)=$nameUs]/name/normalize-space()}</c2s>
    </c1>
用于/root/article中的$article
让$name:=$arcticle/c1/name/normalize-space()
让$nameUs:=$arcticle/c1/nameUs/normalize-space()
返回
{$name}
{$arcticle/c2[normalize space(nameUs)=$nameUs]/name/normalize-space()}

也许可以试试

for $arcticle in /root/article
let $name   := $arcticle/c1/name/normalize-space()
let $nameUs := $arcticle/c1/nameUs/normalize-space()
return
    <c1>
        <name>{$name}</name>
        <c2s>{$arcticle/c2[normalize-space(nameUs)=$nameUs]/name/normalize-space()}</c2s>
    </c1>
用于/root/article中的$article
让$name:=$arcticle/c1/name/normalize-space()
让$nameUs:=$arcticle/c1/nameUs/normalize-space()
返回
{$name}
{$arcticle/c2[normalize space(nameUs)=$nameUs]/name/normalize-space()}

向我们展示您迄今为止所做的尝试。对于$a在doc(“articles.xml”)//article,$i在1到5中让$b:=$a/c1/nameUs让$c:=$a/c2[$i]/nameUs其中$b/text()和$b/text()=$c/text()返回{$b/name}{$c/name/text()}请帮助我,我不知道我还能做些什么,告诉我们您到目前为止都做了些什么,$i在1到5中让$b:=$a/c1/nameUs让$c:=$a/c2[$i]/nameUs其中$b/text()和$b/text()=$c/text()返回{$b/name}{$c/name/text()}请帮帮我,我不知道还能做什么