XSL计数问题

时间:2011-03-29 13:30:37

标签: xml xslt

这是示例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”值的子节点。

2 个答案:

答案 0 :(得分:2)

您可以列出几组方括号,为您的条件添加新条款,例如

/ testResults / * [@ s ='false'] [not(.// error ='true')]

答案 1 :(得分:0)

select =“count(/ testResults / * [attribute :: s ='false'而不是(error ='false')])”