проблема с xsl apply-templates - PullRequest
       13

проблема с xsl apply-templates

3 голосов
/ 14 декабря 2009

Кажется, что мой шаблон никогда не вызывается, но цикл for работает правильно.

Он печатает «test» ровно столько раз, сколько существует узел «car», но «doStuff», кажется, не доступен, и «test2» никогда не выводится. Есть идеи?

<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()....

Ответы [ 2 ]

7 голосов
/ 14 декабря 2009

Это потому, что вы пытаетесь применить вложенную машину ...

for-each уже меняет контекст, поэтому вам нужно применить шаблон к текущему узлу:

<xsl:apply-templates select="."/>
4 голосов
/ 14 декабря 2009

Внутри for-each "car" является активным узлом, и поскольку по умолчанию атрибут select в apply-templates выполняет поиск по оси потомков, он пытается выбрать элементы "car", которые являются дочерними элементами активной машины. элемент. Попробуйте

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

вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...