Книга: XSLT

Элемент

Элемент <xsl:apply-imports>

Если вы импортируете таблицу стилей с шаблоном, например, для элемента <PLANET>, и затем определите свой собственный элемент <PLANET>, импортируемая версия будет перекрыта. Как можно получить доступ к перекрытой версии? Этому служит элемент <xsl:apply-imports>.

В XSLT 1.0 у этого элемента нет атрибутов и нет содержимого. В рабочем проекте XSLT 1.1 элемент <xsl:apply-imports> может обрабатывать параметры, поэтому он может содержать ноль или более элементов <xsl:with-param> (подробнее о параметрах см. главу 9).

В качестве примера я модифицирую только что рассмотренный нами пример <xsl:import>. В этом случае я добавлю еще один столбец в генерируемую в этом примере (листинг 2.12) HTML-таблицу, названную DATA, путем перекрытия шаблона <PLANET> в rules.xsl новым шаблоном <PLANET> из planets.xsl. Новый шаблон просто добавляет в таблицу новый столбец и затем применяет старый шаблон <PLANET> к оставшимся данным. Доступ к старому шаблону осуществляется при помощи <xsl:apply-imports>.

Листинг 2.12. Использование <xsl:apply-imports>

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns.xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:import href="rules.xsl"/>
 <xsl:template match="/PLANETS">
  <HTML>
   <HEAD>
    <TITLE>
     The Planets Table
    </TITLE>
   </HEAD>
   <BODY>
    <H1>
     The Planets Table
    </H1>
    <TABLE BORDER="2">
     <TR>
      <TD>Date</TD>
      <TD>Name</TD>
      <TD>Mass</TD>
      <TD>Radius</TD>
      <TD>Day</TD>
      <xsl:apply-templates/>
     </TR>
    </TABLE>
   </BODY>
  </HTML>
 </xsl:template>
 <xsl:template match="PLANET">
  <TR>
   <TD>4/1/2002</TD>
   <xsl:apply-imports/>
  </TR>
 </xsl:template>
</xsl:stylesheet>

А вот как выглядит новая версия rules.xsl (листинг 2.13).

Листинг 2.13. Новая версия rules.xsl

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="PLANET">
  <TD><xsl:value-of select="NAME"/></TD>
  <TD><xsl:value-of select="MASS"/></TD>
  <TD><xsl:value-of select="RADIUS"/></TD>
  <TD><xsl:value-of select="DAY"/></TD>
 </xsl:template>
</xsl:stylesheet>

Результаты можно видеть на рис. 2.4. Я создал один шаблон при помощи другого, что является ближайшим аналогом в XSLT для наследования из объектно-ориентированной парадигмы.


Рис. 2.4. Использование <xsl:apply-imports>

В рабочем проекте XSLT 1.1 с элементом <xsl:apply-imports> можно использовать параметры таблицы стилей, что означает, что вы можете использовать элементы <xsl:with-param> в качестве содержимого <xsl:apply-imports>. Подробное обсуждение параметров и элемента <xsl:with-param> приводится в главе 9.

Оглавление книги


Генерация: 0.094. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз