我目前正在使用 Xquery,我的目标是从不同的 XML 文档(1000+)中检索值,所有这些值都在同一个文件夹(“myFolder”)中,然后放入地图中。
键将是值“类型”,键中的值将是唯一标识符。
原始文档的结构如下:
<document>
<!-- some siblings -- >
<type>type1</type>
<!-- some siblings -- >
<id>id1</id>
<!-- some siblings -- >
</document>
最终的地图如下:
map {
type1: id1, id3, id4, id7(…)
type2: id2, id8(…)
type3: id5, id6(...)
}
我尝试了这段代码:
for $singleDoc in fn:collection($myURI ||"/myFolder/")
let $map= map:merge(for $t in distinct-values($singleDoc//type/string()) return
map:entry($t, $singleDoc//id/string()))
return $map
但是它返回了一个map pro文档,这不是目标。如果我然后映射:合并生成的 $map,它不会改变任何东西。
我在路上错过了什么吗?
非常感谢您的帮助!
使用
map:merge(
for $doc in fn:collection($myURI ||"/myFolder/")
group by $type := $doc//type
return map { $type : $doc//id }
)
或者也许
map:merge(
for $doc in fn:collection($myURI ||"/myFolder/")
group by $type := $doc//type
return map { $type : data($doc//id) }
)
原子 id 值而不是映射中的 id 元素。