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 :

XSLT et regroupement d'éléments


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut XSLT et regroupement d'éléments
    Bonjour à tous

    J'ai des source xml qui contiennent des éléments répétés et je cherche à les regrouper
    Chaque fois que je rencontre une répétition à un niveau je veux la regrouper
    dans cet exemple le balise b sont répétées et je voudrais les grouper dans la balise b on vois dans certain une répétition de c et dans certain c des répétitions de d
    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
    <xml>
        <a />
        <b>
            <i/>
            <c>
                <d/>
                <d/>
                <d/>
                <f/>
            </c>
            <e/>
        </b>
        <b>
            <c>
                <h/>
                <d/>
                <d/>
                <d/>
            </c>
            <c>
                <h/>
                <d/>
                <d/>
                <f/>
            </c>
            <c>
                <d/>
                <d/>
                <d/>
                <d/>
            </c>
            <e/>
        </b>
        <b>
            <c/>
            <c/>
            <c/>
        </b>
    </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
    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>
        <a />
        <groupeB>
            <b>
                <i/>
                <groupeC>
                    <c>
                        <groupeD>
                            <d/>
                            <d/>
                            <d/>
                        </groupeD>
                        <f/>
                    </c>
                </groupeC>
                <e/>
            </b>
            <b>
                <groupeC>
                    <c>
                        <h/>
                        <groupeD>
                            <d/>
                            <d/>
                            <d/>
                        </groupeD>
                    </c>
                    <c>
                        <h/>
                        <groupeD>
                            <d/>
                            <d/>
                        </groupeD>
                        <f/>
                    </c>
                    <c>
                        <groupeD>
                            <d/>
                            <d/>
                            <d/>
                            <d/>
                        </groupeD>
                    </c>
                </groupeC>
                <e/>
            </b>
            <b>
                <groupeC>
                    <c/>
                    <c/>
                    <c/>
                </groupeC>
            </b>
        </groupeB>
    </xml>
    Je connais les groupes à créer et je sais dans quel éléments il doivent l'être.
    Mais je ne sais pas trop comment m'y prendre pour gérer les répétition imbriquées

    Je précise que je n'ai que xslt 1.0 à ma disposition.

    merci à vous.
    A+JYT

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Le problème c'est que je vois pas vraiment en quoi l'imbrication change quelque chose.

    Mon impression c'est que tu as un traitement à faire quand <xml> contient des <b>, et aussi un quand <b> contient des <c>, et aussi un quand <c> contient des <d>.
    Mais que les uns soient dans les autres, on s'en tape, non ? Ça ne ne change rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Vous pouvez placer ce template du coté d'un template d'identité.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template match="*[preceding-sibling::*[name()=name(current())] or following-sibling::*[name()=name(current())]]">
        <xsl:choose>
            <xsl:when test="not(preceding-sibling::*[name()=name(current())])">
                <xsl:element name="{concat('Groupe', '-', name())}">
                    <xsl:for-each select=".|following-sibling::*[name()=name(current())]">
                        <xsl:copy>
                            <xsl:apply-templates select="*|@*|text()" />
                        </xsl:copy>
                    </xsl:for-each>
                </xsl:element>
            </xsl:when>
            <xsl:otherwise />
        </xsl:choose>
    </xsl:template>

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Merci je vais expérimenter

    ça me donne un point de départ
    A+JYT

Discussions similaires

  1. [XSLT] Regrouper des éléments
    Par titiofparis dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/09/2010, 18h18
  2. Réponses: 2
    Dernier message: 17/03/2009, 15h01
  3. [XSLT] Regroupement d'éléments sur critère
    Par La Truffe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/03/2009, 12h33
  4. [Débutant] regroupement d'éléments dans une listBox
    Par fast&furious dans le forum Access
    Réponses: 2
    Dernier message: 15/10/2005, 15h05
  5. [xslt]Double regroupement
    Par AelMat dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/08/2005, 16h21

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