2009-12-14 7 views
3

Il semble que mon modèle n'est jamais appelé mais que la boucle for fonctionne correctement.problème avec xsl apply-templates

Il imprime "test" exactement le nombre de fois que le nœud "car" existe mais "doStuff" ne semble pas être accédé et "test2" n'est jamais sorti. Des 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().... 

Répondre

7

C'est parce que vous essayez d'appliquer une voiture imbriquée ...

Le for-each déjà modifie le contexte, de sorte que vous devez appliquer la modèle sur le nœud actuel:

<xsl:apply-templates select="."/> 
4

Dans le pour-chaque, "voiture" est le nœud actif, un d puisque, par défaut, l'attribut select sur apply-templates recherche l'axe des descendants, il essaie de sélectionner les éléments "car" qui sont des enfants de l'élément voiture actif. Essayez

<xsl:apply-templates select="."/> 

à la place.