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 :

[XSL] xsl:sort avec parametre et condition


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut [Résolu][XSL] xsl:sort avec parametre et condition
    Bon alors j'ai un sort que j'aimerais parametriser :

    Alors voila mon 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
     
    <library>
       <music>
          <item type="CD" ASIN="B00006IR69" status="available">
             <title>40 Licks</title>
              <artist>Rolling Stones</artist>
             .......
          </item>
          <item type="Vinyl" ASIN="B000000VJM" status="borrowed">
                  .....
          </item>
       </music>
    ......
    </library>
    Rien de plus normal !!!!

    et en fait je veux pouvoir choisir de faire ce sort selon le nom des artistes, les titres des disques, le type du support (CD, MD, K7, Vynil), et son status !!!

    Alors dans mon XSL je recoit le parametre $sortMusic qui peux prendre comme valeur : (artist|title|type|status)

    et pour l'instant la methode que j'ai me permet seulement de faire ce trie selon les valeurs a l'interieur des elements mais pas celon les attributs

    XSL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    .....
    <!-- Parametros dados y recuperados durante el Parsing -->            
    <xsl:param name="sortMusic"/>
     
    .....
     
    <xsl:for-each select="library/music/item">
    	<xsl:sort  order="asscending"  select="*[name()=$sortMusic]"/>
     
    .....
    Ce qui est normal vu la construction de ma methode, mais je n'ai pas reussis autrement


    Merci de m'aider
    PS: Ca fait leche cul mais ce site et ce forum dechire

  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,

    la première solution qui me vient à l'esprit est de faire un test sur la variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:choose>
      <xsl:when test="$sortMusic = 'type' or $sortMusic = 'status'">
        <xsl:for-each select="library/music/item"> 
           <xsl:sort  order="ascending"  select="@*[name()=$sortMusic]"/> 
            ...
        </xsl:for-each>
      </xsl:when>
      <xsl:otherwise>
        <xsl:for-each select="library/music/item"> 
           <xsl:sort  order="ascending"  select="*[name()=$sortMusic]"/> 
             ...
        </xsl:for-each>
      </xsl:otherwise>
    </xsl:choose>
    Le code contenu dans les deux for-each étant (sans doute) le même, il serait intéressant de le mettre dans une fonction, afin d'éviter de dupliquer le code.

    PS: Ca fait leche cul mais ce site et ce forum dechire
    Non non, pas du tout, et ça fait plaisir.
    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
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Ouais c'est cool ca marche mais je trouve pas ca tres class !!! C'est quand meme pas bien pratique je trouve ce truk de Sort ... (Enfin bon je vais pas refaire le XSLT )

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

Discussions similaires

  1. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  2. [XSL~FO] passage de parametre avec XSL/FO
    Par nosfer_13 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/07/2006, 10h23
  3. [XSL] Arbres intermédiaires avec xsl:sort ?
    Par Blustuff dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/07/2005, 10h09
  4. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19
  5. generer xsl depuis xml avec balises inconues ?
    Par cedre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 24/06/2003, 09h00

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