Bonjour,

Je bute sur un petit problème de transformation XSLT.
Je transforme un document XML au format DocBook en un document HTML. Je cherche à sélectionner toutes les sections simples db:simplesect d'une section db:section excepté le titre de la première section simple.
Le but est de transformer ceci :
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
<section xml:id="sectionid">
    <title>Titre de la section</title>
    <simplesect>
        <title>Titre 1</title>
        <para>Mon premier paragraphe</para>
    </simplesect>
    <simplesect>
        <title>Titre 2</title>
        <para>Mon deuxième paragraphe</para>
    </simplesect>
    <simplesect>
        <title>Titre 3</title>
        <para>Mon troisième paragraphe</para>
    </simplesect>
</section>
en ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<h3>Titre de la section</h3>
 
<p>Mon premier paragraphe</p>
 
<h4>Titre 2</h4>
<p>Mon deuxième paragraphe</p>
 
<h4>Titre 3</h4>
<p>Mon troisième paragraphe</p>
J'ai essayé ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<xsl:template match="db:section/db:simplesect">
    <h4><xsl:value-of select="db:title[not(parent::db:simplesect[position()=1])]" /></h4>
    <xsl:apply-templates select="* except db:title" />
</xsl:template>
ou ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<xsl:template match="db:section/db:simplesect">
		<xsl:apply-templates select="* except parent::db:simplesect[1]/db:title" />
	</xsl:template>
Ca ne fonctionne pas.

J'ai pensé aussi à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<xsl:template match="db:section">
		<h3><xsl:value-of select="db:title"/></h3>
		<xsl:apply-templates select="* except db:simplesect[1]/db:title"/>
	</xsl:template>
Ca ne fonctionne pas non plus et j'ai même 2 fois le texte du titre de la section.


Je pense que j'ai un sérieux problème avec la formulation du prédicat.

Merci de votre aide.
Vincent