我已经管理了名为123456.xml
的文档,并且尝试使用如下的dls库函数对其进行更新,
declare variable $uri:= "/abc/123456_xml_versions/1-123456.xml";
dls:document-is-managed($uri),
dls:document-checkout-update-checkin($uri, $xml, 'Update', fn:true())
脚本片段上方抛出异常,
[1.0-ml] DLS-DOCUMENTVERSION:(err:FOER0000)无法更新或签出文档版本/abc/123456_xml_versions/1-123456.xml
这是应用程序的现有迁移操作,正在更新文档的所有版本。
答案 0 :(得分:1)
不要从versions
目录中提供DLS功能URI。这些URI由DLS管理。只要给它您要更新的文档的规范URI,DLS就会自动为您增加版本:
declare variable $uri:= "/abc/123456/123456.xml";
...
答案 1 :(得分:0)
dls:document-checkout-update-checkin($uri, , 'Update', fn:true())
第二个参数应该是您要替换现有文档的文档节点。
您可能还需要检查dls:document-checkout-status,以查看当前是否有其他用户签出了文档。
答案 2 :(得分:0)
我建议您在ML更新(从V8-到9+)后处理DLS文档之前,先学习,充分理解(或如果没有,请寻求支持)并执行此处的程序https://docs.marklogic.com/guide/relnotes/chap4#id_65479。 。 在您执行升级之前,DLS V9出厂时不包含与先前版本不兼容。升级不会自动执行,并且可能不会注意到(首先)未升级或部分升级的症状。 有关检查所有DLS文档状态的新功能的详细信息。即使在升级以验证所需的权限,属性和集合仍完好无损之后,这些功能也很有用。
然后,我鼓励您学习使用DLS文档的体系结构和过程。不支持这些过程之外的任何操作,并且非常棘手(这就是为什么不支持该操作的原因)。 请注意,您可能会发现进行批量检出,然后更新然后进行批量检入对您的用例而言效果更好,然后再进行一次文档检出-插入-检入。 还请注意记录的DLS的权限和索引要求。