2010-07-29 9 views
0

Dans XSLT 1.0 (en utilisant Xalan), sortir le résultat de:XSLT 2.0 Comment changer le formatage par défaut pour les nombres?

<xsl:variable name="source0" select="number(num3)"/> 
<xsl:value-of select="$source0"/> 

était le numéro orthographié comme 2011234. Mais dans XSLT 2.0 (en utilisant saxonne), il apparaît comme 2.011234E6. Je veux qu'il affiche toujours comme 2011234 dans le cas Saxon/2.0.

Y at-il un moyen de définir la chaîne d'image par défaut pour chaque fois qu'il sort un nombre?

J'ai vu le format décimal, mais cela affecte seulement les chaînes d'image, il ne définit pas le formatage des nombres. Je ne peux pas simplement lancer le format-nombre partout puisque je devrais vérifier les types de données partout et ... ce serait un gâchis.

+0

N'utilisez pas de virgule flottante sauf si vous souhaitez utiliser le virgule flottante. Prenez l'habitude de déclarer le type de vos variables (par exemple as = "xs: integer"), et d'utiliser des conversions explicites (xs: decimal(), xs: integer()) plutôt que la fonction number(). –

Répondre

1

Il n'y a pas moyen d'exprimer dans XSLT 2.0 (ou XSLT 1.0) que chaque fois qu'une valeur numérique est sortie, il doit être dans un format « par défaut », sans Ussing fn:format-number() ou xsl:decimal-format ou op:cast ou constructeurs de type intégré. La seule façon dont chaque nombre sera considéré d'un type spécifique est qu'un schéma a été déclaré pour l'entrée (donc c'est un PSVI) et que vous exécutez la transformation avec le processeur schema-awere.

+0

Merci pour la réponse ... Wow, cela semble fou. Il y a une conversion par défaut, évidemment, alors pourquoi ne pas permettre d'ajuster cette conversion par défaut? Quelle nuisance. Il faut donc que le numéro de format apparaisse un peu partout ... et maintenant je découvre que le format-number a de sérieux problèmes ... mais c'est une question différente ... – mentics

+0

@taotree: Je pense que pour déclarer un "défaut" format de nombre ce serait une caractéristique, mais je ne pense pas que ce serait un très désiré comme la fonction de première classe, les éléments pattren correspondant ou séquence imbriquée, par exemple. –

+0

En fait, cela n'a pas d'importance. La prise en charge du formatage des nombres est minimale, le format par défaut qui passe à scientifique à 7 chiffres ... les fonctionnalités de prise en charge sont insuffisantes pour rendre le formatage par défaut paramétrable tout de même significatif. – mentics