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 :

Insertion de element après un trie.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Insertion de element après un trie.
    Bonjour,

    Je suis parvenu à faire un trie sur sur quatre niveaux voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:apply-templates select="tarte">
                            <xsl:sort select="substring(boit/@code, 10)"  data-type="number"/> <!-- 10 groups -->
                            <xsl:sort select="substring(boit/boit/@code, 10)"  data-type="number"/>
                            <xsl:sort select="substring(boit/boit/boit/@code, 10)"  data-type="number"/>
                            <xsl:sort select="substring(boit/boit/boit/boit/@code, 10)"  data-type="number"/>
                            <xsl:sort select="date" order="descending"/>
                    </xsl:apply-templates>
    mais quand je suis dans mon templates "tarte", je ne parviens pas à insert le titre des boites qui est mis en attribut "@value" à chaque changement de ces titres.

    Au départ, j'étais parti sur un regroupement, je panse avoir le même résulta avec le trie.

    Merci à vous

    Philippe

  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,

    Citation Envoyé par liphou Voir le message
    Au départ, j'étais parti sur un regroupement, je panse avoir le même résulta avec le trie.
    Hélas non... Le tri ne te donne aucune structure sur laquelle agir lors d'un changement de valeur d'un des critères de tri.

    Regroupement, donc.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Va pour le regroupement
    Merci c'est beaucoup plus claire, regroupements sur quatre niveaux numérique pour terminé sur un trie sur une date.

    Je vais commencé par comment crée des Key avec de valeur numérique.

    Merci

  4. #4
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Regroupement
    je dois regroupe sur attribut numérique possition="002", je dois le faire par ordre croissant, l'exemple est court mais je panse que l'idée est là et que je pourrai le faire sure quatre niveaux


    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
     
    <tarte>
    <fruit>
    <info>pomme</info>
    <plus possition="002"/>
    </fruit>
    <fruit>
    <info>kiwi</info>
    <plus possition="001"/>
    </fruit>
    <fruit>
    <info>orange</info>
    <plus possition="004"/>
    </fruit>
    <fruit>
    <info>poirre</info>
    <plus possition="003"/>
    </fruit>
    </tarte>
    merci pour votre aide.

    Philippe

  5. #5
    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
    Regrouper sur 4 niveau est fastidieux parce qu'il faut faire un regroupement pour chaque niveau, et chaque sous-niveau doit baser sa clé sur les clés du niveau au-dessus et sur son propre niveau. En concaténant par exemple pour faire genre 001|001|001 au niveau 3.

    Mais oui, ça se fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut regroupement 4 niveau
    Pour les niveaux suivant, les attribut son :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <plus possition="002">
    <plus possition="002001">
    <plus possition="002001003">
    <plus possition="002001003001"/>
    </plus>
    </plus>
    </plus>
    donc je suis bien sans devoir les concaténer,

    mais je dois les trie 001 002 003, mais je ne suis pas assez expérimenté pour faire cela!

    "Mais oui, ça se fait. ", je suis preneur un aide, d'un début sur les deux première niveau !!

    Merci beaucoup

  7. #7
    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
    Montre déjà le code qui les groupe, et on verra ce qu'on peut ajouter pour les trier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Regroupement 4 niveau
    Mon regroupement était basé sur des nom Fix, car sur le premier niveau il y 5 groups et le 1 groups à contient trois groupe, donc facile de regroupe mais les groups de niveaux 3 et 4, c'est 4 voir 7, j'imagine bien qu'il y a une autre manière de faire que de rentré tous les termes.

    Donc je cherche à me basé sur une clé qui débute à 001 et que j'incrémente +1 pour faire 002, etc ...

    d'obliger le for-each commencé par 001.


    Philippe

  9. #9
    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
    On a déjà parlé de comment faire un regroupement en XSLT. Que tu aimes cette méthode ou pas, il faut que tu l'utilises, et pas que tu essaies autre chose. On s'en sortira pas si tu essaies de tout réinventer.
    Utilise la méthode habituelle. Et montre le code que ça donne. Il faut vraiment que tu travailles avec du code, pas avec des mots.

    (Enfin tu pourras toujours essayer autre chose par curiosité une fois que tu arriveras à t'en sortir tout seul sans problème. Pour l'instant tu demandes de l'aide, alors fais ce que les tutoriels disent de faire.)

    Citation Envoyé par liphou Voir le message
    Donc je cherche à me basé sur une clé qui débute à 001 et que j'incrémente +1 pour faire 002, etc ...
    Non. Fais le regroupement comme on fait normalement un regroupement.

    Citation Envoyé par liphou Voir le message
    d'obliger le for-each commencé par 001.
    il suffit de mettre un sort en dessous pour ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Rassemblement
    Vous avez tout-à-fait raison, j'ai toujours tendance à brûlé les étapes de l'apprentissage.

    Je vais me remette sur l'exemple donner.

    Bonne soirée et à demain

    Bien à vous

    Philippe

  11. #11
    Membre à l'essai
    Homme Profil pro
    infographiste
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Points : 23
    Points
    23
    Par défaut regroupement 4 niveaux
    Bonjour à tous
    Bonjour Thelvin,

    Après plusieurs test du code donner en exemple, et de recherche d'exemple plus parlent voici ma retranscription de code, je travail actuellement sur l’intégration des titres uniquement à chaque changement de groupes et là, je bloc encore ... à suivre

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [
            <!ENTITY folder "file://links/">
        ]>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"
        xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/"
        version="1.0">
     
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
         <!--   <xsl:value-of select="substring(@code, 10)"/>-->
     
        <!-- Creation de cles pour le rasemblement -->
        <xsl:key name="groups1" match="product" use="category/@code"/>
        <xsl:key name="groups2" match="product" use="category/category/@code"/>
        <xsl:key name="groups3" match="product" use="category/category/category/@code"/>
        <xsl:key name="groups4" match="product" use="category/category/category/category/@code"/>
     
        <xsl:template match="Products">
            <!-- Balise de depart  -->
            <Products>
                 <xsl:apply-templates select="product[generate-id() = generate-id(key('groups1', category/@code)[1])]" mode="niv1">
                   <xsl:sort select="category/@code"/>  
                 </xsl:apply-templates>
            </Products>
        </xsl:template>        
     
        <!-- rasemblement de premier Niveau -->
         <xsl:template match="product" mode="niv1">
            <!-- <testNiv1><xsl:value-of select="category/@code"/></testNiv1>-->
           <xsl:choose>
               <!-- Test si niveau suivant Niveau -->
               <xsl:when test="category/category">
                 <xsl:apply-templates select="key('groups1', category/@code)[generate-id() = generate-id(key('groups2', category/category/@code)[1])]" mode="niv2">
                    <xsl:with-param name="titre1"><xsl:value-of select="category/@text"/></xsl:with-param>
                     <xsl:sort select="category/category/@code"/>  
                 </xsl:apply-templates>
               </xsl:when>
               <xsl:otherwise>
                   <xsl:apply-templates select="key('groups1', category/@code)" mode="leProduct">
                       <xsl:with-param name="titre1"><xsl:value-of select="category/@text"/></xsl:with-param>
                        <xsl:sort select="publication_date" order="descending"/>
                   </xsl:apply-templates>
               </xsl:otherwise>
           </xsl:choose>
         </xsl:template> 
     
        <!-- rasemblement de premier Niveau -->
        <xsl:template match="product" mode="niv2">
            <!-- passage de paramettre -->
            <xsl:param name="titre1"/>
            <!--<testNiv2><xsl:value-of select="category/category/@code"/></testNiv2>-->
             <xsl:choose>
               <xsl:when test="category/category/category">
                 <xsl:apply-templates select="key('groups2', category/category/@code)[generate-id() = generate-id(key('groups3', category/category/category/@code)[1])]" mode="niv3">
                                <xsl:with-param name="titre1"><xsl:value-of select="$titre1"/></xsl:with-param>
                                <xsl:with-param name="titre2"><xsl:value-of select="category/category/@text"/></xsl:with-param>
                                <xsl:sort select="category/category/category/@code"/> 
                        </xsl:apply-templates>
               </xsl:when>
               <xsl:otherwise>
                   <xsl:apply-templates select="key('groups2', category/category/@code)" mode="leProduct">
                       <xsl:with-param name="titre1"><xsl:value-of select="$titre1"/></xsl:with-param>
                       <xsl:with-param name="titre2"><xsl:value-of select="category/category/@text"/></xsl:with-param>
                       <xsl:sort select="publication_date" order="descending"/>
                   </xsl:apply-templates>
               </xsl:otherwise>
           </xsl:choose>
         </xsl:template> 
     
        <xsl:template match="product" mode="niv3">
            <xsl:param name="titre1"/>
            <xsl:param name="titre2"/>
            <!--<testNiv3><xsl:value-of select="category/category/category/@code"/></testNiv3>-->
              <xsl:choose>
               <xsl:when test="category/category/category/category">
                        <xsl:apply-templates select="key('groups3', category/category/category/@code)[generate-id() = generate-id(key('groups4', category/category/category/category/@code)[1])]" mode="niv4">
                           <xsl:with-param name="titre1"><xsl:value-of select="$titre1"/></xsl:with-param>
                           <xsl:with-param name="titre2"><xsl:value-of select="$titre2"/></xsl:with-param>
                           <xsl:with-param name="titre3"><xsl:value-of select="category/category/category/@text"/></xsl:with-param>
                           <xsl:sort select="publication_date" order="descending"/>
                       </xsl:apply-templates>
               </xsl:when>
               <xsl:otherwise>
                   <xsl:apply-templates select="key('groups3', category/category/category/@code)" mode="leProduct">
                       <xsl:with-param name="titre1"><xsl:value-of select="$titre1"/></xsl:with-param>
                       <xsl:with-param name="titre2"><xsl:value-of select="$titre2"/></xsl:with-param>
                       <xsl:with-param name="titre3"><xsl:value-of select="category/category/category/@text"/></xsl:with-param>
                       <xsl:sort select="publication_date" order="descending"/>
                   </xsl:apply-templates>
               </xsl:otherwise>
           </xsl:choose>
        </xsl:template>
     
     
         <xsl:template match="product" mode="niv4">
             <xsl:param name="titre1"/>
             <xsl:param name="titre2"/>
             <xsl:param name="titre3"/>
             <!--<testNiv4><xsl:value-of select="category/category/category/category/@code"/></testNiv4>-->
     
             <xsl:apply-templates select="key('groups4', category/category/category/category/@code)" mode="leProduct">
                   <xsl:with-param name="titre1"><xsl:value-of select="$titre1"/></xsl:with-param>
                   <xsl:with-param name="titre2"><xsl:value-of select="$titre2"/></xsl:with-param>
                   <xsl:with-param name="titre3"><xsl:value-of select="$titre3"/></xsl:with-param>
                    <xsl:with-param name="titre4"><xsl:value-of select="category/category/category/category/@text"/></xsl:with-param>
                  <xsl:sort select="publication_date" order="descending"/>
              </xsl:apply-templates>
        </xsl:template> 
     
     
     
        <xsl:template match="product" mode="leProduct"> <!-- OK pour le ProducFinal -->
             <xsl:param name="titre1"/>
             <xsl:param name="titre2"/>
             <xsl:param name="titre3"/>
             <xsl:param name="titre4"/>
            <product>
                  <titre><xsl:if test="category/category/@var_part = '001'"><xsl:value-of select="$titre1"/></xsl:if></titre>
                    <soustitre><xsl:if test="category/category/category/@var_part = '001'"><xsl:value-of select="$titre2"/></xsl:if></soustitre>
                    <soustitre2><xsl:if test="position() = 1"><xsl:value-of select="$titre3"/></xsl:if></soustitre2>
                            <xsl:if test="position() = 1"><xsl:call-template name="serial">
                                <xsl:with-param name="leTitre">
                                    <xsl:value-of select="$titre3"/>
                                </xsl:with-param>
                            </xsl:call-template></xsl:if>
                    <soustitre3><xsl:value-of select="$titre4"/></soustitre3>

    … bla bla …
    </xsl:template>
    </xsl:stylesheet>

    Bien à vous

    Philippe

Discussions similaires

  1. [AC-2003] Pb INSERT INTO Element non trouvé dans cette collection
    Par rch05 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/10/2010, 19h48
  2. Réponses: 1
    Dernier message: 23/09/2010, 14h01
  3. Insertion Page web apres clique sur lien
    Par Nerull dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/02/2009, 17h18
  4. probleme d'insertion d'element flash
    Par josémaria dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 18/01/2007, 07h52
  5. Réponses: 3
    Dernier message: 29/06/2006, 16h54

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