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.