Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/06/2004, 14h43   #1
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
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 :
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
__________________
Température de l'eau : 28 °
Température extérieure : 32°
Température au fond du verre : 50° ~ 55°
------ Mangez des bananes ----------
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2004, 14h22   #2
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
xsl:decimal-format determine comment les caracteres de la chaine format de format-number sont interprétés.

par exemple,
XML:
Code :
1
2
3
4
 
<document>
  <Number>123456789.98</Number
</document>
XSL:
Code :
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:
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2004, 16h01   #3
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Dès que je pose :

Code :
<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 :
1
2
3
<xsl:value-of select="format-number(EXPORT,'### ##0')"/>
ou
<xsl:value-of select="format-number(EXPORT,'### ###')"/>
Avec un décimal :
Code :
1
2
3
<xsl:value-of select="format-number(PBNET,'### ##0,0')"/> 
ou
<xsl:value-of select="format-number(PBNET,'### ###,#')"/>
__________________
Température de l'eau : 28 °
Température extérieure : 32°
Température au fond du verre : 50° ~ 55°
------ Mangez des bananes ----------
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2004, 14h06   #4
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
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.
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2004, 18h58   #5
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut la solution

Voici la solution :

1 / Déclarer Decimal-Format tel que :
Code :
<xsl:decimal-format name="FormatNB" decimal-separator="," grouping-separator=" " NaN="NC"/>
2 / afficher les nombres de la manière suivante

Pour un entier :
Code :
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 :
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>
__________________
Température de l'eau : 28 °
Température extérieure : 32°
Température au fond du verre : 50° ~ 55°
------ Mangez des bananes ----------
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h34.


 
 
 
 
Partenaires

Hébergement Web