【发布时间】:2014-04-17 15:01:43
【问题描述】:
我需要从地图创建一个特定格式的文档
我有以下代码:
declare function local:buid-map-doc(
$wijk as xs:string,
$wm as map:map) as element()
{
let $a := for $k in map:keys($wm)
let $v := map:get($wm,$k)
return element x {$v}
return <y>{$a}</y>
};
let $wijk := "101101"
let $wm := map:map()
let $p := map:put($wm, "cat1:::k1",45683)
let $p := map:put($wm, "cat1:::k2",123)
let $p := map:put($wm, "cat2:::k2",123)
return local:buid-map-doc($wijk,$wm)
给予:
<y>
<x>123</x>
<x>123</x>
<x>45683</x>
</y>
但我想要 map:keys i 元素名称... 如果我这样做:
declare function local:buid-map-doc(
$wijk as xs:string,
$wm as map:map) as element()
{
let $a := for $k in map:keys($wm)
let $v := map:get($wm,$k)
return element {$k} {$v}
return <y>{$a}</y>
};
let $wijk := "101101"
let $wm := map:map()
let $p := map:put($wm, "cat1:::k1",45683)
let $p := map:put($wm, "cat1:::k2",123)
let $p := map:put($wm, "cat2:::k2",123)
return local:buid-map-doc($wijk,$wm)
然后我得到如下错误:
[1.0-ml] XDMP-QNAMELEXFORM: let $s := fn:QName("http://www.example.com/example", "k") -- QName 的词法形式无效
添加:
理想情况下,我希望得到这样的输出,可能还有更深的嵌套:
<results>
<cat1>
<k1>45683</k1>
<k2>123</k2>
</cat1>
<cat2>
<k2>123</k2>
</cat2>
</results>
【问题讨论】:
标签: marklogic