2

I am using Saxon, version 9.8.0.6 with this input document:

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

And this query

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()})

Output is (as expected):

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

Question:

'keywords': array{ for $k in /simple/keyword return data($k) } seems a little clumsy for me. Is this the way to do it? Any suggestions for improving?

rmuller
  • 12,062
  • 4
  • 64
  • 92

1 Answers1

3

You could reduce

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

to

array{data(/simple/keyword)}
Michael Kay
  • 156,231
  • 11
  • 92
  • 164