在受管文档上使用xPath的Marklogic会产生此文档的所有版本

问题描述 投票:1回答:1

在托管(dls:document-insert-and-manage(...))文档上使用xpath时,我想使用此文档上的xpath表达式仅检索实际文档,尤其是其他用户。

使用xpath,我得到的是文档的所有版本,或者没有文档。

我尝试设置文档权限。限制URI仅用于创建。保护路径无济于事,因为所有版本的xpath都相同。

是否有可能限制某些用户只能获得最新版本?

我们正在使用Marklogic 9.0.8

示例:

使用...设置文档

xquery version "1.0-ml";
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";

declare variable $uri :="/smtextdocuments/9114.xml";
declare variable $document := document {
<envelope>
  <instance>
    <smtextdocuments>
      <uri>/smtextdocuments/9114.xml</uri><id>9114</id>
      <documentcontent>MyText</documentcontent>
    </smtextdocuments>
  </instance>
</envelope>
};

let $d := dls:document-insert-and-manage($uri,fn:true(), $document,
        "Manage textdocuments",
        (
         xdmp:permission("dls-user", "read"),
         xdmp:permission("dls-internal", "read"),
         xdmp:permission("dls-internal", "update")),
        ()
        )
return $d

根据实际用户的权限,检索文档时导致2个元素或不包含任何元素。>

xquery version "1.0-ml";
<queryresult>
  <byxPath>{
    for $i in //smtextdocuments[id=9114]
    return (<uri>{fn:base-uri($i)}</uri>,$i)
    }
  </byxPath>
</queryresult>

当在托管(dls:document-insert-and-manage(...))文档上使用xpath时,我想在此文档上使用xpath表达式来仅检索实际文档,尤其是其他用户。...

marklogic marklogic-9
1个回答
1
投票

您正在使用DLS并行存储一个文档的多个版本,因此,如果您查询整个数据库(如果使用诸如//xxx之类的绝对路径,则会发生这种情况,您将获得该文档的所有匹配版本。

© www.soinside.com 2019 - 2024. All rights reserved.