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] xsl:sort, bug sur les dates au format "YYYY/MM/DD HH:mm:ss (...)" ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut [XSLT] xsl:sort, bug sur les dates au format "YYYY/MM/DD HH:mm:ss (...)" ?
    Bonjour,
    je travaille en ce moment sur un fichier de log en xml avec feuille de style xsl.
    Pour des raisons pratiques évidentes je souhaite trier les sessions d'enregistrement par date.
    Pour cela j'ai formatté ma date pour un comparage chaine de caractère, de la façon suivante : AAAA/MM/JJ HH:MM:SS (NLO)
    avec NLO= numéro de l'opération dans le log
    Le nombre de 0 a été ajusté pour correspondre au maximum de chiffre.

    Mais la fonction xls:sort ne me trie pas correctement les sessions.
    En effet elle me considère (ascending ou descending) que

    2007/04/30 10:56:27 (011) < 2007/04/26 10:56:49 (001)

    voici mon instruction de tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:sort data-type="text" lang="fr" select="date" order="descending"/>
    Pourtant en parcours caractère par caractère, on tombe bien sur 3>2 !
    En ascii 33h>32h et en binaire 00110011>00110010 !!

    Y a-t-il un bug connu consernant les tris ou est-ce un problème de formatage ???
    Merci

    ps: je précise que le tri se fait, quand je change le descending en ascending, l'ordre s'inverse mais l'abération reste.

  2. #2
    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,

    pour que l'on soit bien sûrs, en ordre "descending", 2007/04/26 10:56:49 (001) apparaît avant 2007/04/30 10:56:27 (011), c'est bien cela ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Oui c'est bien ça, le 26 apparait avant le 30 en descending

  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
    Il n'y a aucune raison que cela ne fonctionne pas, et pour en être sûr je viens de faire le test, et le résultat est bien celui attendu.

    Je pencherais plutôt pour un problème non lié directement au tri ; comment récupères-tu la date triée en sortie, tu fais référence au noeud courant (avec . ou current()) ou tu utilises un autre moyen ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    En fait je fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <xsl:apply-templates select="log/session">
           <xsl:sort select="date" order="descending"/>
         </xsl:apply-templates>
    Mon xml est comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <log>
       <session>
           <article>
               <date></date>
               <message></message>
           </article>
           ....
       </session>
       <session>
           .....
       </session>
    </log>
    Par contre dans mon xml le 26 est après le 30 (en ordre croissant), on dirait que l'ordre à été conservé

    J'ais zippé mes 2 fichiers pour voir le problème : http://mystercoco.free.fr/erreur.zip

  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
    Dans le fichier XML joint, il y a une balise article entre session et date ?!?
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Oui je l'avais oublié dans l'exemple, mais ça change rien, non ?

  8. #8
    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
    Si, bien sûr, car il n'y a pas de balise "date" directement sous "session" d'où pas de tri...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ah oookkk, merci bcp !
    Je pensais qu'il irait chercher automatiquement dans l'arbre s'il n'y a pas d'ambiguité sur le nom...

    J'ai remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:apply-templates select="log/session">
           <xsl:sort select="article/date" order="descending"/>
         </xsl:apply-templates>
    Apparement ça marche

    ps: c'est la première fois que je fais du xsl/xml ...

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

Discussions similaires

  1. Bugs sur les Dates sur une base de données MySQL
    Par sheepo dans le forum MySQL
    Réponses: 8
    Dernier message: 19/05/2015, 18h21
  2. [XL-MAC 2011] Probleme application du filtre avancé sur les dates en format texte
    Par go4music dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/06/2013, 00h10
  3. [XSLT]xsl:sort qui classe mal les éléments (apostrophe)
    Par strat0 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/07/2007, 14h14
  4. MS Access et TQuery (probleme sur les dates)
    Par Djob dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 14h57
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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