我有以下個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