Marklogic XDMP-QUERYNOVALS,映射XML包含cts:query XML

Marklogic XDMP-QUERYNOVALS,映射XML包含cts:query XML,marklogic,Marklogic,我试图从XML构造一个映射,其中包含一个值的`cts:element范围查询。当我在cq中运行它时,它抛出XDMP-QUERYNOVALS。同样的XML也适用于ML5。是否需要更改任何设置才能在ML7中工作 let $request-body := <wrapper xmlns="xdmp:http"> <map:map xmlns:map="http://marklogic.com/xdmp/map" xmlns:xsi="http://www.w3.org/2001/X

我试图从XML构造一个映射,其中包含一个值的`cts:element范围查询。当我在cq中运行它时,它抛出XDMP-QUERYNOVALS。同样的XML也适用于ML5。是否需要更改任何设置才能在ML7中工作

let $request-body := <wrapper xmlns="xdmp:http">
  <map:map xmlns:map="http://marklogic.com/xdmp/map" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <map:entry key="GLOBAL">
      <map:value><cts:and-query xmlns:cts="http://marklogic.com/cts">
                  <cts:or-query>
                    <cts:element-range-query operator="=">
                      <cts:element>abcd</cts:element>
                    </cts:element-range-query>
                  </cts:or-query>
        </cts:and-query></map:value>
  </map:entry>
</map:map></wrapper>    
return map:map($request-body/node())
let$request body:=
abcd
返回映射:映射($request body/node())
错误消息:

[1.0-ml] XDMP-QUERYNOVALS: map:map(
<map:map xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:map="http://marklogic.com/xdmp/map" xmlns="xdmp:http">
<map:entry key="GLOBAL"><map:value><cts:and-query xmlns:cts="htt...</map:map>)
 -- /*:wrapper/map:map/map:entry/map:value/cts:and-query/cts:or-query/cts:element-range-query
[1.0-ml]XDMP-QUERYNOVALS:map:map(
塞尔瓦:

只能将映射的XML序列化传递给映射构造函数。映射构造函数不会将其他XML结构强制转换为映射

要了解映射的XML序列化,请参阅中的示例:

但是,在构造映射之后,可以使用map:put()函数向映射添加原子值或节点。因此,可以编写一个XQuery函数,用从节点提取的值或片段填充映射,并将其用作映射构造函数

希望有帮助


Erik Hennum

仔细查看
cts:element范围查询
XML。它没有
cts:value
元素。因此,cts:query XML无效。如果您自动构建cts:query XML,并且从未对其进行验证,则可能会发生这种情况

MarkLogic 7在这方面可能比MarkLogic 5更为严格,但在这两个版本中,XML都不能表示有效的查询