xdmp:document-insert 删除处理指令中的新行

xdmp:document-insert removes new lines in processing instructions

当我尝试使用包含换行的处理指令在 MarkLogic (8.0-6.1) 中存储文档时,换行被删除。例如:

let $fileURI := "/some/place/file.xml"
let $doc := 
   document {
     <?foo bar 
     another bar ?>,
     <a/>
   }
return
   xdmp:document-insert($fileURI, $doc)

这会导致存储以下文档:

<?foo bar another bar ?>
<a/> 

当我想要这样的文档时:

<?foo bar
another bar ?>
<a/>

有没有办法让 MarkLogic 在插入时保留这些新行?

不确定为什么要这样做,但是 xml 新行的编码是用 &#xA;

处理的
let $doc := 
    document {
    <?foo bar&#xA; 
    another bar ?>,
    <a/>}

MarkLogic 使用内部树表示以规范形式存储 XML(和 JSON)。这些换行符可能被认为是无关紧要的,因此被删除,就像 XML pi、本地文档类型信息和其他无关紧要的空格一样。命名实体在启用 repair 的情况下或根据本地文档类型信息转换为 UTF-8。

如果您需要能够导出包含原始空白和所有内容的文档,最好将其保存为二进制文件或 MarkLogic 中的文本文件。

HTH!