Avatar billede tomn1 Nybegynder
17. december 2003 - 16:09 Der er 4 kommentarer

Sortering hvor num.værdi indehol decimaler og tusind-adskiller

Hej

Jeg har et lille problem med sortering af mine XML-data i XSL. Mine numeriske værdier i XML´en er faktisk ikke rigtig numeriske, da de allerede er formateret med komma før decimaler samt punktum som tusind-adskiller.

Når jeg med xsl:sort forsøger at sortere dataene bliver det forkert uanset om jeg bruger data-typen number eller text.

Hvordan løser jeg det problem? Jeg har lavet en xsl:decimal-format, kan man evt. sige, at den skal læse værdien som number og tage hensyn til opsættet i xsl:decimal-format?

Mvh Tom
Avatar billede janegil Nybegynder
17. december 2003 - 16:30 #1
Bruk http://www.w3.org/TR/xpath#function-translate for å erstatte komma med punktum, deretter http://www.w3.org/TR/xpath#function-number for å tolke et tall med whitespace i, som et tall
Avatar billede tomn1 Nybegynder
17. december 2003 - 16:51 #2
Men hvordan skal jeg gøre det, når det er i min xsl:sort?

I min kode er det VALUE, som f.eks. indeholder 365.464,50
<xsl:sort select="STATIC/FIELDS/COLDTA/FIELD[NAME=$XLSORTFIELD]/VALUE" order="{$XLSORTORDER}" data-type="number" />
Avatar billede janegil Nybegynder
17. december 2003 - 17:53 #3
select="number(translate(STATIC/FIELDS/COLDTA/FIELD[NAME=$XLSORTFIELD]/VALUE,',','.'))"

tror jeg
Avatar billede tomn1 Nybegynder
18. december 2003 - 09:43 #4
Hej igen

Tak for det - det ledte mig på sporet. Jeg ændrede lidt, så jeg først erstatter tusind-seperator med ingenting (fra '.' til '') og dernæst erstatter komma med punktum (',' '.'). Så virker det.

Men der er dukket et problem mere op. Ved number skal et fortegn tilsyneladende står før tallet (f.eks. -15,20), men værdierne jeg får i XML´en er f.eks. 15,20-  Hvordan løser jeg det problem, så den sorterer rigtigt.

Mvh Tom
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





White paper
Rapport kortlægger de 13 bedste muligheder for at sætte turbo på din cloud computing