Xquery:从文档中检索值并将其放入单个映射中

问题描述 投票:0回答:1

我目前正在使用 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,它不会改变任何东西。

我在路上错过了什么吗?

非常感谢您的帮助!

dictionary xquery data-retrieval
1个回答
0
投票

使用

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 元素。

© www.soinside.com 2019 - 2024. All rights reserved.