Как работают apply-templates? - PullRequest
8 голосов
/ 18 мая 2011

Я только начал изучать XSL (T), и мне интересно, как работает apply-templates?Я не понимаю рекурсивно применяемую часть шаблонов, как написано в моей книге.

Я понимаю XPath-часть XSL (T) и так далее, но не то, что apply-templates делает и почему я пишу это несколько раз.

Ответы [ 3 ]

16 голосов
/ 18 мая 2011

Вы используете <xsl:apply-templates> для вызова <xsl:template>: s, который вы определили.

<xsl:apply-templates> вызывает соответствующий шаблон для каждого узла в наборе.

Вы можете управлять обработкойпорядок, указав атрибут select в apply-templates.

См. этот пример из w3schools :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <xsl:apply-templates/>
  </body>
  </html>
</xsl:template>

<xsl:template match="cd">
  <p>
  <xsl:apply-templates select="title"/>
  <xsl:apply-templates select="artist"/>
  </p>
</xsl:template>

<xsl:template match="title">
  Title: <span style="color:#ff0000">
  <xsl:value-of select="."/></span>
  <br />
</xsl:template>

<xsl:template match="artist">
  Artist: <span style="color:#00ff00">
  <xsl:value-of select="."/></span>
  <br />
</xsl:template>

</xsl:stylesheet>
  • Первый apply-templates вызывает шаблон cd каждый раз, когда встречается элемент с именем "cd".

  • Шаблон cd, в свою очередь, вызывает шаблоны title и artist для обработкидочерние элементы <cd>.

  • title обрабатываются до artist.Обратите внимание, что порядок элементов artist и title в исходном XML не имеет значения.

Вы можете представить apply-templates аналогичным вызову подпрограммы в процедурных языках..

2 голосов
/ 19 мая 2011

Если вы читали о шаблонах применения в книге, но не поняли этого, тогда не ясно, что несколько слов здесь помогут.Возможно, вам нужна другая книга: разные стили обучения нравятся разным людям.Или, возможно, онлайновое руководство, такое как http://vimeo.com/15234803, расскажет об идеях.

Суть механизма шаблонов заключается в том, что в нем участвуют две стороны.Инструкция xsl: apply-templates выбирает некоторые узлы для обработки, а правила шаблона (между ними) решают, какой должна быть обработка.Это дает очень слабую связь и большое разделение проблем;это скорее объектно-ориентированная отправка сообщений / методов, но гораздо более гибкая.

0 голосов
/ 18 мая 2011

Если вы понимаете правила шаблона, все готово! Даже если это не так просто, они всегда удивляют. Прочитать спецификации .

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