2015-09-22 94 views
-1

我有一个问题要总结的具体内容, 我想通过具体的值 该XML我想类似的东西,总结以前所有的元素,XSLT:如何总结以前的元素

我想总结所有LinkedQuantity元素之前的LinkedQuantity = -14

<xsl:value-of select="sum(//*[local-name()='LinkedQuantity'][preceding::*][text() != -14])"/> 

但它总结的值后-14为好。

<product> 
<TransactionLink ReasonCode="Subtract"> 
    <LinkedSequenceNumber>10</LinkedSequenceNumber> 
    <LinkedQuantity>-2.000000</LinkedQuantity> 
</TransactionLink> 
<TransactionLink ReasonCode="Subtract"> 
    <LinkedSequenceNumber>10</LinkedSequenceNumber> 
    <LinkedQuantity>-4.000000</LinkedQuantity> 
</TransactionLink> 
<TransactionLink ReasonCode="Subtract"> 
    <LinkedSequenceNumber>10</LinkedSequenceNumber> 
    **<LinkedQuantity>-14.000000</LinkedQuantity>** 
</TransactionLink> 
<TransactionLink ReasonCode="Subtract"> 
    <LinkedSequenceNumber>10</LinkedSequenceNumber> 
    <LinkedQuantity>-12.000000</LinkedQuantity> 
</TransactionLink> 
<TransactionLink ReasonCode="Subtract"> 
    <LinkedSequenceNumber>10</LinkedSequenceNumber> 
    <LinkedQuantity>-7.000000</LinkedQuantity> 
</TransactionLink> 

回答

1

我想所有的LinkedQuantity元素前面的总和为LinkedQuantity = -14

从字面上看,这将转化为:

<xsl:value-of select="sum(//LinkedQuantity[.=-14]/preceding::LinkedQuantity)"/> 

但是,以给定的例子e,写出来会更有效率:

<xsl:value-of select="sum(/product/TransactionLink[LinkedQuantity=-14]/preceding-sibling::TransactionLink/LinkedQuantity)"/>