MarkLogic:使用cts:search查找没有文本的元素

时间:2014-08-06 10:31:47

标签: xml xquery marklogic

我想查找某个元素中没有任何文本的所有文档 - 这可行但速度很慢:

let $not-empty := for $i in cts:search(//foo[@class="bar"][text()[not(. = '')]] ,
                                  cts:and-query(())
                                    ) 
                                 return base-uri($i)

如何有效地使用索引来搜索没有文本节点的元素以及文本节点不包含任何字符的位置?

1 个答案:

答案 0 :(得分:4)

搜索将以更简单的可搜索路径和更复杂的查询运行得更快。我认为这是你可以使用cts函数最接近的:

cts:search(
  //foo,
  cts:and-query((
    cts:element-attribute-value-query(xs:QName('foo'), xs:QName('class'), 'bar'),
    cts:element-value-query(xs:QName('foo'), '')
  ))
)

HTH!