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] Tri ascending OK, Tri descending KO


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Par défaut [XSLT] Tri ascending OK, Tri descending KO
    Bonjour,

    Je suis entrain de m'arracher les cheveux.
    J'applique une transformation XSLT à un fichier XML par composant Java. Sur mes entêtes de colonne, j'ai un bouton qui me permet de trier mes données. Le tri ascending fonctionne sur toutes les colonnes mais pas le tri descending...
    Pourtant j'ai posé des alertes qui m'indiquent bien à chaque chargement de la page le bon champ trié et le bon sens de ce tri.
    Ci-dessous une partie du code, pour voir si quelqu'un peut me donner une piste... Mais j'ai bien peur que ce ne soit pas très lisible...

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:output method="html" encoding="ISO-8859-1" indent="yes"/>
     
      <!-- Parametres d entrees -->
      <xsl:param name="champTri"/>
      <xsl:param name="sensTri"/>
      ...
      <!-- Fin Parametres d entrees -->
     
      <xsl:template match="root">
      <html>
        <head>
      ...
     
      <xsl:variable name="newSensTri">
        <xsl:if test="$sensTri=''">ascending</xsl:if>
        <xsl:if test="$sensTri='ascending'">descending</xsl:if>
        <xsl:if test="$sensTri='descending'">ascending</xsl:if>
      </xsl:variable>
     
      <!-- Champs caches -->
      <input type="hidden" name="ChampTri" value="{$champTri}"/>
      <input type="hidden" name="SensTri" value="{$sensTri}"/>
      <input type="hidden" name="FilterValue" value="{$filterValue}"/>
      <input type="hidden" name="FileName" value="{$fileName}"/>
      ...
      <tr>
      <table cellspacing="0" cellpading="0" class="tabEntCol">
      <tr>
        <td width="100%" nowrap="nowrap">Libellé long</td>
        <td>
         <script>btnTriJS("btnTri0",0,2,0,"tri('Libelle-long','<xsl:value-of select="$newSensTri"/>')");</script>
        </td>
       </tr>
    </table>
     
        <!-- Pour Chaque ligne -->
        <xsl:for-each select="*[child::*[name()=$filterKey and contains(text(),$filterValue)] and position() &gt; $enregDeb and position() &lt; $enregDeb+$nbEnregPage+1]">
          <!-- tri -->
          <xsl:sort select="*[name()=$champTri]" order="{$sensTri}"/>
     
        ...
        </xsl:for-each>
    ...
    </xsl:template>
     
    </xsl:stylesheet>
    Peut être un XML pour que ce soit plus clair.
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <Structure>
        <ID>|D_STRUCT060000000019|1|</ID>
        <Libelle-long lien="1">salvetat</Libelle-long>
        <Code-categorie visible="0">EHPADC</Code-categorie>
        <Libelle-Categorie>EHPAD commercial</Libelle-Categorie>
      </Structure>
      <Structure>
        <ID>|D_STRUCT060000000017|1|</ID>
        <Libelle-long lien="1">Bernard Menez</Libelle-long>
        <Code-categorie visible="0">ACCOMPS</Code-categorie>
        <Libelle-Categorie>Accompagnement social</Libelle-Categorie>
      </Structure>
      <Structure>
        <ID>|D_STRUCT060000000016|1|</ID>
        <Libelle-long lien="1">SAVS test bilan</Libelle-long>
        <Code-categorie visible="0">ACCOMPS</Code-categorie>
        <Libelle-Categorie>Accompagnement social</Libelle-Categorie>
      </Structure>
    </root>
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="newSensTri">
        <xsl:if test="$sensTri=''">ascending</xsl:if>
        <xsl:if test="$sensTri='ascending'">descending</xsl:if>
        <xsl:if test="$sensTri='descending'">ascending</xsl:if>
      </xsl:variable>
    c'est deja un peu zarbi ça , pourquoi l'inversion ?

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Par défaut
    Citation Envoyé par Erwy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="newSensTri">
        <xsl:if test="$sensTri=''">ascending</xsl:if>
        <xsl:if test="$sensTri='ascending'">descending</xsl:if>
        <xsl:if test="$sensTri='descending'">ascending</xsl:if>
      </xsl:variable>
    c'est deja un peu zarbi ça , pourquoi l'inversion ?
    C'est pour fournir à la fonction JavaScript le nouveau sens du tri. Si je suis trié en ascending, le prochain click devra être du descending et vice versa.
    Comme dans cet exemple fourni.

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    ta variable newsenstri tu l'utilise ?

    et pourquoi ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" name="ChampTri" value="{$champTri}"/>
      <input type="hidden" name="SensTri" value="{$sensTri}"/>
    Je dis ça parce que ce code me fait penser à des paramètres qui serait mal passé/sauvegarder

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Par défaut
    Citation Envoyé par Erwy
    ta variable newsenstri tu l'utilise ?
    Oui bien sûr. Elle est utilisée dans la fonction Javascript pour fournir le nouveau sens du tri.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>btnTriJS("btnTri0",0,2,0,"tri('Libelle-long','<xsl:value-of select="$newSensTri"/>')");</script>
    Citation Envoyé par Erwy
    et pourquoi ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" name="ChampTri" value="{$champTri}"/>
      <input type="hidden" name="SensTri" value="{$sensTri}"/>
    Cela me sert à stocker ces variables là et à les récupèrer si un autre traitement est effectué sur cette page (Naviguer de page en page)

    Citation Envoyé par Erwy
    Je dis ça parce que ce code me fait penser à des paramètres qui serait mal passé/sauvegarder
    C'est possible, mais le truc bizarre c'est que le tri ascending marche sur toutes les colonnes et que le tri descending lui ne marche pas.

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    pourrais tu fournir le html, le xslt et un petit xml , enfin l'ensemble de ce qu'il faut pour faire tourner ton code , en piece jointe.
    Il va falloir faire qq test pour savoir si ca viens du javascript ou du xslt, en tout cas cela necessite trop de boulot pour que j'ai le temps de le resoudre d'apres ce que tu donnes sur le forum (si le pb y est )

Discussions similaires

  1. [XL-2007] Tri ascendant et remplacement des premières valeurs
    Par cirestore dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/10/2013, 10h27
  2. tri ascendant de 4 colonnes
    Par biddal dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/08/2011, 15h47
  3. [XSLT] Gros souci de tri sur structure arborescente
    Par stujava dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/03/2010, 17h49
  4. Tri ascendant et decendant d'un dbgrid
    Par nou366 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 07/05/2006, 09h18
  5. INSERTION / tri ascendant ou descendant, ou mettre a la fin
    Par oravelon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/08/2005, 11h15

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