【问题标题】:How to write Content Transformations using xquery in marklogic?如何在 marklogic 中使用 xquery 编写内容转换?
【发布时间】:2019-03-25 08:09:09
【问题描述】:

我有一个 javascript 函数 (.sjs) 将返回一个字符串。 现在,我要编写一个将通过 dmsdk 触发的 xquery 转换。 Xquery 函数将接受一个 json 文档,在这个转换中我需要触发将返回一个字符串的 javascript 函数。现在,我需要使用该字符串作为 uri 来加载文档。 我对xquery一无所知!

myXquery transformation function(jsonDoc)
{
/////////////////
myJavaScript function- which return a string
load the doc using this string as uri
}

【问题讨论】:

  • 对于 XQuery 内容转换,只是想确认一下,您想将 JSON doc 转换为 XML 或 STRING。
  • 无需转换,1.获取 json 作为输入 2.从我的 javascript 函数中获取字符串 3.将此字符串作为 uri 写入该 json

标签: xquery marklogic


【解决方案1】:

使用下面的查询:

    declare namespace local ="local";

    declare function local:transformation($json-input, $json-uri as xs:string)
    {
    xdmp:save(concat("D:\", $json-uri), $json-input)(:Here I saved file on local path, If you want to save on Marklogic-DB use-: xdmp:document-insert( $json-uri, $json-input) :)

    };
    (:1:)
    let $input := '{"menu":{"id":"file", "value":"File"}}'
    for $json-input in $input
    (:2 Call here your Javascript function for json-uri :)
    let $json-uri :="json_first.json"

    return local:transformation(xdmp:unquote($json-input), $json-uri)

【讨论】:

  • 如何将输入从 xquery 传递给我的 javascript 函数? let $content :='{"fname":"Deepan","lname":"Chelliah"}' let $input := "fname,lname" let $actual := xdmp:javascript-eval( "var simple = require ('/wdsUtils.sjs'); simple.createUri($content,$input);") return $actual
  • 为什么需要将输入传递给 javascript 函数,只需要从 Javascript 函数中获取 URI
猜你喜欢
  • 2015-06-22
  • 1970-01-01
  • 2011-11-23
  • 2019-09-08
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多