这是示例xml文件:
<sample s="false">
<assertionResult>
<name>XML Assertion</name>
<failure>false</failure>
<error>false</error>
</assertionResult>
<assertionResult>
<name>Error Assertion</name>
<failure>false</failure>
<error>false</error>
</assertionResult>
<assertionResult>
<name>Success Assertion</name>
<failure>false</failure>
<error>false</error>
</assertionResult>
<assertionResult>
<name>XML Schema Assertion</name>
<failure>false</failure>
<error>true</error>
</assertionResult>
</sample>
原始文件包含示例节点,例如上面的节点。
我需要使用s =“false”属性计算所有示例节点,除了那些内部有 <error>true</error>
的节点。
这是我用来计算的代码:
select="count(/testResults/*[attribute::s='false'])"
问题在于我不知道如何排除具有“true”值的子节点。
答案 0 :(得分:2)
您可以列出几组方括号,为您的条件添加新条款,例如
/ testResults / * [@ s ='false'] [not(.// error ='true')]
答案 1 :(得分:0)
select =“count(/ testResults / * [attribute :: s ='false'而不是(error ='false')])”