Я пытаюсь настроить один запрос Xpath, который ищет не только узлы с заданным атрибутом c, но и их относительное положение, а не его фактическое положение в XML.
В качестве примера:
<room>
<child gender="female">
<name>Anne</name>
</child>
<child gender="female">
<name>Mary</name>
</child>
<child gender="male">
<name>John</name>
</child>
<child gender="male">
<name>David</name>
</child>
</room>
И я хочу указать, какой пол и относительное положение ребенка. Так что в моем случае я хочу, чтобы в документе был второй мужчина.
/room/child[@gender="male]
просто дает мне всех мужчин, где /room/child[position()=2]
приведет к тому, что Мэри будет вытащена.
Я уже пришел с решением, предоставляя каждому друг другу атрибут идентификатора в зависимости от их положения и может запрашивать его с помощью простого AND /room/child[@gender="male" and @ID="2"
, но это потребует много работы с моей стороны, чтобы go вернулся во все мои документы и добавить этот второй атрибут вместо того, чтобы просто использовать один упрощенный Xpath, если это возможно. Я также понимаю, что могу запросить самцов, а затем запросить позицию результата, но опять же, я бы предпочел, если возможно, просто сохранить его в виде одного запроса.