Marklogic 6:Dls版本还原问题

Marklogic 6:Dls版本还原问题,marklogic,Marklogic,嗨,我使用了下面提到的dls功能。但我在结果窗口中出现了一些错误。请告诉我有什么遗漏我的地方吗 xquery version "1.0-ml"; import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy"; dls:document-update( "/foo/bar/baz.xml", 错误 [1.0-ml] XDMP-DUPATTR

嗨,我使用了下面提到的dls功能。但我在结果窗口中出现了一些错误。请告诉我有什么遗漏我的地方吗

xquery version "1.0-ml";

  import module namespace dls = "http://marklogic.com/xdmp/dls" 
      at "/MarkLogic/dls.xqy";

  dls:document-update(
           "/foo/bar/baz.xml",
错误

[1.0-ml] XDMP-DUPATTR: (err:XQDY0025) $child -- Two attributes with the same name

Stack Trace
In /MarkLogic/dls.xqy on line 1386
In add-xml-base(fn:doc("/foo/bar/baz_xml_versions/1-baz.xml")/ca, "/foo/bar/baz.xml")

$node := fn:doc("/foo/bar/baz_xml_versions/1-baz.xml")/ca
$uri := "/foo/bar/baz.xml"
$child := fn:doc("/foo/bar/baz_xml_versions/1-baz.xml")/ca/@xml:base

错误似乎是基于Marklogic/dls.xqy文件中提供的xml基名称。在函数add xml base In dls.xqy file中,在返回输出值之前检查任何可用的条件。该条件应检查xml base名称和名称不匹配,然后返回输出值。下面的示例将解决您的问题

declare private function add-xml-base(
  $node as node(),
  $uri as xs:string)
{
  element { fn:node-name($node) } { 
    ( 
      attribute xml:base { $uri },
      for $child in ($node/@*, $node/node())
        where (fn:name($child) ne "xml:base") 
        return $child
    )
  }
};

错误似乎是基于Marklogic/dls.xqy文件中提供的xml基名称。在函数add xml base In dls.xqy file中,在返回输出值之前检查任何可用的条件。该条件应检查xml base名称和名称不匹配,然后返回输出值。下面的示例将解决您的问题

declare private function add-xml-base(
  $node as node(),
  $uri as xs:string)
{
  element { fn:node-name($node) } { 
    ( 
      attribute xml:base { $uri },
      for $child in ($node/@*, $node/node())
        where (fn:name($child) ne "xml:base") 
        return $child
    )
  }
};