marklogic内容泵URI包含方括号

时间:2017-05-17 09:29:55

标签: uri marklogic marklogic-8 mlcp

我尝试使用MLCP导入和-output_uri_replace选项加载文档,例如

-output_uri_replace 
".*/,'',---,':',___,'/'" 

一切都很好,除了我需要在我的URI中保留方括号,MLCP始终将它们编码为%5B%5D

我尝试过不同的模式来强​​迫它(或根本没有模式)但是没办法......

-output_uri_replace
".*/,'',---,':',___,'/',\[,'U\+005B',\],'\]'"

任何具有相同经验或解决方案的人? :)

1 个答案:

答案 0 :(得分:0)

我也玩过一点,看起来像-output_uri_replace在uri编码之前执行。撤消不需要的uri编码的唯一安全方法是使用转换。像下面这样的东西似乎可以解决这个问题:

xquery version "1.0-ml";

module namespace ingest = "http://marklogic.com/ingest-transform";

declare option xdmp:mapping "false";

declare function ingest:transform(
  $content as map:map,
  $context as map:map
) as map:map*
{
  let $uri := map:get($content, "uri")
  let $doc := map:get($content, "value")
  let $_ := map:put($content, "uri", fn:replace(fn:replace($uri, "%5B", "["), "%5D", "]"))
  return $content
};

HTH!