以下是示例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>
我正试图获得不具有PFilter="0"的所有PNode的计数;1〃;并且具有至少1个子2过滤器=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)])"
有没有一种方法可以用这些类型的过滤器来获得父项的计数?
下面应该可以工作。请尝试一下:
expression="count(//Pnode[not (@PFilter='1')][Child1/Child2[@Filter='1']])"
或
expression="count(//Doc1/Pnode[not (@PFilter='1')][Child1/Child2[@Filter='1']])"