我想在XQUERY中加入文档和序列。 我正在尝试这段代码:
let $in_xml :=
<ss>
<s>
<p>2016/2/18/11/protocol13818.xml</p>
<n>service1_1</n>
<d>2016-04-01</d>
</s>
<s>
<p>2016/2/18/15/protocol13819.xml</p>
<n>service_2</n>
<d>2016-04-02</d>
</s>
</ss>
for $a in /version,
$i in $in_xml
where $a/fn:base-uri() = $i/s/p
return <a>{$a//id/value/text()," ", $i//n}</a>
得到这个结果:
<a>c2e9bb01-acc1-4a64-b39b-f30ef514c5ec <n>service1_1</n>
<n>service_2</n>
</a>
<a>50543b71-48b8-41f6-956e-b444c5ad0abe <n>service1_1</n>
<n>service_2</n>
</a>
为什么不过滤序列? 我想,结果将如下所示:
<a>c2e9bb01-acc1-4a64-b39b-f30ef514c5ec <n>service1_1</n>
</a>
<a>50543b71-48b8-41f6-956e-b444c5ad0abe <n>service1_2</n>
</a>
我该怎么做?有任何想法吗?谢谢!
答案 0 :(得分:1)
执行$i in $in_xml
时,您遍历$in_xml
中的每个元素,这只是$in_xml
本身,因为它是元素而不是序列。要迭代$in_xml
的所有子项,您需要选择它们:
你想要像
这样的东西for $a in /version,
$i in $in_xml/s
where $a/fn:base-uri() = $i/p
return <a>{$a//id/value/text()," ", $i/n}</a>