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

时间:2017-01-31 22:00:54

标签: marklogic

当我尝试使用包含新行的处理指令在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在插入时保留这些新行?

2 个答案:

答案 0 :(得分:1)

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

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

HTH!

答案 1 :(得分:0)

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

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