J'essaie de regrouper des éléments en utilisant xsl:for-each dans XSLT 2.0.
Voici une illustration de ma contribution :
<root>
<chapter>
<heading> heading text </heading>
<title> title </title>
<p> 1111 </p>
<p> 2222 </p>
<center> text </center>
<p> 3333 </p>
<title> another title </title>
<p> 4444 </p>
<center> text </center>
<p> 5555 </p>
</chapter>
<chapter>
<heading> heading text </heading>
<title> another title </title>
<p> 6666 </p>
<p> 7777 </p>
<title> another title </title>
<p> 8888 </p>
<p> 9999 </p>
</chapter>
<root>
J'essaie de regrouper ce document en faisant correspondre sur chacun d'eux <title>
et en regroupant tous les éléments suivants jusqu'à l'élément suivant. <title>
en un élément <section>
. Voici ce à quoi je veux que ma sortie ressemble :
<root>
<chapter>
<heading> Heading text </heading>
<section>
<title> title </title>
<p> 1111 </p>
<p> 2222 </p>
<center> text </center>
<p> 3333 </p>
</section>
<section>
<title> title </title>
<p> 4444 </p>
<center> text </center>
<p> 5555 </p>
</section>
<section>
<title> title </title>
<p> 6666 </p>
<p> 7777 </p>
<center> text </center>
<p> 8888 </p>
<p> 9999 </p>
</section>
<chapter>
<root>
Mon modèle actuel qui ne fonctionne pas :
<xsl:template match="chapter">
<chapter>
<xsl:for-each-group select="*" group-starting-with="title">
<section>
<xsl:copy-of select="current-group()" />
</section>
</xsl:for-each-group>
</chapter>
</xsl:template>
La feuille de style ci-dessus regroupe les sections comme je le souhaite, mais elle regroupe également chaque section de la liste. <heading>
dans son propre élément <section>
pour une raison quelconque. Des suggestions ?
Merci d'avance.