Похоже, в вашем XML есть некоторые опечатки.Предполагая, что ваш XML подобен этому (с <grandchild/>
вместо </grandchild>
под первым <child>
и закрывающим </documentRoot>
<documentRoot>
<parent name="data">
<child id="1" name="alpha">
<age>20</age>
<grandchild/>
</child>
<child id="2" name="beta">
<age>50</age>
<grandchild id="2.1" name="beta-alpha"/>
<grandchild id="2.2" name="beta-beta"/>
</child>
</parent>
</documentRoot>
Этот XPath выберет возраст дочернего элемента, где <grandchild/>
существует без @id
//child[not(anotherchild/grandchild/@id)]/anotherchild/age
, это вернет имя для того же child
//child[not(anotherchild/grandchild/@id)]/anotherchild/@name