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 :

2 regroupements avec doublons


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut 2 regroupements avec doublons
    Bonjour,

    Je souhaite effectuer un regroupement dans un regroupement mais avec des info qui peuvent se répéter dans le 2ème regroupement

    Exemple:
    Mon xml en entré est le suivant
    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
     
    <row>
       <site>A</site>
       <section>1<section>
       <effectif>X</effectif>
    </row>
     
    <row>
       <site>A</site>
       <section>1<section>
       <effectif>Y</effectif>
    </row>
     
    <row>
       <site>A</site>
       <section>2<section>
       <effectif>X</effectif>
    </row>
     
    <row>
       <site>A</site>
       <section>2<section>
       <effectif>Z</effectif>
    </row>
     
    <row>
       <site>B</site>
       <section>1<section>
       <effectif>X</effectif>
    </row>
     
    <row>
       <site>B</site>
       <section>3<section>
       <effectif>Y</effectif>
    </row>
     
    <row>
       <site>B</site>
       <section>3<section>
       <effectif>T</effectif>
    </row>
    Le resultat souhaité est le suivant:
    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
     
    <site>
       <name>A</name>
       <section>1</section>
       <effectifs>
          <effectif>X</effectif>
          <effectif>Y</effectif>
       </effectifs>
       <section>2</section>
       <effectifs>
          <effectif>X</effectif>
          <effectif>Z</effectif>
       </effectifs>
    </site>
    <site>
       <name>B</name>
       <section>1</section>
       <effectifs>
          <effectif>X</effectif>
       </effectifs>
       <section>3</section>
       <effectifs>
          <effectif>Y</effectif>
          <effectif>T</effectif>
       </effectifs>
    </site>
    avec une transformation XSLT utilisant meunch à 2 reprises, j'obtiens
    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
     
    <site>
       <name>A</name>
       <section>1</section>
       <effectifs>
          <effectif>X</effectif>
          <effectif>Y</effectif>
       </effectifs>
       <section>2</section>
       <effectifs>
          <effectif>X</effectif>
          <effectif>Z</effectif>
       </effectifs>
    </site>
    <site>
       <name>B</name>
       <section>3</section>
       <effectifs>
          <effectif>X</effectif>
          <effectif>T</effectif>
       </effectifs>
    </site>
    La section '1' qui figure dans le site A et B avant la transformation ne figure plus dans le site B après la transformation !!

    Avez vous une idée pour faire ce genre de transformation

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Muench simple, tel que. Pas de reprise.

    Peux-tu nous décrire ce qui te gêne dans cette approche, ce que tu n'arrives pas à adapter des exemples vers ton cas ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    pardon je me suis trompé dans mon exemple (je l'ai corrigé), en faite j'ai 2 niveaux, je souhaite regrouper les sections du même site, puis les effectifs de la même section, quand je fait ma transformation en déroulant muench 2 fois, la section qui figure dans le 2ème site n'apparait que dans le premier !!

    Avez vous une idée,
    Merci

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Bon, là il faut vraiment faire deux niveaux de Muench.

    De ce que j'en ai vu, ce n'est pas si compliqué :

    - Une clé pour classer les row par site
    - Une clé pour classer les row par couple (site, section). Je propose use="concat(site, '/', section)"

    Ensuite,
    - Pour chaque site unique :
    -- <site>
    -- Pour chaque section unique dans ce site, c'est-à-dire chaque row de couple ($site, section) unique:
    --- <section>
    --- Pour chaque effectif correspondant à ce site et cette section
    ---- <effectif/>
    --- </section>
    -- </site>

    Ce qui se code à peu près :

    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
      <xs:key name='sites' match='//row' use='site'/>
      <xs:key name='sections' match='//row' use="concat(site, '/', section)"/>
    [...]
      <xs:for-each select="//row[generate-id(key('sites', site)) = generate-id(.)]">
        <site>
          <xs:variable name="site" select="site"/>
          <xs:for-each select="//row[generate-id(key('sections', concat($site, '/', section))) = generate-id(.)]">
            <section><xs:value-of select='section'/></section>
            <xs:variable name="section" select="section"/>
            <xs:for-each select="//row[site = $site and section = $section]">
              <effectif><xs:value-of select='effectif'/></effectif>
            </xs:for-each>
          </xs:for-each>
        </site>
      </xs:for-each>
    (* À noter que concat(site, '/', section) marche beaucoup moins bien si le / peut figurer dans un nom de section ou de site. Si on ne peut pas trouver de séparateur, il faut faire du Muench sans clé.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    ça fonctionne
    merci bcp

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

Discussions similaires

  1. Requette avec doublons
    Par aityahia dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/12/2006, 11h35
  2. Regroupement avec bornes
    Par dehorter olivier dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/11/2006, 18h31
  3. Clef primaire access, Indexé avec doublon
    Par Asurmena dans le forum Access
    Réponses: 1
    Dernier message: 05/06/2006, 11h04
  4. insertion avec doublon
    Par epeichette dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/05/2006, 15h49
  5. ADO + Access 2000 + index avec doublon
    Par jnc dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/10/2005, 16h49

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