19. maj 2006 - 10:54
Der er
3 kommentarer og 1 løsning
Funktion sum() i for-each of if statement
Hej eksperter, jeg har følgende statements i et xsl dokument, hvor jeg gerne vil tjekke om et felt er = VAT hvis så, sum alle de poster hvor dette matcher. code: <xsl:for-each select="com:InvoiceLine"> <xsl:if test ="com:Item/com:Tax/com:RateCategoryCodeID='VAT'"> <xsl:variable name="varVAT" select="com:LineExtensionAmount" /> <xsl:value-of select="format-number(sum($varVAT), '##0.00')"/> </xsl:if> </xsl:for-each> resultatet bliver følgende 33.00 34.90 ønsket resultat : 67.90 ------------- Den vister de rigtige værdier, men sum() beregner ikke rigtig. jeg har en almindelig sum() i en anden felt hvor på det virker: <xsl:value-of select="sum(com:InvoiceLine/com:LineExtensionAmount)" /> håber I kan hjælpe
Annonceindlæg fra COMM2IG
Det er jo desværre korrekt det den gør idet jeg siger at den for hver værdi den finder skal den sum den linje, hvilket altid vil resultere i X antal sum pr. værdi. så mit spørgsmål må være hvordan får jeg omstruktureret denne så jeg får summen af de værdier der finder? altså en total beregning af alle de forkomster der findes i min if statement. Hjææælp :)
Selve XML filen ser således ud (brudstykke af original): <com:InvoiceLine> <com:InvoicedQuantity unitCode="Stk" unitCodeListAgencyID="n/a">1</com:InvoicedQuantity> <com:LineExtensionAmount currencyID="DKK">-33161.77</com:LineExtensionAmount> <com:Item> <com:ID schemeID="n/a">n/a</com:ID> <com:Description>Nesa har opkrævet a conto</com:Description> <com:Tax> <com:RateCategoryCodeID>VAT</com:RateCategoryCodeID> <com:TypeCode>VAT</com:TypeCode> <com:RatePercentNummeric>25</com:RatePercentNummeric> </com:Tax> </com:Item> <com:BasePrice> <com:PriceAmount currencyID="DKK">-33161.77</com:PriceAmount> </com:BasePrice> </com:InvoiceLine> <com:InvoiceLine> <com:InvoicedQuantity unitCode="Stk" unitCodeListAgencyID="n/a">1</com:InvoicedQuantity> <com:LineExtensionAmount currencyID="DKK">-58.47</com:LineExtensionAmount> <com:Item> <com:ID schemeID="n/a">n/a</com:ID> <com:Description>Andre betalinger - momsfritaget</com:Description> <com:Tax> <com:RateCategoryCodeID>ZERO_RATED</com:RateCategoryCodeID> <com:TypeCode>ZERO_RATED</com:TypeCode> <com:RatePercentNummeric>00</com:RatePercentNummeric> </com:Tax> </com:Item> <com:BasePrice> <com:PriceAmount currencyID="DKK">-58.47</com:PriceAmount> </com:BasePrice> </com:InvoiceLine>
Slettet bruger
23. maj 2006 - 20:22
#3
Til sådan noget er der ingen grund til at bruge for-each - fortæl processoren hvad det er for nogle elementer du gerne vil have summen af, f.eks.: Giv mig summen af "LineExtensionAmount" for alle "InvoiceLine" elementer hvor Item/Tax/RateCategoryCodeID er lig med 'VAT': <xsl:value-of select="format-number(sum(com:InvoiceLine[com:Item/com:Tax/com:RateCategoryCodeID='VAT']/com:LineExtensionAmount), '##0.00')"/> /CS
Hej graystate Der er smukt, det virker præsis som forventet, jeg havde ikke læst på lektion ordenligt. tænkte lidt for meget i kode sprog :) tak for hjælpen
Kurser inden for grundlæggende programmering