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 :

Regroupement (2 fois)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut Regroupement (2 fois)
    Bonjour

    Je me heurte depuis pas mal de temps à un probleme... sans savoir si ce que je chercher à faire est vraiment faisable (je ne suis pas du tout expert).

    Mon XML ressemble à ceci:
    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
      
    <CL Change="24380">
        <Comment>
          <Category Title="compilfix"></Category>
          <Product Title="prod1"></Product>
          <Desc> missing file</Desc>
        </Comment>
      </CL>
      <CL Change="24378">
        <Comment>
          <Category Title="bugfix"></Category>
          <Product Title="prod2"></Product>
          <Desc>desc new</Desc>
        </Comment>
        <Comment>
          <Category Title="bugfix"></Category>
          <Product Title="prod1"></Product>
          <Desc>another desc</Desc>
        </Comment>
    </CL>
    ... ...
    Dans mon XSL, j'arrive bien à trier par catégorie. Voici mon code:
    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
    
    <xsl:key name="cat" match="Category" use="@Title" />
    
    <xsl:template match="Version">
        <xsl:for-each select="CL/Comment/Category[generate-id()=generate-id(key('cat',@Title))]">
          <xsl:value-of select="@Title"/>
              <xsl:for-each select="key('cat',@Title)">
                <xsl:variable name="currentCat" select="@Title"/>                         
                  <xsl:value-of select="(..)/Product/@Title"/>                
                      <xsl:if test="@Title=$currentCat">
                        CL: <xsl:value-of select="(../..)/@Change"/>
                        Desc: <xsl:value-of select="(..)/Desc"/>                    
                      </xsl:if>                  
              </xsl:for-each>
          </xsl:for-each>
    </xsl:template>
    
    Mais après avoir classé par Category, je souhaiterais effectuer un sous-classement par Product, pour avoir un truc du genre:

    Category1
    Product1
    Desc1
    Desc2
    Product2
    Desc3
    Category2
    Product3
    Desc4
    ...

    Si jamais il existe une solution, je serais comblé

    Merci d'avance
    K.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    Bon... j'ai un debut de resultat, mais le probleme est que ca ne m'affiche que le premier Product trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <xsl:for-each select="CL/Comment/Category[generate-id(.)=generate-id(key('cat',@Title))]">
          <xsl:variable name="currentCat" select="@Title"/>      
     
          <xsl:value-of select="@Title"/>
     
          <xsl:for-each select="(..)/Product[generate-id(.)=generate-id(key('prod',@Title)[preceding-sibling::Category/@Title=$currentCat])]">
            <xsl:value-of select="@Title"/><br/>
          </xsl:for-each>
     
        </xsl:for-each>
    Y'a t il une methode pour que tout soit pris en compte correctement ?

    Merci

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    J'ai trouvé !!!!!!!!!!!!!!!!!!!!!!
    Manquait '//' au debut du select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          <xsl:for-each select="//../Product[generate-id(.)=generate-id(key('prod',@Title)[preceding-sibling::Category/@Title=$currentCat])]">
            <xsl:value-of select="@Title"/><br/>
          </xsl:for-each>
    Au moins j'aurais appris un truc...

Discussions similaires

  1. Regroupement à la fois sur somme et sur champ mémo
    Par cobaye13 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2015, 17h24
  2. Formulaire regroupant plusieur fois le meme sous-formulaire?
    Par Goldenduck4000 dans le forum Access
    Réponses: 2
    Dernier message: 18/04/2006, 15h57
  3. Pb : malloc qui marche une fois sur deux .... ?
    Par guillaume_pfr dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 09h52
  4. Regrouper 3 requêtes dans une seule
    Par LadyArwen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/06/2003, 09h32
  5. regrouper deux tables
    Par Shabata dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2003, 15h02

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