通过curl PUT插入时,MarkLogic在.xqy文件中丢失我的换行符

时间:2018-07-03 13:41:11

标签: marklogic

每当我使用xquery添加一个curl脚本时,服务器上的结果文件都会丢失所有分页符和一些空格。这导致行一起运行,而某些单词也一起运行。由于保留字与其他字串在一起,导致脚本失败。

我正在使用的命令是这样:

curl --anyauth --user username:password -X PUT -d @"./badactorasset-lib.xqy" -i -H "Content-type: application/xquery" http://localhost:8004/v1/ext/badactor/badactorasset-lib.xqy

当我通过查询控制台浏览MarkLogic服务器上的其他.xqy文件时,那些带有换行符的文件显示完美中断。我添加的文件都缺少换行符,并且看起来不可读。

***过去已加载到服务器上的另一个文件的示例:

xquery version "1.0-ml";
module namespace ba = "http://marklogic.com/badactor/badactor";
declare option xdmp:mapping "false";
declare variable $ba:ETYPES := ("HX", "FER", "RER", "ELEC", "INSTR");
declare function ba:get-duration($type as xs:string) as xs:yearMonthDuration
{
  let $years :=
    if ($type eq "HX") then 5
    else if ($type eq "FER") then 10
    else if ($type eq "RER") then 2
    else if ($type eq "ELEC") then 10
    else if ($type eq "INSTR") then 2
    else 0
  return xs:yearMonthDuration("P" || fn:string($years) || "Y")
};

***我在服务器上的文件示例:

xquery version "1.0-ml";module namespace ba = "http://marklogic.com/badactor/badactorasset";declare option xdmp:mapping "false";declare variable $ba:ETYPES := ("HX", "FER", "RER", "ELEC", "INSTR");declare function ba:get-duration($type as xs:string) as xs:yearMonthDuration{  let $years :=    if ($type eq "HX") then 5    else if ($type eq "FER") then 10    else if ($type eq "RER") then 2    else if ($type eq "ELEC") then 10    else if ($type eq "INSTR") then 2    else 0  return xs:yearMonthDuration("P" || fn:string($years) || "Y")};declare function ba:get-threshold($type as xs:string) as xs:integer{   if ($type eq "INST

我想念什么?为什么我的文件丢失了结构?

1 个答案:

答案 0 :(得分:2)

我在一些与MarkLogic不相关的文档中发现了深层问题。

我应该使用“ --data-binary”标志代替默认的“ -d”标志,以保留换行符。在MarkLogic的网站上或任何示例中都没有对此进行讨论,但是它修复了我的文件。

现在是完整卷曲命令:

curl --anyauth --user username:password -X PUT --data-binary @"./badactorasset-lib.xqy" -i -H "Content-type: application/xquery" http://localhost:8004/v1/ext/badactor/badactorasset-lib.xqy