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]fonction min() de EXSLT


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 53
    Points : 34
    Points
    34
    Par défaut [XSLT]fonction min() de EXSLT
    Bonjour,

    je cherche un moyen pour trouver la valeur minimum d'une liste de valeurs contenue dans un fichier xml dans ma feuille xsl qui transforme mon xml en html.

    Le fichier Xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <PARAM_LIST>
           <PARAM_DATA>
    		<DATE>2007-01-09T15:00:16.108Z</DATE>
    		<VALUE>58778.5</VALUE>
           </PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:17.062Z</DATE>
    		<VALUE>45399.1</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:18.016Z</DATE>
    	       <VALUE>30901.7</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    	        <DATE>2007-01-09T15:00:18.970Z</DATE>
    		<VALUE>15643.4</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:19.924Z</DATE>
    	        <VALUE>1.22465e-11</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:20.878Z</DATE>
    		<VALUE>-15643.4</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:21.832Z</DATE>
    		<VALUE>-30901.7</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:22.786Z</DATE>
    	        <VALUE>-45399.1</VALUE>
    	</PARAM_DATA>
    	<PARAM_DATA>
    		<DATE>2007-01-09T15:00:23.740Z</DATE>
    	        <VALUE>-58778.5</VALUE>
    	</PARAM_DATA>
    <PARAM_LIST>
    Parite Xsl pour calcul du min :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <xsl:value-of select="math:min(descendant::VALUE)"/>
    Mon problème est que les valeurs peuvent être au format reconnu comme number dans xsl mais aussi au format scientifique ( 1.22e-11). J'utilise actuellement la fonction min de EXSLT, mais lorsque qu'elle recontre un nombre scientifique elle me renvoi NaN(pour not a number).
    J'aimerais savori si il existe un autre moyen pour trouver ce minimum dans ma feuille xsl.

    Ou si il y a un moyen de convertir mon nombre scientifique en nomnre a virgule :
    1.22e-11 -> 0.000000000122

    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Bon j'ais essayer de touner le probleme autrement et j'en suis arriver a modifier le code la fonction min de EXSLT qui em donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:for-each select="descendant::VALUE">
    	<xsl:sort data-type="number"/>	
    	<xsl:if test="string(number(.))='NaN'">				
                    // Modification de la valeur en cours
            </xsl:if>
    	<xsl:if test="position() = 1 ">
    		<xsl:value-of select="."/>
    	</xsl:if>
    </xsl:for-each>

    Je débute en xsl et le problème que j'ais c'est que je ne sait pas comment modifier la valeur en cours.
    Quand je range mes valeurs par nombres et que je trouve une valeure qui n'est pas un nombre ( typiquement la valeure scientifique dont je parlais 1.22e-11) je voudrai lui donner la valeure 0.00000000122.

    Je sait pas si je suis très clair, alors si vous avez des questions n'hésitez pas

    Merci.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    En cherchant sur internet j'ai trouver que la version 2.0 de XPath permet d'utiliser le type xs:double qui reglerai mon probleme helas j'utilise xalan-c qui est encore en version 1.1 incluant Xpath v1.6.
    Donc j'aimerais savoir si qqun a une idée de comment je pourrait faire interpreter les valeurs scientifique (1.22e-11 par exemple ) pour obtenir un type number de la forme 0.0000000001222.
    Merci.

Discussions similaires

  1. Fonction MIN et MAX résultat improbable
    Par UNi[FR] dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 24/04/2006, 11h38
  2. [XSLT] fonction récursive à N niveaux
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/03/2006, 12h30
  3. [XSLT] fonction avec retour
    Par goth dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/02/2006, 23h49
  4. [xslt] fonctions manipulations string
    Par gorgonite dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/01/2006, 09h46
  5. [XSLT] Fonction xslt_create indéfinie
    Par ripou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/10/2005, 22h31

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