我有以下个XML:Marklogic查询
sample1.xml <root> <subjectInfo> <subject id="001"/> <subject id="002" role="cross"/> </subjectInfo> </root>
sample2.xml <root> <subjectInfo> <subject id="002"/> <subject id="001" role="cross"/> </subjectInfo> </root>
我正在寻找的文件,其中值id
属性subject
是“001”,但role
(如果它存在)相同subject
元素不是“交叉”。因此,在我的示例中,结果应该包含sample1.xml
,而不是sample2.xml
我想下面的查询会做的工作:
<code>
cts:search(/root,
cts:near-query((
cts:element-attribute-value-query(xs:QName("subject"),xs:QName("id"),"001"),
cts:not-query(cts:element-attribute-value-query(xs:QName("subject"),xs:QName("role"),"cross"))),0)
)
</code>
但它不(返回一个空序列)。请给我一个这样做。
非常感谢。这解释了很多。 – callow 2014-09-03 05:58:29