在 XQuery FLWOR 中分组,为每个键生成 space 分隔的值列表
Grouping in XQuery FLWOR to generate a space-separated list of values for each key
我有一个 XML 有 5 篇文章,每篇文章:
<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>
每个项目都有几个特征(c0、c1、c2 等)。我需要使用 XQuery (FLWOR) return c1 的名称。 nameUs节点的文本与nameUs节点c1的文本匹配的c2的名称(每篇文章有5个c2)输出格式应该是,对于每篇文章:
<c1>
<name>NewArtc1</name>
<c2s>c2_2 c2_4</c2s>
</c1>
<c1>
<name>NewArtc2</name>
<c2s>c2_3 c2_5</c2s>
</c1>
请帮助我:/我已经这样做了,但是它 returns 对,不是我需要的输出格式:
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>
也许可以试试...
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>
我有一个 XML 有 5 篇文章,每篇文章:
<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>
每个项目都有几个特征(c0、c1、c2 等)。我需要使用 XQuery (FLWOR) return c1 的名称。 nameUs节点的文本与nameUs节点c1的文本匹配的c2的名称(每篇文章有5个c2)输出格式应该是,对于每篇文章:
<c1>
<name>NewArtc1</name>
<c2s>c2_2 c2_4</c2s>
</c1>
<c1>
<name>NewArtc2</name>
<c2s>c2_3 c2_5</c2s>
</c1>
请帮助我:/我已经这样做了,但是它 returns 对,不是我需要的输出格式:
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>
也许可以试试...
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>