Marklogic 使用cts:query检查属性的存在性

Marklogic 使用cts:query检查属性的存在性,marklogic,Marklogic,cts:element查询(xs:QName(“elm”)、cts:and query(())将给出元素elm所在的所有片段 类似地,如果我希望所有文档的elm下都有属性(比如atr),我该怎么办 cts:element-attribute-value-query()。但是我只想检查属性是否存在,而不管它包含什么值。尝试使用通配符。元素和属性之间的一个区别是元素可以为空。属性不能匹配,因此它们应该始终匹配通配符。您可能需要启用某些字符索引以获得最佳性能 cts:element-attribute

cts:element查询(xs:QName(“elm”)、cts:and query(())
将给出元素elm所在的所有片段

类似地,如果我希望所有文档的elm下都有属性(比如atr),我该怎么办


cts:element-attribute-value-query()。但是我只想检查属性是否存在,而不管它包含什么值。

尝试使用通配符。元素和属性之间的一个区别是元素可以为空。属性不能匹配,因此它们应该始终匹配通配符。您可能需要启用某些字符索引以获得最佳性能

cts:element-attribute-value-query(
  xs:QName('div'), xs:QName('id'), '*'))

您可以通过一个简单的cts:element属性值查询来实现

cts:element-attribute-value-query(
xs:QName('element'), xs:QName('attribute'), '*'))  
cts:element-attribute-value-query(
xs:QName('element'), xs:QName('attribute'), '*', ("wildcarded")))  
若在数据库中并没有将通配符搜索设置为true,那个么还需要在cts:element属性值查询中显式地提供启用通配符的搜索

cts:element-attribute-value-query(
xs:QName('element'), xs:QName('attribute'), '*'))  
cts:element-attribute-value-query(
xs:QName('element'), xs:QName('attribute'), '*', ("wildcarded")))  

有关这方面的更多详细信息,您可以查看页面

它是否不需要对照值进行检查(尽管任何值都是匹配的),因此需要一些时间来读取值?@mblakele,很惊讶您在这里说XML属性不能为空。我认为他们可以。他们可以有“价值”。空元素是特殊的。@mblakele,确定吗?这将返回true:let$xml1:=let$xml2:={“}返回深度相等($xml1,$xml2);-)是的,它们的比较是相同的。对我来说,这感觉不同于
foo=“”