从 xsl:sum 方程中排除某些值

Excluding certain values from an xsl:sum equation

在我的样式表中,我有一个 xsl:variable 查看 XML,查看对象列表和 returns 每个对象的价格值总和,我的代码示例如下:

  <xsl:variable name="ExampleTotal">
      <xsl:value-of select="sum(/ListOfObjects/Object/PriceOfObject)"/>
  </xsl:variable>

这很好用, 我的问题是我不需要列表中的 每个 个对象的总和,只需要那些包含 true[=23= 值的对象].

示例XML:

<ListOfObjects>
  <Object>
    <PriceOfObject>35.00</PriceOfObject>
    <PriceNeeded>true</PriceNeeded>
    <OtherData>example</OtherData>
  </Object>
  <Object>
    <PriceOfObject>36.00</PriceOfObject>
    <PriceNeeded>true</PriceNeeded>
    <OtherData>example</OtherData>
  </Object>
  <Object>
    <PriceOfObject>35.00</PriceOfObject>
    <PriceNeeded>true</PriceNeeded>
    <OtherData>example</OtherData>
  </Object>
  <Object>
    <PriceOfObject>33.00</PriceOfObject>
    <PriceNeeded>false</PriceNeeded>
    <OtherData>example</OtherData>
 </Object>
</ListOfObjects>   

是否可以查看对象列表并只对值为 true 的对象求和?

试试这个:

<xsl:variable name="ExampleTotal">
  <xsl:value-of select="sum(/ListOfObjects/Object[PriceNeeded='true']/PriceOfObject)"/>
</xsl:variable>

根据 Michael Kay 的建议更改了以上代码,

<xsl:variable name="ExampleTotal" 
  select="sum(/ListOfO‌​bjects/Object[PriceNe‌​eded='true']/PriceOfO‌​bject)"/>