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 :

XML Sort et order


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut XML Sort et order
    Bjr,
    voilà, j'ai un fichier XML qui est en reduisant et a peu pres ça:
    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
     
    <logitheque>
       <categorie tri="1">
          <logiciel>
              <nom> blabla< /nom>
              <code> 015874 </code>
           </logiciel>
           <logiciel>
               <nom> gzer< /nom>
               <code> 2445874 </code>
           </logiciel>
       </categorie>
    <categorie tri="0">
           <logiciel>
               ....
            </logiciel>
            <logiciel>
                .....
            </logiciel>
        </categorie>
    </logitheque>
    Et en fait j'aurai voulu trier selon l'attribut categorie dans mon fichier XSL.
    Le seul probleme est que le xsl:sort ne se met qu'après et jste après (sinon ça me fait une faute) le xsl:for-each !
    Pouvez vous me suggerer une solution?
    Merci d'avance !

  2. #2
    Membre averti

    Inscrit en
    Août 2005
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 220
    Points : 364
    Points
    364
    Par défaut
    Ou bien je n'ai pas compris ce que tu souhaitais ou bien la situation du xsl:sort ne pose aucun problème.

    Voici un code exemple de ce que j'ai compris que tu voulais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="./categorie">
    <xsl:sort select="./@tri"></xsl:sort>
    <xsl:value-of select="logiciel/nom"></xsl:value-of><br></br>
    </xsl:for-each>

  3. #3
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    Ce n'est pas ça je reexplique !
    J'ai una attribut dans mon XML a la dalise categorie qui se nomme tri . oui?
    Bien, alors cette attibut va me servir pour mon tri.
    Je voudrai lorsque je fais mon xsl, faire mon tri sur ma catégorie en " ascending" sur le champ nom si l'attribut tri est à 1 et inversement.
    C'est clair?

  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,

    ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <xsl:template match="categorie">
      <xsl:variable name="ordre">
        <xsl:choose>
          <xsl:when test="@tri = 1">ascending</xsl:when>
          <xsl:otherwise>descending</xsl:otherwise>
        </xsl:choose>
      </xsl:variable>
      <xsl:for-each select="logiciel">
        <xsl:sort select="nom" order="{$ordre}"/>
        ...
      </xsl:for-each>
    </xsl:template>

  5. #5
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    Merci beaucoup pour ton aide, juste une petite erreur le 1 il faut le mettre entre cote!
    MERCI

  6. #6
    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
    Citation Envoyé par stela86
    Merci beaucoup pour ton aide, juste une petite erreur le 1 il faut le mettre entre cote!
    Non, ce n'est pas une erreur mais c'est vrai que c'est plus propre. Dans ce genre de test, on utilise les quotes pour résoudre une ambiguïté. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:when test="@tri = toto">
    Comment cela va-t-il être compris par l'analyseur XPath ? Est-ce qu'on teste si @tri contient la chaîne 'toto' ou si le contenu de @tri est égal au contenu de l'élément toto fils de l'élément courant ? Si c'est le premier cas, là on met les simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:when test="@tri = 'toto'">
    Dans notre cas, comme 1 n'est pas un nom d'élément valide, l'analyseur XPath n'a pas à se poser de questions...

  7. #7
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    D'acord je te remercie j'ai regarder dans la faq pour faire un tri dynamique et j'ai trouvé du code malheureusement il ne fonctionne que sous ie! Quelqu'un pourrai m'eclairer et me dire comment faut-il faire pour créer un tri dynamique qui marche sous firefox? ? ?

  8. #8
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    Bon la faq à été changé du coup le code est ecrit pour que ça marche sous firefox ! MErci

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

Discussions similaires

  1. [10g] Requètes XML, utilisation du ORDER BY
    Par awalter1 dans le forum SQL
    Réponses: 1
    Dernier message: 21/03/2013, 13h50
  2. [MySQL] Sort sur une table - erreur stupide pour sort et order
    Par cyrella99 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/04/2009, 13h17
  3. [BCK]Load dump 12.5.3 (erreur Msg 3120, Level 16, State 1- sort order)
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 25/09/2007, 07h44
  4. [ASE-15.0.2] Load dump 12.0.3 (erreur MSG 5824 - sort order)
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 11/09/2007, 11h40
  5. [Tri] order by Oracle vs sort Unix
    Par raj dans le forum SQL
    Réponses: 1
    Dernier message: 06/07/2007, 15h55

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