---
title: "Addering samt muliplikation med XSLT/XSL"
type: "forum-thread"
url: "https://www.webforum.nu/amne/xml/81506-addering-samt-muliplikation-med-xslt-xsl"
topic: "XML"
topic_url: "https://www.webforum.nu/amne/xml"
author: "SPiN"
published: "2003-07-07T16:10:17.000Z"
updated: "2003-07-07T21:34:40.000Z"
replies: 11
views: 650
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/xml/81506-addering-samt-muliplikation-med-xslt-xsl"
---

# Addering samt muliplikation med XSLT/XSL

## #1 — SPiN, 2003-07-07T16:10Z

Hej!

Jag sitter och klurar på hur jag ska kunna addera samt multiplicera med XSLT? Jag har fyra variabler med värden som jag vill multiplicera samt addera ihop. Jag vet inte om jag gör på rätt sätt, ni får jättegärna komma med tips. :)

```
// Variablerna
<xsl:variable name="smAntal">
     5
</xsl:variable>
<xsl:variable name="smPris">
     25
</xsl:variable>
<xsl:variable name="lgAntal">
     1
</xsl:variable>
<xsl:variable name="lgPris">
     35
</xsl:variable>

// Sättet som jag försökte lägga ihop det totala priset:
<xsl:variable name="totPris" select="number([[$smAntal*$smPris]+[$lgAntal*$lgPris]])" />
```

Självklart skulle jag kunna strukturera om mitt XML-dokument, och lägga till fält med dessa värden - men helst vill jag undvika det.

Några tips & råd?

Permalänk: https://www.webforum.nu/p/81506

## #2 — Darren, 2003-07-07T19:03Z

Funkar inte detta?

```
<xsl:value-of select="number( ($smAntal * $smPris) + ($lgAntal * $lgPris) )" />
```

Om du vill ha summan i en ny variabel så kan du göra så här:

```
<xsl:variable name="total"><xsl:value-of select="number( ($smAntal * $smPris) + ($lgAntal * $lgPris) )" /></xsl:variable>

<!-- skriva ut den nya variabeln -->
<xsl:value-of select="$total" />
```

Permalänk: https://www.webforum.nu/p/1105643

## #3 — SPiN, 2003-07-07T19:28Z

Tackar, funkar perfekt. :)

Permalänk: https://www.webforum.nu/p/1105658

## #4 — SPiN, 2003-07-07T19:49Z

Kan jag inte använda mig av decimaltal? Jag har ett par fält i XML-dokumentet som kan innehålla ett decimal-tal, som jag vill multiplicera. Är jag tvungen att avrunda dessa med round() innan jag kan multiplicera dessa med andra tal?

Jag får alltid ett NaN, Not a number - vare sig jag använder punkt eller komma-tecken.

Permalänk: https://www.webforum.nu/p/1105671

## #5 — Darren, 2003-07-07T19:57Z

Decimalerna fungerar utmärkt för mig. Använder mig av punkten som decimalavgränsare.

Om jag tar dina variabelexempel och ändrar de lite

```
<xsl:variable name="smAntal">5.25</xsl:variable>
<xsl:variable name="smPris">25</xsl:variable>
<xsl:variable name="lgAntal">1.5</xsl:variable>
<xsl:variable name="lgPris">35</xsl:variable>
```

Då skriver följande kod att totalen är lika med 183,75.

```
<xsl:variable name="total"><xsl:value-of select="number( ($smAntal * $smPris) + ($lgAntal * $lgPris) )" /></xsl:variable>

<xsl:value-of select="$total" />
```

Vad är det för parser du använder dig av? Själv kör jag med MSXML 4.0.

Permalänk: https://www.webforum.nu/p/1105676

## #6 — SPiN, 2003-07-07T19:58Z

Hm, så att jag inte ens kunde använda heltal på det sätt jag gör.

