2014-03-26 84 views
0

我想從XML構建映射,其中包含`cts:element-range-query其中一個值。當我在cq中運行它時,會拋出XDMP-QUERYNOVALS。相同的XML在ML5中起作用。是否有任何設置需要改變才能在ML7中工作?帶映射XML的XDMP-QUERYNOVALS包含cts:查詢XML

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 

感謝, 塞爾瓦

回答

1

仔細查看了cts:element-range-query XML。它沒有cts:value元素。所以cts:query XML是無效的。如果您自動構建cts:query XML,並且從未驗證它,可能會發生這種情況。

MarkLogic 7可能比MarkLogic 5更嚴格,但無論哪種版本,XML都不代表有效的查詢。

+0

謝謝。它解決了這個問題。 – Selva

1

塞爾瓦:

只能傳遞一個映射到地圖構造函數的XML序列化。地圖構造函數不會將其他XML結構轉換爲地圖。

要了解地圖的XML序列化,請看到的例子:

http://docs.marklogic.com/map:map

然而,構建一個地圖後,您可以使用地圖:把()函數中添加原子值或節點到地圖。因此,您可以編寫一個XQuery函數,該函數使用從節點提取的值或片段填充地圖,並將其用作地圖構造函數。

希望幫助,

埃裏克Hennum

+0

謝謝埃裏克。但是,如果不涉及cts查詢,這是有效的。 – Selva

+0

它也適用於早期版本的ML – Selva