【问题标题】:How to insert an XML tag using transforms in Marklogic?如何在 Marklogic 中使用转换插入 XML 标记?
【发布时间】:2015-03-30 09:58:22
【问题描述】:

我有 xml 文档,需要使用 marklogic 中的转换向现有 xml 添加一个额外的标签。这不能使用任何 xquery。

所有代码都必须是javascript。

以下是向 JSON 添加新标签的代码:

function insertTimestamp(context, params, content)
{
  workaround(context);
  if (context.inputType.search('json') >= 0) {
    var result = content.toObject();
    if (context.acceptTypes) {                 /* read */
      result.readTimestamp = fn.currentDateTime();
    } else {                                   /* write */
      result.writeTimestamp = fn.currentDateTime();
    }
    return result;
  } else {
    /* Pass thru for non-JSON documents */
    return content;
  }
};

exports.transform = insertTimestamp;

以同样的方式,我需要将标签添加到 XML(而不是 JSON)。

【问题讨论】:

    标签: javascript xml json transformation marklogic


    【解决方案1】:

    即使您使用的是用 XQuery 编写的库模块,也可以使用服务器端 JavaScript。例如,您可以使用Ryan Dew's XQuery XML Memory Operations library

    var mem = require('/lib/memory-operations.xqy');
    
    mem.insertChild(...);
    

    请注意,您从 XQuery 导入的蠕虫大小写名称将在 JavaScript 中作为驼峰大小写名称进行访问。

    【讨论】:

      【解决方案2】:

      与 XQuery 一样,节点在服务器端 JavaScript 中是不可变的。

      要修改 XML 结构,策略是通过复制要保留的节点、省略要删除的节点并创建要插入的新节点来创建新结构。

      在服务器端 JavaScript 中,您可以使用构建器 API 创建新的 XML 结构:

      http://docs.marklogic.com/guide/jsref/api#id_90865

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        • 2010-11-21
        • 2014-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多