```
<xsl:for-each select="xmlRootElement/xmlElementList">

<xsl:variable name="itemPris">
     <xsl:value-of select="xmlElementPris" />
</xsl:variable>
<xsl:variable name="itemAntal">
     <xsl:value-of select="xmlElementAntal" />
</xsl:variable>
<xsl:variable name="totPris">
     <xsl:value-of select="number( $itemPris * $itemAntal )" />
</xsl:variable>

<xsl:value-of select="$totPris" />
</xsl:for-each>
```

På följande XML-träd:

```
<xmlRootElement>
     <xmlElementList>
          <xmlElementPris>10.00</xmlElementPris>
          <xmlElementAntal>20</xmlElementAntal>
     </xmlElementList>
     <xmlElementList>
          <xmlElementPris>15.90</xmlElementPris>
          <xmlElementAntal>15</xmlElementAntal>
     </xmlElementList>
</xmlRootElement>
```

Permalänk: https://www.webforum.nu/p/1105677

## #7 — SPiN, 2003-07-07T19:59Z

Jag använder Mozilla för att visa mina parsade XML-dokument. Som du ser nu, använder jag node-värden från ett XML-dokument den här gången, inte inskrivna variabler. :)

Permalänk: https://www.webforum.nu/p/1105678

## #8 — Darren, 2003-07-07T20:28Z

Hmmm... Din kod fungerar utmärkt hos mig med MSXML 4.0.

Men som du säger så fungerar den inte i Mozilla. Mysko.

Permalänk: https://www.webforum.nu/p/1105693

## #9 — SPiN, 2003-07-07T20:53Z

Inte heller i IE, med WinXP Pro. ( MSXML3? ) :(

Permalänk: https://www.webforum.nu/p/1105707

## #10 — Darren, 2003-07-07T21:13Z

Funkar även i MSXML 3 hos mig (XP Home).

```
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="xmlRootElement">
    <xsl:for-each select="xmlElementList">

        <xsl:variable name="itemPris">
            <xsl:value-of select="xmlElementPris" />
        </xsl:variable>
        <xsl:variable name="itemAntal">
            <xsl:value-of select="xmlElementAntal" />
        </xsl:variable>
        <xsl:variable name="totPris">
            <xsl:value-of select="number( $itemPris * $itemAntal )" />
        </xsl:variable>
		
        <xsl:text>Pris: </xsl:text><xsl:value-of select="xmlElementPris" /><br />
        <xsl:text>Antal: </xsl:text><xsl:value-of select="xmlElementAntal" /><br />
        <xsl:text>Totalt: </xsl:text><xsl:value-of select="$totPris" /><br /><br />

    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
```

Permalänk: https://www.webforum.nu/p/1105723

## #11 — SPiN, 2003-07-07T21:22Z

Funkar kanon i IE, men ger ingen utskrift alls i Mozilla Firebird. :l

Märkligt! Jag får väl fortsätta försöka få till det för Mozilla också, tack för all hjälp!

Permalänk: https://www.webforum.nu/p/1105730

## #12 — Darren, 2003-07-07T21:34Z

Fick det att fungera i Mozilla 1.3 och Netscape 7.01.

```
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>

<xsl:template match="xmlRootElement">
<html>
    <head>
        <title>Mozilla Test</title>
    </head>
    
    <body>
    <xsl:for-each select="xmlElementList">
        <xsl:variable name="pris">
            <xsl:value-of select="xmlElementPris"/>
        </xsl:variable>
        <xsl:variable name="antal">
            <xsl:value-of select="xmlElementAntal"/>
        </xsl:variable>
				
        <xsl:variable name="total">
            <xsl:value-of select="number($pris * $antal)"/>
        </xsl:variable>

        <xsl:value-of select="$total"/><br/><br/>
    </xsl:for-each>
    </body>
</html>
</xsl:template>
</xsl:stylesheet>
```

Permalänk: https://www.webforum.nu/p/1105747

---

Tråden på webben: https://www.webforum.nu/amne/xml/81506-addering-samt-muliplikation-med-xslt-xsl
