XQuery:将节点序列转换为数组的最佳方法

时间:2017-11-08 20:35:40

标签: saxon xquery-3.0

我正在使用Saxon,版本9.8.0.6以及此输入文档:

<simple>
  <hello>Hello World!</hello>
  <number>42</number>
  <keyword>abc</keyword>
  <keyword>def</keyword>
  <keyword>ghi</keyword>
</simple>

这个查询

xquery version "3.1";
fn:serialize(map{
  'greeting': data(/simple/hello),
  'number': number(/simple/number),
  'keywords': array{ for $k in /simple/keyword return data($k) }
}, map{'method':'json', 'indent':true()})

输出(正如预期的那样):

{
  "number":42,
  "keywords": [
    "abc",
    "def",
    "ghi"
   ],
  "greeting":"Hello World!"
 }

问题:

'keywords': array{ for $k in /simple/keyword return data($k) }对我来说似乎有些笨拙。这是这样做的吗?有任何改进建议吗?

1 个答案:

答案 0 :(得分:1)

你可以减少

array{ for $k in /simple/keyword return data($k) }

array{data(/simple/keyword)}