problème avec xsl apply-templates
-
19-09-2019 - |
Question
Il semble que mon modèle est jamais appelé mais la boucle fonctionne correctement.
Il imprime « test » exactement le nombre de fois que le noeud « voiture » existe mais « doStuff » ne semble pas être accessible et « test2 » est jamais émis. Toutes les idées?
<fo:table-body>
<xsl:for-each select="car">
test
<xsl:apply-templates select="car" />
</xsl:for-each>
</fo:table-body>
....
<xsl:template match="car">
<fo:table-row height="0.40cm">
test2
dostuff()....
La solution
C'est parce que vous essayez d'appliquer une voiture imbriquée ...
Le for-each
change déjà le contexte, de sorte que vous devez appliquer le modèle sur le nœud actuel:
<xsl:apply-templates select="."/>
Autres conseils
Dans le for-each, « voiture » est le nœud actif, et depuis par défaut l'attribut select
sur apply-templates
les recherches les descendants axe, il essaie de sélectionner des éléments de « voiture » qui sont les enfants de l'élément de voiture actif. Essayez
<xsl:apply-templates select="."/>
au lieu.