2015-02-09 39 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')])