2015-09-22 130 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)"/>