[XSLT] probleme de récursivité
bonjour,
Alain Couthures m'a mis sur la bonne voie il y a 15 jours pour publier un dictionnaire de citations. Je ne parviens cependant pas à régler quelques problèmes de récursivité.
1. Je ne sais pas comment écrire un template qui s'applique à chacune des formes récupérées dans le tableau php $tab : par exemple pour le verbe donnez je dois appliquer un template à ces trois formes :
Array ([forme0]=>donnes [forme1]=>donneront [forme3]=>donnerais)
Actuellement je fonctionne ainsi :
Code:
1 2 3 4 5
| <xsl:param name="forme0" />
<xsl:param name="forme1" />
<xsl:param name="forme2" />
<xsl:for-each select="//p[contains(., $forme0 )] ">....</xsl:for-each>
<xsl:for-each select="//p[contains(., $forme1 )] ">....</xsl:for-each> |
Merci de m'aider à trouver la formule qui puisse alléger le script des redites.
2. J'ai un second probleme. L'arborescence de mon document xml suit :
Code:
1 2 3 4 5 6
| <TeiCorpus.2>
<auteur>
<TEI.2>
<partie><p>blablabla donnez blablabla donnez bla donnai bla</p></partie>
<partie><p>blablabla donnons blablabla donnons blablabla donne</p></partie>
</TEI.2></auteur<TeiCorpus.2> |
Mon probleme c'est qu'avec le code actuel je ne récupère qu'une seule citation par partie pour une même forme. Comment rendre la fonction récursive ? J'y ai travaillé avec les ressources des forums etc sans y parvenir;
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<xsl:for-each select="//p[contains(., $forme0 )] ">
<tr><td>
<xsl:value-of select="ancestor::auteur/nom"/>
</td><td><xsl:text>...</xsl:text>
<xsl:variable name="sbefore" select="substring-before(., $forme0)"/>
<xsl:choose>
<xsl:when test="string-length($sbefore) < 50">
<xsl:value-of select="$sbefore"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($sbefore, string-length($sbefore)-49, 50)"/>
</xsl:otherwise>
</xsl:choose>
</td><td>
<span style="color:blue"><xsl:value-of select='$forme0' /></span>
</td><td>
<xsl:value-of select="substring(substring-after(., $forme0), 1, 50)"/>
</td></tr>
</xsl:for-each> |
je vous remercie d'avance pour votre aide.