cts:返回空序列的值共现

时间:2016-03-15 16:17:05

标签: marklogic marklogic-8

我试图找到文档属性中具有属性<id>的所有文档的共现。以下是我为列出共现而无法正常工作的代码..可以有人建议我做错了什么。

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace prop = "http://marklogic.com/xdmp/property";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";


 cts:value-co-occurrences(
              cts:element-reference(xs:QName('prop:id')),
              cts:uri-reference())

我确实在这个属性上创建了元素范围索引 enter image description here

2 个答案:

答案 0 :(得分:5)

注意:我在接受后编辑了这个答案,因为我给了三个项目。编辑是为了突出显示给出解决方案的答案部分

解决方案: - 属性片段中的命名空间不同

  • 这有时让人感到困惑。
  • 属性片段中有一个XML文档 - always。
  • 节点本身声明了一个名称空间,但它的前缀为'prop'。
  • 但是,您添加的属性(XML元素)不在上述命名空间下 - 除非您自己实际使用了prop前缀。
  • 此挑战的最终结果是用户在属性片段中的元素上创建了索引,并将索引作用于属性名称空间。这创建了一个完全有效的索引 - 只是空,因为没有元素匹配。

回复的原始措辞:

您确定有问题的元素实际上是在索引显示的属性名称空间中吗?快速转储cts:element-values可能会显示这一点。我之所以提到这一点,是因为向属性片段添加属性并不能推断它们位于属性名称空间中。

-

其他想法 - 不是答案,而是调查路径

我认为你正在寻找cts:value-tuples而不是根据你的例子共同出现。

但是:从你的问题陈述中,为什么你不只是在属性片段上使用cts:uris()约束cts:element-query()(并且没有范围索引)

这可以告诉你属性片段中元素my-element所在的所有URI:

cts:uris("", (),
  cts:properties-fragment-query(
    cts:element-query(xs:QName("my-element"),
      cts:and-query( () )) 
    )
)

答案 1 :(得分:1)

没有提供错误消息,所以这是猜测。确保你打开了URI词典 - cts:uri-reference否则会抛出错误。