在休息扩展中执行xpath时XDMP-NONMIXEDCOMPLEXCONT

时间:2017-06-09 13:55:35

标签: marklogic marklogic-8

我正在尝试执行以下操作

Findstr/BIRC:"[-\;]state[-\;]"

当我在查询控制台中执行此操作时,它工作正常..但是当我在 REST扩展中执行相同操作时,我收到以下错误

import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";     
let $options := <options xmlns="http://marklogic.com/appservices/search">
                    <additional-query>
                        <cts:collection-query xmlns:cts="http://marklogic.com/cts">
                            <cts:uri>http://ir.abbvienet.com/content-repo/type/envelope</cts:uri>
                        </cts:collection-query>
                    </additional-query>
                    <constraint name="gene">
                        <range type="xs:string" facet="true">
                            <path-index>//Hit[@type='GENE']/@id</path-index>
                            <facet-option>frequency-order</facet-option>
                            <facet-option>descending</facet-option>
                            <facet-option>limit=10</facet-option>
                        </range>
                    </constraint>
                </options>

    return
    $options//search:constraint[@name='gene']

关于为什么会出现这种情况的任何想法?

**** 编辑添加了我的REST扩展 *************

<error:xquery-version>1.0-ml</error:xquery-version>
<error:message>Node has complex type with non-mixed complex content</error:message>
<error:format-string>XDMP-NONMIXEDCOMPLEXCONT: fn:data(&lt;constraint name="gene" xmlns="http://marklogic.com/appservices/search"&gt;&lt;range type="xs:string" facet="true"&gt;&lt;path-index&gt;//Hit[@type='GE...&lt;/constraint&gt;) -- Node has complex type with non-mixed complex content</error:format-string>
 <error:retryable>false</error:retryable>
<error:expr>fn:data(&lt;constraint name="gene" xmlns="http://marklogic.com/appservices/search"&gt;&lt;range type="xs:string" facet="true"&gt;&lt;path-index&gt;//Hit[@type='GE...&lt;/constraint&gt;)</error:expr>
 <error:data/>
<error:stack>

1 个答案:

答案 0 :(得分:0)

我能够解决我的问题,但不明白为什么会在Rest扩展中发生,而不是在查询控制台中。

在REST扩展中,它因为$ options的默认命名空间而失败,一旦删除它就有效..我删除的方式是

functx:change-element-ns-deep($options, '','')

如果有人可以解释为什么我的问题中的代码在查询控制台中工作但在REST扩展中没有,那将是很好的,