我正在尝试从XML构建一个映射,其中包含一个值的`cts:element-range-query。当我在cq中运行它时会抛出XDMP-QUERYNOVALS。 ML5中使用相同的XML。是否有任何需要更改的设置才能在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())
错误讯息:
[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
谢谢, Selva的
答案 0 :(得分:1)
Selva的:
您只能将地图的XML序列化传递给地图构造函数。映射构造函数不会将其他XML结构强制转换为映射。
要了解地图的XML序列化,请参阅以下示例:
http://docs.marklogic.com/map:map
但是,在构建地图后,您可以使用map:put()函数将原子值或节点添加到地图中。因此,您可以编写一个XQuery函数,使用从节点中提取的值或片段填充映射,并将其用作地图构造函数。
希望有帮助,
Erik Hennum答案 1 :(得分:1)
仔细查看cts:element-range-query
XML。它没有cts:value
元素。所以cts:query XML无效。如果您构建了cts,则可能会发生这种情况:自动查询XML,并且从未验证过它。
MarkLogic 7可能比MarkLogic 5更加严格,但对于任何一个版本,XML都不代表有效的查询。