Вот пример XML:
<Pnode PFilter="1">
<Child1>
<Child2 Filter="1"></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 ></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 Filter="1"></Child2>
<Child2></Child2>
</Child1>
</Pnode>
<Pnode>
<Child1>
<Child2 Filter="1"></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 ></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 Filter="1"></Child2>
<Child2></Child2>
</Child1>
</Pnode>
<Pnode>
<Child1>
<Child2 Filter="1"></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 ></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 Filter="1"></Child2>
<Child2></Child2>
</Child1>
</Pnode>
<Pnode>
<Child1>
<Child2></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2 ></Child2>
<Child2></Child2>
</Child1>
<Child1>
<Child2></Child2>
<Child2></Child2>
</Child1>
</Pnode>
</Doc1>
Я пытаюсь получить количество всех PNodes, которые не имеют PFilter = "1" и имеют хотя бы 1 child2 filter = 1.
В приведенном выше примере результат должен быть 2.
expession="count(//Doc1/Pnode[not (@PFilter='1') and (Child1/Child2[@Filter='1'])])"
похоже, что он должен работать. Мне не хватает синтаксиса или чего-то в этом роде?
Я тоже подумал, может быть, expession="count(//Doc1/Pnode[not (@PFilter='1') and (count(Child1/Child2[@Filter='1'])>1)])"
Есть ли способ получить количество родителя с помощью этого типа фильтров?