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 :

[Débutant][XSLT] Obtenir la liste de toutes les valeurs possibles alphabetiquement


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Points : 12
    Points
    12
    Par défaut [Débutant][XSLT] Obtenir la liste de toutes les valeurs possibles alphabetiquement
    Bonjour, je m'excuse mais je débute en xslt. Ma question est sans doute basique et je ne suis même pas sûr de pouvoir la formuler correctement (c'est sans doute pourquoi je ne trouve rien avec google)
    Voilà, j'ai une liste xml de musique:

    par ex:
    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
    51
    52
    53
    54
    55
     
    <?xml version="1.0"  encoding="ISO-8859-1"?>
    <?xml-stylesheet href="transformation.xsl" type="text/xsl"?>
    <plist>
    	<title>Musique</title>
    	<totaltracks>341</totaltracks>
    	<totaltime>29:30:48</totaltime>
    	<totalsize>1.9 GB</totalsize>
    	<tracks>
    		<track>
    			<trackname>New</trackname>
    			<id>1067</id>
    			<artist>Bruit Des Zig</artist>
    			<album>Maquette Avril 2000</album>
    			<genre>Jazz</genre>
    			<rating>10</rating>
    			<size>6.3 MB</size>
    			<time>6:48</time>
    			<year>2000</year>
    		</track>
    		<track>
    			<trackname>Macchabee</trackname>
    			<id>830</id>
    			<artist>Busy Bees</artist>
    			<album>Demo 4-05-97</album>
    			<genre>Rap Hip Hop</genre>
    			<rating>0</rating>
    			<size>3.9 MB</size>
    			<time>4:20</time>
    			<year>1997</year>
    		</track>
    		<track>
    			<trackname>Samba da minha terra</trackname>
    			<id>798</id>
    			<artist>Caminho</artist>
    			<album>Caminho</album>
    			<genre>Bossa Nova</genre>
    			<rating>0</rating>
    			<size>3.3 MB</size>
    			<time>3:27</time>
    			<year>1998</year>
    		</track>
    		<track>
    			<trackname>Solidao</trackname>
    			<id>806</id>
    			<artist>Caminho</artist>
    			<album>Caminho</album>
    			<genre>Bossa Nova</genre>
    			<rating>40</rating>
    			<size>8.6 MB</size>
    			<time>9:16</time>
    			<year>1998</year>
    		</track>
    	</tracks>
    </plist>
    et j'aimerais avoir un template capable de produire la liste des genres sans redondance (et par ordre alphabétique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      <xsl:template name="genres">
        <xsl:for-each select="plist/tracks/track">
          <xsl:sort select="genre" order="ascending" />
            <xsl:value-of select="genre" />
        </xsl:for-each>
      </xsl:template>
    jusqu'ici je suis juste capable d'avoir la liste des genres pour toutes les entrées par ordre alphabetique (j'ai autant de fois "jazz" qu'il y a de titre jazz, par ex)

    Merci beaucoup

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Points : 12
    Points
    12
    Par défaut J'ai un peu avancé mais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      <xsl:template name="genres">
        <xsl:for-each select="//genre[generate-id(.)=generate-id(key('id', .)[1])]"> 
              <xsl:element name="li">
          		<xsl:value-of select='.'/>
              </xsl:element>
       </xsl:for-each> 
       </xsl:template>
    ... il me manque l'ordre alphabétique


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <xsl:sort select="genre" order="ascending" />
    ne me donne rien

    Merci de votre patience si vous prenez le temps de m'éclairez

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Points : 12
    Points
    12
    Par défaut j'ai trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:sort select="." order="ascending"/>


    j'ai trouvé tout seul une fois la question bien posée aux moteurs de recherche
    c'est con un autodidacte des fois...

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Points : 12
    Points
    12
    Par défaut code complet
    "Méthode Muench"

    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:key name="id" match="genre" use="."/>
    <xsl:template match="/">
      <ul><xsl:call-template name="genres" /></ul>
    </xsl:template>
     
      <xsl:template name="genres">
        <xsl:for-each select="//genre[generate-id(.)=generate-id(key('id', .)[1])]"> 
    		<xsl:sort select="." order="ascending"/>
              <xsl:element name="li">
          		<xsl:value-of select='.'/>
              </xsl:element>
       </xsl:for-each> 
       </xsl:template>

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Points : 12
    Points
    12
    Par défaut ... et bravo pour le site

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

Discussions similaires

  1. Récupérer toutes les valeurs possibles d'une variable
    Par Elodie3483 dans le forum SAS Base
    Réponses: 5
    Dernier message: 01/07/2015, 11h29
  2. Réponses: 2
    Dernier message: 01/06/2013, 01h47
  3. Réponses: 6
    Dernier message: 13/03/2009, 21h18
  4. sélectionner toutes les valeurs possibles d'un champs
    Par _developpeur_ dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/10/2007, 18h32
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

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