【发布时间】:2014-05-30 08:54:36
【问题描述】:
我的文档是 XML 格式的,我需要根据这个文档构造一个 JSON 格式。首先,我创建了一个返回正确 XML 结构的查询,但是当我将此查询转换为返回 JSON 时,我遇到了 For Return 问题。
Error: [1.0-ml] XDMP-UNDVAR: (err:XPST0008) Undefined variable $cat
原始查询:
let $tree :=
<tree>{for $cat in distinct-values($doc//ns:category/@name)
return <cat name="{$cat}">
{ for $var in $doc//ns:category[@name = $cat]//ns:variable/@name
return <var name="{$var}">
}
</var>
}
</cat>
}
</tree>
return $tree
数据:
<category name="Catname">
<variable name="Varname">
<segment name="Seg1">9</segment>
<segment name="Seg2">33</segment>
<segment name="Seg3">32</segment>
<segment name="Seg4">22</segment>
</variable>
<variable name="Vartwo">
<segment name="Seg2one">1</segment>
<segment name="Seg2two">2</segment>
</variable>
</category>
<category> ....
新查询:
let $tree :=
json:array(
<json:array xmlns:json="http://marklogic.com/xdmp/json"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<json:value xsi:type="xs:string">
{for $cat in distinct-values($doc//ns:category/@name) return $cat}
</json:value>
<json:array>
{for $var in $doc//ns:category[@name = $cat]//ns:variable/@name return $var}
</json:array>
</json:array>
)
return $tree
预期输出
{"Catname": ["Varname": ["Seg1", "Seg2", "Seg3"], "Vartwo": ["Seg2one", "Seg2two"]]},
{"Cat2" ... }
【问题讨论】:
-
您可以添加您想要的 JSON 输出吗?