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 :

[XSLT] Transformation numérique


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 83
    Points
    83
    Par défaut [XSLT] Transformation numérique
    Bonjour,

    Mon objectif est de rendre plus lisible des fichier XML contenant des numériques au format binaire IEEE754.
    Ce format qui a l'avantage d'être totalement insensible à la sérialisation,
    a le désavantage d'être totalement illisible.

    J'ai donc en entrée du XML contenant, en autres, des numériques au format binaire IEEE754
    et je voudrais, en sortie, le même XML avec des numériques au format décimal.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    <CDV TPE="DSC" VAL="3FFA6009F2BF9C72" />
    ...
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    <CDV TPE="DSC" VAL="1.64844698737741" />
    ...
    Pour info j'ai le code java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static double hexStringToDouble(String hexString) {
    		long myvalue=0;
     
    		for(int i=0; i<hexString.length(); i++) {
    			char c = hexString.charAt(i);
    			long v = Character.getNumericValue(c);		
    			myvalue = (myvalue << 4);
    			myvalue = myvalue + v ;
    		}
     
    		double d = Double.longBitsToDouble(myvalue);
    		return d;
    	}
    C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void DoubleHexaConverter::convertFrom(double& dval,const char *buf)
    {
    	double d=0.0;
    	char *dptr=(char *)&d;
    	for(int i=0;i<8;i++)
    	{
    		short u1=(FR_ASCII(buf[15 - 2*i])&0x0F);
    		short u2=FR_ASCII(buf[15 - (2*i + 1)])<<4;
    		char oct=(u1 & 0x000F ) | (u2& 0x00F0);
    		dptr[i]=  oct;
    	}
    	dval=d;
    }
    et même en perl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sub toDecimal {
      # $_[0] => value
      my $res = $_[0]; 
      if (isHexa($_[0])) {
        if ($_[0] eq "0000000000000000") {
          $res = 0;
        } else {
          $res =  unpack "d", reverse pack "H*", $_[0] ;
        }
      }
      return $res;
    }

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Tu peux utiliser d'autre techno que xslt?
    Perso, je pense que j'hébergerai une servlet java faisante cette traduction quelquepart -> donc accessible via une URL -> donc interrogeable via un xsl-t (fonction document) si on utilisait le xslt pour d'autres choses que cette seule traduction.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 83
    Points
    83
    Par défaut
    Oui, je ne suis pas figé sur la techno.
    Mais pour être concret, j'ai une appli .net qui récupère ces fichiers XML et je voudrais rajouter une fonction de visualisation.
    Je préférais avoir une solution autonome.

    Comme c'est une fonction de présentation, je pensais que le XSLT était le plus approprié.

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    La fonction de conversion est (pratiquement) impossible à écrire en XSLT. Par contre, il est possible de l'écrire dans un autre langage, et d'en faire une extension XSLT, c'est à dire une fonction appelable à partir de code XSLT.

    Le langage dans lequel on peut l'écrire, et l'API à utiliser pour en faire une extension dépendent du processeur XSLT. Tu utilises MSXML ?

Discussions similaires

  1. [XSLT] Transformation numérique décimal
    Par AZER33 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/01/2008, 10h04
  2. [XSLT]Transformer une partie d'un document
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/10/2005, 14h03
  3. [XML][XSLT] transformer le xml en binaire via une xslt
    Par chama dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/07/2005, 11h42
  4. [XSLT] transformation XHTML->XML
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 23/05/2005, 13h15
  5. [XSLT] transformation XML->XML en php
    Par amellouki dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/03/2005, 12h32

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