不幸的是,由于我们的代码中存在错误,一些文档是使用多个具有重复内容的根元素创建的
对于前。
fn:doc("doc1.xml")
将返回
<doc1>
<a>AA</a>
</b>
</doc1>
<doc1>
<a>AA</a>
</b>
</doc1>
是否有一种有效的方法来识别具有多个根元素的所有文档?
提前致谢。
答案 0 :(得分:1)
MarkLogic通常不允许创建具有多个根元素的文档,但我不确定它是否可以保证。然而,在某些已知情况下,您最终可能会得到具有相同数据库uris的多个文档。
一种方法是为一个数据库创建两个林,断开第二个,插入文档,先用第二个林替换,然后再次插入相同的文档。之后,连接两个林,您将在同一个数据库uri中使用相同的文档两次,但是在不同的林中。只用一个森林就不可能做到这一点。
如何摆脱这些?循环遍历doc()[count(doc1)&gt; 1] / base-uri(),然后重新插入这些文档。如果从数据库中提取值,则必须确定要保留哪个doc节点,这可能并不容易。您可能还想检查在这种情况下涉及多少文档。如果超过(几千)文档,您将需要批量重新插入..
HTH!
答案 1 :(得分:0)
可能?也许。 Marklogic对此进行了大量检查,以便您不会发生这种情况。两个文件都在同一个森林中吗?