2015-02-09 36 views
1

我有以下XML文件:计数家长通过孩子与特定的属性

<parent> 
    <child status = 'pass'></child> 
    <child status = 'pass'></child> 
</parent> 
    <child status = 'pass'></child> 
    <child status = 'fail'></child> 
<parent> 
    <child status = 'pass'></child> 
    <child status = 'pass'></child> 
</parent> 
<parent> 
    <child> 
    <child status = 'pass'></child> 
    <child status = 'fail'></child> 
    </child> 
</parent> 

我需要孩子的情况来算的父母。例如,如果所有孩子都具有“通过”状态,则父母的状态必须是“通过”,但是如果其中一个孩子失败,则总体状态必须是“失败”。我怎样才能做到这一点的XPath?

请注意,某些父项可以包含具有自己子项的子项,所以XPath必须具有多功能性。有任何想法吗?

回答

1

首先,将您的parent元素包装在一个通用的根元素中,否则XML格式不正确。

然后你可以用下面的XPath计算所有对于没有后代child元素有一个fail@statusparent元素:

count(//parent[not(.//child/@status = 'fail')])