Xquery 使用Java API进行容器约束(嵌套)

Xquery 使用Java API进行容器约束(嵌套),xquery,marklogic,marklogic-8,Xquery,Marklogic,Marklogic 8,我用的是MarkLogicV8 我试图对结构化查询应用容器约束,以仅返回元素c(嵌套在元素a和b中)中值为x的文档 containerConstraint()接受一个参数作为选项名和StructuredQueryDefinition。我的选项如下所示: <options xmlns='http://marklogic.com/appservices/search'> <constraint name='language'> <element

我用的是MarkLogicV8

我试图对结构化查询应用容器约束,以仅返回元素c(嵌套在元素a和b中)中值为x的文档

containerConstraint()接受一个参数作为选项名和StructuredQueryDefinition。我的选项如下所示:

<options xmlns='http://marklogic.com/appservices/search'>
    <constraint name='language'>
        <element name=\"name\" ns=\"\"/>
    </constraint>
</options>

  • “name”是最里面的元素(c)的名称,其中包含我要引用的值。选项应该是这样构造的,还是“name”应该是最外层元素的名称

  • StructuredQueryDefinition(被containerConstraint()接受为参数)应该如何构造?我应该编写原始XML,还是应该传入构造方法

  • 有更好的方法吗?我已经有了一个有效的术语搜索,我只需要能够通过文档中的属性集进行筛选


  • 我想我找到了答案:

    选择如下:

    <search:options 
            xmlns:search='http://marklogic.com/appservices/search'>
        <search:constraint name='language'>
            <search:word>
                <search:element name='name' ns=''/>
            </search:word>
        </search:constraint>
    </search:options>
    

    这似乎达到了我想要的效果。

    我觉得不错。还可以使用containerQuery(),如中所述
    queryBuilder.wordConstraint("language", MY_LANGUAGE)