Bonjour à tous,
je sollicite votre aide au sujet d'un problème qui prend trop la tête depuis quelques jours. En plus je ne sais pas quoi chercher pour le résoudre.
En fait j'ai un xml qui contient des termes d'index:
mon objectif c'est avec xsl 1.1 de générer un index. mon xsl ressemble à ça:
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 <classeur> <doc num="A"> contenu, contenu, etc. <indexterm> <tg>termX <ts>sous-termX</ts> </tg> <tg>termY</tg> </indexterm> </doc> <doc num="B"> contenu, contenu, etc. <indexterm> <tg>termX <ts>sous-termZ</ts> </tg> <tg>termY</tg> </indexterm> </doc> <doc num="C"> contenu, contenu, etc. <indexterm> <tg>termZZ <ts>sous-termZZ</ts> </tg> <tg>termYY</tg> </indexterm> </doc> <!--ici je recupere tous les termes en filtrant les doublons--> <pageIndex> <tg>termX <ts>sous-termX</ts> <ts>sous-termZ</ts> </tg> <tg>termZZ <ts>sous-termZZ</ts> </tg> <tg>termY</tg> </pageIndex> </classeur>
Au final, je dois avoir
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 <xsl:template match="indexterm"> <fo:wrapper> <xsl:attribute name="index-key"><xsl:value-of select="normalize-space(tg)"/><xsl:text>;</xsl:text><xsl:value-of select="normalize-space(ts)"/></xsl:attribute> </fo:wrapper> </xsl:template> <xsl:template match="pageIndex/tg"> <fo:block> <fo:inline> <xsl:value-of select="./text()"/> </fo:inline> <xsl:for-each select="ts"> <fo:block> <xsl:apply-templates/> <fo:leader leader-pattern="dots" leader-length.maximum="100%" keep-with-previous.within-line="always"/> <fo:index-page-citation-list merge-sequential-page-numbers="merge" merge-pages-across-index-key-references="merge" merge-ranges-across-index-key-references="merge"> <fo:index-key-reference page-number-treatment="link"> <xsl:attribute name="ref-index-key"> <xsl:value-of select="normalize-space(tg)"/><xsl:text>;</xsl:text><xsl:value-of select="normalize-space(ts)"/> </xsl:attribute> <fo:index-page-number-prefix> <fo:inline> Ici je veux récupérer la lettre du chapitre parent du inexterm appelé </fo:inline> </fo:index-page-number-prefix> </fo:index-key-reference> </fo:index-page-citation-list> </fo:inline> </fo:block> </xsl:for-each> </fo:block> </xsl:template>
terme de l'index......B.2, B.4
terme de l'index......A.3, B.8
etc.
Les numéros de pages sont récupérer très bien.
ce que je n'arrive pas à faire c'est récupérer la lettre du chapitre père de mon terme d'index. Pourquoi? parce que simplement quand je vais générer mon xml en fin de mon classeur, je supprime les doublons en même temps. Du coup chaque terme apparait une fois dans la partie "PageIndex" mais apparaît plusieurs fois dans le document.
Si ça vous dit, je vous remercie beaucoup par avance de votre aide.
Merci beaucoup par avance
Partager