Marklogic cts:返回空序列的值共现

Marklogic cts:返回空序列的值共现,marklogic,marklogic-8,Marklogic,Marklogic 8,我正在尝试查找文档属性中具有属性的所有文档的共现项。。以下是我正在执行的代码,用于列出共同发生的事件,但该代码不起作用。。有人能指出我做错了什么吗 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

我正在尝试查找文档属性中具有属性
的所有文档的共现项。。以下是我正在执行的代码,用于列出共同发生的事件,但该代码不起作用。。有人能指出我做错了什么吗

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())
我确实在这个属性上创建了元素范围索引

没有提供错误消息,因此这只是猜测。确保已打开URI词典——否则cts:URI引用将抛出错误

没有提供错误消息,因此这只是猜测。确保已打开URI词典——否则cts:URI引用将抛出错误

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


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

  • 这有时让人感到困惑
  • 属性片段中有一个XML文档-始终
  • 节点本身声明了一个名称空间,但前缀为“prop”
  • 但是,您添加的属性(XML元素)不在上述名称空间下——当然,除非您自己实际使用prop前缀
  • 这个挑战的最终结果是,用户在properties片段中的一个元素上创建了一个索引,并将该索引的范围限定为properties名称空间。这创建了一个完全有效的索引-只是空的,因为没有匹配的元素
答复的原始措词:

您确定所讨论的元素确实如索引所示位于properties命名空间中吗?cts:element值的快速转储可能会显示这一点。我之所以提到这一点,是因为向properties片段添加属性并不意味着它们在properties名称空间中

--
其他想法——不是答案,而是调查的途径

根据你的例子,我认为你在寻找,而不是共同发生


但是:从您的问题陈述来看,为什么不在属性片段上使用constrained by a(并且都没有范围索引)

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

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

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


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

  • 这有时让人感到困惑
  • 属性片段中有一个XML文档-始终
  • 节点本身声明了一个名称空间,但前缀为“prop”
  • 但是,您添加的属性(XML元素)不在上述名称空间下——当然,除非您自己实际使用prop前缀
  • 这个挑战的最终结果是,用户在properties片段中的一个元素上创建了一个索引,并将该索引的范围限定为properties名称空间。这创建了一个完全有效的索引-只是空的,因为没有匹配的元素
答复的原始措词:

您确定所讨论的元素确实如索引所示位于properties命名空间中吗?cts:element值的快速转储可能会显示这一点。我之所以提到这一点,是因为向properties片段添加属性并不意味着它们在properties名称空间中

--
其他想法——不是答案,而是调查的途径

根据你的例子,我认为你在寻找,而不是共同发生


但是:从您的问题陈述来看,为什么不在属性片段上使用constrained by a(并且都没有范围索引)

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

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


是否有错误消息?请发布一个示例属性片段,以便我们可以验证所讨论的元素是否实际位于属性命名空间中。仅使用我手头的一些数据尝试了此操作--在修复命名空间问题之前,我没有得到任何结果,然后我得到了结果。是否有错误消息?请发布一个示例属性片段,以便我们可以验证所讨论的元素是否确实在属性命名空间中。只是用我手头的一些数据尝试了一下--在修复命名空间问题之前,我没有得到任何结果,然后我得到了结果。嗯。。我没有得到任何错误。。只是说
您的查询返回了一个空序列
。但是当我执行相同的操作时,我在具有元素范围索引的文档中执行xml标记,而不是文档属性。嗯。。我没有得到任何错误。。只是说
您的查询返回了一个空序列
。但是当我做同样的操作时,我在元素范围索引有效的文档中做了一个xml标记。我尝试了这个
cts:value元组((cts:element-reference(xs:QName('prop:id')),cts:uri-reference(),('properties'))
。。我仍然得到
您的查询返回了一个空序列
我希望同时出现的原因是可能存在具有相同id的文档,因此对于给定的搜索条件,我只需要一个文档uri。。我有文档,每个文档都有工件文档,它们具有相同的
属性,我只想为给定的
和给定的搜索标准获取一个文档,我认为cts之间唯一的真正区别是:value-co-occurrents()和cts:value元组是后者允许您指定两个以上的索引引用。是的,我不好,这是一个名称空间问题,在设置属性时,我没有为属性设置名称空间。很好!很高兴它起作用了。我将调整答案,以便明确哪个项是罪魁祸首,但我会将其他项留作参考。我尝试了以下
cts:value元组((cts:element-reference(xs:QName('prop:id')),cts:uri-reference(),('properties'))
。。我仍然得到
您的查询返回了一个空序列
我的原因