查找具有多个根元素的文档 - MarkLogic

时间:2014-09-11 06:03:46

标签: marklogic

不幸的是,由于我们的代码中存在错误,一些文档是使用多个具有重复内容的根元素创建的

对于前。

fn:doc("doc1.xml") 

将返回

<doc1>
    <a>AA</a> 
    </b>
</doc1>
<doc1>
   <a>AA</a>
   </b>
</doc1>

是否有一种有效的方法来识别具有多个根元素的所有文档?

提前致谢。

2 个答案:

答案 0 :(得分:1)

MarkLogic通常不允许创建具有多个根元素的文档,但我不确定它是否可以保证。然而,在某些已知情况下,您最终可能会得到具有相同数据库uris的多个文档。

一种方法是为一个数据库创建两个林,断开第二个,插入文档,先用第二个林替换,然后再次插入相同的文档。之后,连接两个林,您将在同一个数据库uri中使用相同的文档两次,但是在不同的林中。只用一个森林就不可能做到这一点。

如何摆脱这些?循环遍历doc()[count(doc1)&gt; 1] / base-uri(),然后重新插入这些文档。如果从数据库中提取值,则必须确定要保留哪个doc节点,这可能并不容易。您可能还想检查在这种情况下涉及多少文档。如果超过(几千)文档,您将需要批量重新插入..

HTH!

答案 1 :(得分:0)

可能?也许。 Marklogic对此进行了大量检查,以便您不会发生这种情况。两个文件都在同一个森林中吗?