-2

我已经管理了名为的文档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:(错误:FOER0000)无法更新或签出文档版本/abc/123456_xml_versions/1-123456.xml

这是正在更新文档的所有版本的应用程序的现有迁移操作。

4

3 回答 3

1

不要从versions目录中提供 DLS 函数 URI。这些 URI 由 DLS 管理。只需给它您要更新的文档的规范 URI,DLS 就会自动为您增加版本:

declare variable $uri:= "/abc/123456/123456.xml";
...
于 2019-07-25T17:17:51.483 回答
0
dls:document-checkout-update-checkin($uri, , 'Update', fn:true())

第二个参数应该是您要替换现有文档的文档节点。

您可能还想检查dls:document-checkout-status以查看其他用户当前是否已签出该文档。

于 2019-07-25T17:13:53.113 回答
0

我建议您 在 ML 之后使用 DLS 文档之前,先学习、充分理解(或寻求支持)并在此处实施程序https://docs.marklogic.com/guide/relnotes/chap4#id_65479更新(从 V8- 到 9+)。在您执行升级之前, DLS V9出厂时与之前的版本不兼容。升级不会自动执行,可能不会注意到不升级或部分升级的症状(起初)。有关检查所有 DLS 文档状态的新功能的详细信息。即使在您升级以验证所需的权限、属性和集合是否仍然完好无损之后,这些也很有用。

然后,我鼓励您研究处理 DLS 文档的体系结构和过程。不支持这些程序之外的任何内容,并且很难正确处理(这就是不支持的原因)。请注意,您可能会发现进行批量签出,然后更新然后批量签入比一次性文档签出插入签入更适合您的用例。另请注意记录的 DLS 的权限和索引要求。

于 2019-08-02T02:22:33.797 回答