XQuery 示例(使用 Saxon-HE,版本 9.8.0.6)
xquery version "3.1";
let $xml := <simple>
<hello>Hello World!</hello>
</simple>
return fn:serialize(map{
'greeting': data($xml/hello),
'number': data($xml/number) (: ? how to add this entry only if there is a number ? :)
}, map{'method':'json', 'indent':true()})
输出:
{
"number":null,
"greeting":"Hello World!"
}
问题
如何防止带有null
值的条目(在本例中为“数字”)?或者更具体地说,在这种情况下:只有当它是一个数字时,如何添加“数字”条目?
注意:我知道map:entry
和map:merge
。我正在寻找没有这些功能的解决方案,所以“内联”(在地图构造函数中)。
更新
根据@joewiz 的回答,这是不可能的。这是我们能得到的最接近的:
xquery version "3.1";
declare namespace map="http://www.w3.org/2005/xpath-functions/map";
let $xml := <simple>
<hello>Hello World!</hello>
</simple>
return fn:serialize(
map:merge((
map:entry('greeting', data($xml/hello)),
let $n := number($xml/number) return if ($n) then map:entry('number', $n) else()
)),
map{'method':'json', 'indent':true()})