MarkLogic теряет мои разрывы строк в файлах .xqy при вставке через curl PUT - PullRequest
0 голосов
/ 03 июля 2018

Каждый раз, когда я добавляю сценарий 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

Когда я просматриваю другие файлы .xqy на сервере MarkLogic через консоль запросов, отображение этих файлов со строками разрывается идеально. Все файлы, которые я добавляю, не содержат разрывов строк и выглядят нечитаемыми.

*** Пример другого файла, который был ранее загружен на сервер:

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 голосов
/ 03 июля 2018

Я нашел проблему глубоко в некоторой документации, не связанной с MarkLogic.

Я должен использовать флаг "--data-binary" вместо флага по умолчанию "-d", чтобы сохранить разрывы строк. Это не обсуждается на сайте MarkLogic или в любом из их примеров, но это исправило мои файлы.

Вот полная команда curl:

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

...