saxon - XQuery : best way to convert node sequence to array

标签 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) } 对我来说似乎有点笨拙。这是这样做的方法吗?有什么改进建议吗?

最佳答案

你可以减少

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

array{data(/simple/keyword)}

关于saxon - XQuery : best way to convert node sequence to array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189164/

相关文章:

java - 如何在Java中递归地从xml属性读取数据并将其存储在CSV中

javascript - 使用 javascript 调用 XQuery

xml - 为什么 group by $variable/@attribute 不起作用?

spring-boot - 使用 XQuery 记录日志

xml - 返回表达式中的XQuery变量未解析其值

java - XQuery 使用 Saxon 9-HE 执行 Java 函数

xml - 使用 ant 和 xslt 动态连接 xml 文件

gnu-make - 使用 gnu make 中的一个命令从多个文件制作多个文件

xml - 使用 XSLT 标记匹配正则表达式的文本?