Avatar billede dotcom1 Nybegynder
24. september 2012 - 15:26 Der er 6 kommentarer og
1 løsning

format number og decimaler

Hej.

Jeg vil gerne kunne angive 2 decimaler i dansk format hvis de er i xml'en. Hvis prisen er ,00 skal der blot vises et heltal. Jeg kan ikke få det til at virke:

<?xml version="1.0"?>
<products>
  <product>
      <name>LA</name>
      <price>299,50</price>
      <description>Looking for Hollywood?</description>
      <version>1.0</version>
  </product>
  <product>
      <name>Springfield</name>
      <price>199,00</price>
      <description>
        Nice place
      </description>
      <version>5.0</version>
  </product>
  <product>
      <name>NYC</name>
      <price>299</price>
      <description>The big apple</description>
      <version>1.5</version>
  </product>
  <product>
      <name>Chicago</name>
      <price>599,99</price>
      <description>Cold in winter</description>
  </product>
</products>


<?xml version="1.0"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:template match="/products">
  <html>
      <head>
        <title>Cascading Style Sheet</title>
        <link rel="stylesheet" type="text/css" href="table.css"
              title="Style"/>
      </head>
      <body>
        <table border="1">
          <tr class="header">
            <td>Name</td>
            <td>Price</td>
            <td>Description</td>
          </tr>
          <xsl:apply-templates/>
        </table>
      </body>
  </html>
</xsl:template>

<xsl:decimal-format name="european" decimal-separator="," grouping-separator="." NaN="Not a Number" />
<xsl:template match="product">
  <tr class="odd">
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="format-number(price, '#,##', 'european')"/></td>
      <td><xsl:value-of select="description"/></td>
  </tr>
</xsl:template>

</xsl:stylesheet>
Avatar billede jokkejensen Novice
24. september 2012 - 20:17 #1
Prøv :

      <td><xsl:value-of select="format-number(number(translate(price,',','.')), '#,##', 'european')"/></td>

er sikker på at format-number ikke fungere med vores danske komma seperator.

/J
Avatar billede dotcom1 Nybegynder
25. september 2012 - 08:43 #2
Hej.

Sejt, det er helt perfekt. Smart med den der translate ting.
Eneste lille bitte ting: Der er en pris der hedder 299,50, men den bliver til 299,5. Hvordan kan man tvinge 2 decimaler på?
Avatar billede jokkejensen Novice
26. september 2012 - 08:57 #3
'#.###,00'
Avatar billede jokkejensen Novice
26. september 2012 - 08:59 #4
ellers lav en kolonne med tal i excel, og vælg brugerdefineret format (marker -> CTRL+1), så kan du lege med #### og 0000 der :)
Avatar billede dotcom1 Nybegynder
26. september 2012 - 09:07 #5
Genialt.
Kast et svar.

Tak for hjælpen.
Avatar billede jokkejensen Novice
26. september 2012 - 09:19 #6
Selv tak
Avatar billede jokkejensen Novice
26. september 2012 - 09:22 #7
hmm.. ",00" giver dig vel ikke hel tal uden decimaler?

<xsl:choose>
<xsl:when test="substring-after(price, ',') &gt; 0">
<!-- Med decimaler -->
<td><xsl:value-of select="format-number(price, '#,##', 'european')"/></td>
</xsl:when>
<xsl:otherwise>
<!-- uden decimaler -->
  <td><xsl:value-of select="format-number(price, '#', 'european')"/></td>
</xsl:otherwise>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester