Marklogic:cts:和查询在同一节点上搜索两个属性
我想对同一节点中的两个属性执行Marklogic:cts:和查询在同一节点上搜索两个属性,marklogic,Marklogic,我想对同一节点中的两个属性执行cts:和查询cts:和query分别在文档中而不是在同一节点中搜索测试条件 是否有方法限制搜索应用于同一节点?将and查询包装在元素查询中,如第二个示例所述: 不必限制直接元素本身,匹配中也包括子元素,但根据您的内容结构,这可能就足够了 如果不是,则使用XPath谓词从搜索结果中过滤出误报。使计算搜索总数等变得更加困难,但至少给出了正确的结果 嗯 根据您的XML结构,您可以使用距离为零的cts:near-query()而不是使用cts:and-query()。我
cts:和查询cts:和query
分别在文档中而不是在同一节点中搜索测试条件
是否有方法限制搜索应用于同一节点?将and查询包装在元素查询中,如第二个示例所述:
不必限制直接元素本身,匹配中也包括子元素,但根据您的内容结构,这可能就足够了
如果不是,则使用XPath谓词从搜索结果中过滤出误报。使计算搜索总数等变得更加困难,但至少给出了正确的结果
嗯 根据您的XML结构,您可以使用距离为零的cts:near-query()
而不是使用cts:and-query()。我不久前写了一篇文章,谈到了。简而言之,距离取决于元素中的单词,但不受属性中单词的影响。这应该可以做到:
cts:near-query(
(cts:element-attribute-value-query($element-qname, $attr1-qname),
cts:element-attribute-value-query($element-qname, $attr2-qname)),
0
)
请注意,如果没有将一个元素的属性与另一个元素的属性分隔开来的元素级
单词,这种方法将不起作用。例如:
<doc>
<stuff a="1" b="2">some text</stuff>
<stuff a="3" b="4">some other text</stuff>
</doc>
一些文本
其他一些文本
stuff元素内部的文本在/doc/stuff\[1\]
的属性和/doc/stuff\[2\]
的属性之间提供了一定的距离。a和b属性之间没有距离。如果stuff元素没有文本,则/doc/stuff\[1\]
的属性与/doc/stuff\[2\]
的属性之间不会有距离