由具有特定属性的孩子计算父母

时间:2015-02-09 14:59:19

标签: xml xpath count

我有以下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>

我需要根据孩子的身份来计算父母的数量。例如,如果所有孩子都通过了#39;状态,父母的状态必须通过,但如果其中一个孩子处于失败状态,则整体状态必须“失败”。我怎么能通过XPath做到这一点?

请注意,某些父级可以包含具有自己子级的子级,因此XPath必须是通用的。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先,将parent元素包装在公共根元素中,否则XML格式不正确。

然后,您可以使用以下XPath来计算所有parent元素,而后代child元素没有fail @status

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