У меня есть документы, содержащие такие структуры, как:
<Reviews>
<Review complete="false">
<StartDate>2019-03-05T06:00:00Z</StartDate>
<EndDate>2019-03-12T05:00:00Z</EndDate>
<Reviewers>
<Reviewer userName="jdoe">
<ReviewStatus>Completed</ReviewStatus>
</Reviewer>
</Reviewers>
</Review>
<Review complete="false">
<StartDate>2019-03-06T06:00:00Z</StartDate>
<EndDate>2019-03-13T05:00:00Z</EndDate>
<Reviewers>
<Reviewer userName="jsmith">
<ReviewStatus>Pending</ReviewStatus>
</Reviewer>
<Reviewer userName="jdoe">
<ReviewStatus>Completed</ReviewStatus>
</Reviewer>
</Reviewers>
</Review>
</Reviews>
Используя MarkLogi c XQuery, я хочу найти документы, в которых есть элемент Reviewer для jsmith И с his ReviewStatus = Завершено. Т.е. я не хочу видеть этот пример выше в моих результатах, потому что jsmith ReviewStatus не завершен. Я пробовал несколько разных типов запросов, где cts:and-query()
использует комбинации значений атрибута, слова элемента и даже запросов диапазона пути. Но я не понял, как найти только те документы, которые содержат элемент Reviewer, где значение атрибута userName совпадает с «jsmith» И значение дочернего элемента ReviewStatus совпадает с «Completed» в том же элементе Reviewer. Может ли кто-нибудь предложить подход к этому?