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()....
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top