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 :

Utilisation de xsl:key pour générer un index


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 25
    Points
    25
    Par défaut Utilisation de xsl:key pour générer un index
    Bonjour,

    Je souhaite utiliser xsl:key pour ensuite générer un index.

    Le fichier xml source contient des éléments de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <controlaccess>
       <subject>terme</subject>
    </controlaccess>
    Un premier template est appliqué sur ces éléments pour qu'ils conviennent au schéma XML de sortie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="subject[not(@source)]">
            <index indexName="Mots-matière">
                <term>
                    <xsl:apply-templates/>
                </term>
            </index>
        </xsl:template>
    Le résultat donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <index indexName="Mots-matière">
                                     <term>terme</term>
                                  </index>
    Cela me convient, sauf que j'aimerais qu'il y ait aussi une key me permettant ensuite de générer l'index.

    J'ai utilisé ceci comme élément fils de <xsl:stylesheet>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:key name="Mots-matière" match="//index[@indexName='Mots-matière']" use="term"/>
    Si je veux générer un index à partir de tous les <term> contenus dans les éléments <index indexName="Mots-matière", comment dois-je m'y prendre?

    J'ai fait un essai, qui ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:for-each select="key('personnes',term)">
                            <xsl:value-of select="term"/>
                            <xsl:sort select="term" order="ascending"/>
                        </xsl:for-each>
    Comment dois-je m'y prendre?

    J.

  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,

    Tu ne peux pas interroger le XML que tu produis. Tu ne peux interroger que le fichier XML source.

    Pour récupérer tous les termes que tu as mis là-dedans, il faut récupérer tous les termes qui allaient se retrouver là-dedans à cause d'un template.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Merci thelvin,

    Cela donnerait donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <xsl:key name="mots-matière" match="//controlaccess" use="subject"/>
    Ensuite, je demande tous les éléments <subject> du document source pour les lister par ordre alphabétique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="key('mots-matière',subject)">
                            <xsl:value-of select="subject"/>
                            <xsl:sort select="subject" order="ascending"/>
                        </xsl:for-each>
    Mais cela ne fonctionne pas, j'ai vraiment du mal à saisir!

  4. #4
    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
    Euh....

    "Tous les éléments subject du code source" c'est //subject . Ce n'est pas key('mots-matière',subject) .
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Merci, en effet c'est mieux comme cela...

    J'ai considéré qu'il fallait faire une liste d'entrées d'index, d'où l'utilisation de la fonction key.

    Car ce que je ne comprends pas, c'est comment , au final, il va être possible de générer un index en indiquant chaque occurrence d'un même terme.

    Merci encore, je vais avancer, essayer de comprendre, et on verra ensuite.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/02/2008, 21h55
  2. xml et xsl dynamique pour générer un rapport
    Par pcouas dans le forum Jasper
    Réponses: 3
    Dernier message: 17/02/2008, 10h25
  3. Utilisation de tables pivots pour générer des graphes
    Par acraenin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/10/2007, 11h19
  4. [XSLT] Utilisation de xsl:key
    Par blupin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/09/2007, 10h45

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