XQuery 序列等效于 MarkLogic 服务器端 JavaScript

XQuery sequence equivalent in MarkLogic Server-Side JavaScript

本文关键字:MarkLogic 服务器端 JavaScript XQuery      更新时间:2023-09-26

我从一些XQuery改编了下面的代码。但是,当我运行它时,它只将文档插入集合B,而不是像等效的 XQuery 那样AB集合。

declareUpdate();
xdmp.documentInsert(
  'mydoc.xml',
  fn.head(xdmp.unquote(`<mydoc/>`)),
  xdmp.defaultPermissions(),
  ('A', 'B')
);

问题是('A', 'B') .在 XQuery 中,它表示两个字符串的序列。在 JavaScript 中,这被解释为两个语句并返回最后一个语句的结果,在本例中为 'B' 。因此,语法是有效的(这就是没有错误的原因(,但意图是不同的。一般来说,JavaScript 中 XQuery 序列的等效项是一个数组。因此上面的代码应该是

declareUpdate();
xdmp.documentInsert(
  'mydoc.xml',
  fn.head(xdmp.unquote(`<mydoc/>`)),
  xdmp.defaultPermissions(),
  ['A', 'B']
);

请注意 ['A', 'B'] 上的方括号。从 XQuery 复制粘贴到 JavaScript 时需要注意这一点。