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 :

Un Tri difficile [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Par défaut Un Tri difficile
    Bonjour,

    J'ai besoin de trier les produits en fonction de leur sous produit le moin chère et de meme couleur.
    Le produit est lui même présent dans ses sous produits.

    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
    <produit id="16">
    	<famille>
    		<pdt id="11" prix="5" couleur="Bleu"/>
    		<pdt id="12" prix="8" couleur="Bleu"/>
    		<pdt id="13" prix="7" couleur="Bleu"/>
    		<pdt id="14" prix="9" couleur="Bleu"/>
    		<pdt id="15" prix="4" couleur="Rouge"/>
    		<pdt id="16" prix="8" couleur="Rouge"/>
    		<pdt id="17" prix="6" couleur="Rouge"/>
    	<famille>
    </produit>
    <produit id="23">
    	<famille>
    		<pdt id="21" prix="6" couleur="Rose"/>
    		<pdt id="22" prix="10" couleur="Rose"/>
    		<pdt id="23" prix="8" couleur="Rose"/>
    		<pdt id="24" prix="11" couleur="Rose"/>
    		<pdt id="25" prix="2" couleur="Vert"/>
    		<pdt id="26" prix="6" couleur="Vert"/>
    		<pdt id="27" prix="4" couleur="Vert"/>
    	<famille>
    </produit>
    J'ai fait çà, mais ce la ne semble pas fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:apply-templates select="produit">					  
    	<xsl:sort select="famille/pdt[@couleur=../pdt[@id=ancestor::produit/@id]/@couleur and not(preceding-sibling::pdt/@prix < @prix) and not(following-sibling::pdt/@prix < @prix)]/@prix" order="ascending" data-type="number" />                        
    </xsl:apply-templates>

    Avez-vous une idée ?
    Merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    On peut simplifier l'expression en ne vérifiant qu'aucun sibling du n'ait un prix inférieur, au lieu de vérifier preceding-sibling et following-sibling séparément. Il suffit de chercher dans ../pdt . Un élément ne va jamais être moins cher que lui-même .

    Quant à la raison pour laquelle ça ne fonctionne pas, si j'ai bien compris tu ne t'intéresses qu'au prix des produits qui ont la même couleur que le produit de l'id indiquée. Dans ce cas la vérification de l'existence de produits moins cher doit porter sur ../pdt[@couleur = ../pdt[@id = ../../@id]/@couleur] . Pas juste sur ../pdt
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Damned, thelvin m'a encore grillé !

    Sinon, pour tourner ça autrement que lui, tout en disant la même chose : tu y étais presque, tu avais simplement oublié de ne sélectionner que les frères ayant le même attribut @couleur pour comparer les prix.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:sort select="famille/pdt[@couleur=../pdt[@id=current()/@id]/@couleur and @prix &lt;= ../pdt[@couleur=../pdt[@id=current()/@id]/@couleur]/@prix]/@prix" order="ascending" data-type="number" />

  4. #4
    Membre confirmé Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Par défaut
    Dans ce cas, le @couleur=../pdt[@id=current()/@id]/@couleur sert encore a quelques chose ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Ben oui... Hum... Tu sais ce que tu fais, ou tu as recopié ce truc d'ailleurs ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Par défaut
    Etant donné que je recherche sur les frères en spécifiant la couleur, je pensais que ce critère ci ne servait plus.

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Mais... Si je ne me trompe pas, il n'y a pas que les frères, qui doivent avoir cette couleur. Le produit de plus bas prix à repérer, doit aussi avoir cette même couleur, n'est-ce pas ?
    En fait, il n'y a juste pas moyen de factoriser les deux en une seule expression XPath 1.0
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  3. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53
  4. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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