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

XSL/XSLT/XPATH XML Discussion :

format monétaire avec decimal-format


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut format monétaire avec decimal-format
    Bonjour

    Je me heurte à la méthode pour afficher un format monétaire reconnu internationalement

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    déclaration initiale 
    <xsl:decimal-format name="moneyFormat" decimal-separator="," grouping-separator=" "/>
    et dans la template d'affichage
    <xsl:value-of select="format-number($account, parameters/currencyPattern,
    'moneyFormat')"
    Ceci fonctionne sans problème mais decimal-separator et
    grouping-separator sont en "dur" dans le code et ils doivent correspondre
    au pattern (# ##0,00€ dans l'exemple). Ce code n'est pas générique, si on
    veut changer le format il faut à la fois changer le pattern et les
    paramètres : decimal-separator et grouping-separator (et que les deux
    structures soient compatible).
    Aux USA le pattern devient $#,##0.00;$-#,##0.00 et decimal-separator="." et grouping-separator="," Je souhaite que l'utilisateur puisse indiquer son pattern et ensuite qu'il s'applique aux pages générées en XSLT decimal_format est une commande primaire on ne peut donc pas lui affecter des attribut, ceci n'est possible que dans les templates
    Le pattern n'étant pas suffisant en soit, existe'il une méthode pour le traitement des formats monétaire, XSLT en action ne donne pas de solution pour un traitement global
    On pourrait définir autant de decimal-format qu'il puisse exister dans le monde mais je trouve cela lourd bien que le symbol soit remplaçable a la volée. Mais il ne sera jamais possible de satisfaire tous les utilisateurs

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Je pense qu'il faudrait procéder en deux temps :
    1. utiliser format-number de manière à avoir le bon positionnement des délimiteurs
    2. modifier par translate ces délimiteurs en fonction du format voulu
    Pour faire tout cela, en XSLT 1.0, on peut définir un template nommé (ce n'est pas aussi souple qu'une fonction)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Si on utilise number-format avec une chaine pattern, le motif de conversion doit être indiqué. Sinon c'est le format par défaut decimal-separator = . et grouping-separator = , qui est retenu. Une erreur survient car le patern n'est pas identique

    Merci

  4. #4
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Avez-vous essayé un appel du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    translate(format-number(...),'.,',',.')

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    La fonction translate permet la conversion tant que l'on reste avec des caractères en "dur" mais je ne peux pas lui mettre de variable, la seul structure reconnue est celle ci
    <xsl:value-of select="translate(format-number($totalDebit, ../currencyPattern, 'typePattern'),'.,','$decimalSeparator $thousandSeparator')"/>

    Mais bien sur elle ne passe pas les paramètres http://www.developpez.net/forums/ima...s/icon_sad.gif

  6. #6
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Mais si, mais si...

    La fonction translate() ne prend pas obligatoirement des paramètres statiques : tous ses paramètres sont des chaines de caractères qui peuvent être générées, par exemple, à l'aide de la fonction concat().

    Ce qui doit être quelque chose comme cela pour vous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="translate(format-number($totalDebit, ../currencyPattern, 'typePattern'),'.,',concat($decimalSeparator,$thousandSeparator))"/>
    S'il y a un risque qu'un espace ou un saut de ligne figure dans une des variables, il faut d'abord appeler la fonction normalize-space()...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Merci pour ce mode d'utilisation de translate, j'ai pu mette ceci en pratique et ainsi me passer de decimal-format qui est contraignant par son manque de parametrage avec des variables

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

Discussions similaires

  1. [Débutant] GridView - Format Monétaire avec DataFormatString
    Par Schattengang dans le forum ASP.NET
    Réponses: 6
    Dernier message: 01/06/2012, 01h10
  2. format rtf passer au format jrxml avec ireport
    Par heoue dans le forum Jasper
    Réponses: 4
    Dernier message: 16/05/2008, 11h54
  3. Arrondi avec Decimal Format
    Par Sakapatate dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2007, 01h17
  4. [VBA-E] Formater une cellule en format monétaire
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2006, 15h15
  5. formater un nombre en format "monétaire"
    Par jm6570 dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2005, 10h06

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