[XSLT] Source du xsl:template parent
Bonjour a tous,
je génére des fichiers xslt automatiquement à partir d'un fichier de mapping xml.
Cette génération se passe bien dans la plupart des cas sauf dans le cas particulier ou je rencontre des inversion de structure, exemple :
Code:
1 2
| Source : */books/book/author
Target : */author/books/book |
voilà ce que je parviens à générer pour l'instant :
Code:
1 2 3 4
| <xsl:template match="author">
<xsl:variable name="books" select="*/books[book/author=current()"/>
<xsl:apply-templates select="$books"/>
</xsl:template> |
ici, pas de problème ça fonctionne, si un author a écrit un livre il aura la liste de tout les livres
Code:
1 2 3 4
| <xsl:template match="books">
<xsl:variable name="book" select="*/books/book[author=current()/book/author"/>
<xsl:apply-templates select="$book"/>
</xsl:template> |
par contre là ça pèche, le problème c'est que tout les auteurs sont valides selon cette condition
Code:
1 2 3
| <xsl:template match="book">
...
</xsl:template> |
Je pourrais très facilement corriger cela à la main en supprimant le premier template "books" qui est tout à fait inutile on s'en rend compte, mais au niveau de la génération automatique ceci n'est pas détéctable.
Pour l'instant la seule solution qui me vient à l'esprit c'est de passer l'"author" en paramètre à tout les templates.... mais c'est loin d'être simple au niveau de mon code....
Si quelqu'un connaît une façon de savoir dans quel Author on se trouve à ce moment là, c'est à dire, remonter d'un niveau dans mes templates et de trouver l'élément courant, cela pourrait grandement m'aider.
Merci d'avance pour votre temps et aide.