IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XMLRAD Discussion :

Decimal-format


Sujet :

XMLRAD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut Decimal-format
    Avez-vous déjà utilisé decimal-format ?

    J'essaie d'afficher des nombres à la française (au delà de 100 000, avec ou sans décimales), mais j'ai du me résoudre à la notation à l'américaine ( séparateur de groupe = virgule, au lieu de point ; séparateur décimal = point au lieu de virgule).

    A ce jour, j'utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format-number(number(translate($Nb,',','.')), '###,##0.00')
    Mais en lisant de la doc sur format-number, j'ai compris qu'il utilisait par défaut les arguments de decimal-format . J'ai bien trouvé la définition de l'élément decimal-format dans XHTM.elements.xml mais pas où les valeurs des attributs étaient définies.

    Si l'un de vous peut m'orienter ! Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Par défaut
    xsl:decimal-format determine comment les caracteres de la chaine format de format-number sont interprétés.

    par exemple,
    XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <document>
      <Number>123456789.98</Number
    </document>
    XSL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:decimal-format decimal-separator="," grouping-separator=" "/>
      <xsl:template match="document">
        <xsl:value-of select="format-number(Number,'### ###.##')"/>
      </xsl:template>
    </xsl:stylesheet>
    Display:

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut
    Dès que je pose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:decimal-format decimal-separator="," grouping-separator=" "/>
    j'ai l'erreur :

    The '0' format symbol may not follow the '#' format symbol in this section of a format pattern. ###,##-->0<--

    J'ai cette erreur quelque soit la manière d'utilisation de decimal-format :

    Avec un entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:value-of select="format-number(EXPORT,'### ##0')"/>
    ou
    <xsl:value-of select="format-number(EXPORT,'### ###')"/>
    Avec un décimal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:value-of select="format-number(PBNET,'### ##0,0')"/> 
    ou
    <xsl:value-of select="format-number(PBNET,'### ###,#')"/>

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Par défaut
    Le format est tres précis : c'est un ensemble de chars prédéfini qui ont chacun une signification pour le formatage. On ne peut pas mettre n'importe quel char dans cette chaine.

    Donc, en gros, tu as des chars qui ont une certaine interpretation, et tu as le <xsl:decimal-format> qui permet de modifier cette interpretation pour ces chars.

    Voilà la liste des chars utilisables, tiré de google:
    #: Denotes a digit.
    0: Denotes leading and following zeros.
    .: The position of the decimal point
    ,: The group separator for thousands.
    %: Displays the number as a percentage.
    ;: Pattern separator. The first pattern will be used for positive numbers and the second for negative numbers

    D'apres ce que je comprend, on ne peut pas cumuler des 0 et des # dans la partie entiere ou dans la partie decimale.

    Par exemple,
    000,###,###.00 est interdit, alors que 000,000,000.00 ou ###,###,###.00 est permis.

    Donc, si tu veux des nombres avec un espace en separateur de milliers et une virgule pour separer les decimales et avec au moins 2 zeros pour les decimales, il te faut utiliser le format suivant :

    ###,###.00

    et il faut que tu specifies en plus comment le XSL interprete les , et les . via un decimal-format, comme indiqué dans les posts ci-dessus.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut la solution
    Voici la solution :

    1 / Déclarer Decimal-Format tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:decimal-format name="FormatNB" decimal-separator="," grouping-separator=" " NaN="NC"/>
    2 / afficher les nombres de la manière suivante

    Pour un entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template name="xslc:NbEntier">
    <xsl:param name="Nb"/>
    <xsl:value-of select="format-number($Nb,'### ##0','FormatNB')"/>
    </xsl:template>
    Pour un décimal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template name="xslc:NbDec2">
    <xsl:param name="Nb"/>
    <xsl:value-of select="format-number(number(translate($Nb,',','.')), '### ##0,00','FormatNB')"/>
    </xsl:template>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT 2.0] decimal format, probleme balise vide
    Par caballo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/09/2012, 09h09
  2. format monétaire avec decimal-format
    Par FlyByck dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 05/10/2008, 04h39
  3. nombre decimal formaté en temps "daté"
    Par bladebo dans le forum Excel
    Réponses: 2
    Dernier message: 11/03/2008, 16h15
  4. utiliser un Decimal format avec un type double
    Par Mobistar dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 07/03/2008, 13h47
  5. Arrondi avec Decimal Format
    Par Sakapatate dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2007, 01h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo