Вход/Регистрация
XSLT
вернуться

Холзнер Стивен

Шрифт:

</TITLE>

 </HEAD>

 <BODY>

<H1>Welcome to my page</H1>

 </BODY>

</HTML>

Однако поскольку теперь фрагменты результирующего дерева не допускаются в XSLT 1.1, этот пример работать не будет. Как же тогда сохранить весь элемент буквального результата одновременно с возможностью простого вызова? Вы можете создать именованный шаблон.

Элемент <xsl:call-template>: применение именованных шаблонов

У элемента

<xsl:template>
есть атрибут
name
, задающий имя шаблона. Предположим, у меня есть элемент буквального результата, состоящий из двух элементов
<BR>
и двух элементов
<HR>
HTML, при помощи которого я создаю в документах HTML вертикальный разделитель:

<BR/>

<HR/>

<BR/>

<HR/>

Тогда я могу создать шаблон с именем «separator» (разделитель), использующий этот элемент буквального результата:

<xsl:template name="separator">

 <BR/>

 <HR/>

 <BR/>

 <HR/>

</xsl:template>

Это именованный шаблон — для его создания нужно только присвоить имя атрибуту name элемента

<xsl:template>
.

Заметьте, что этот шаблон не установлен для выбора чего-то конкретного. Для активизации шаблона необходимо вызвать его явно. Для этого служит элемент

<xsl:call-template>
, обладающий только одним атрибутом:

• 

name
(обязательный). Имя вызываемого шаблона, устанавливается в
QName
.

Следующий пример демонстрирует применение нашего шаблона «separator», для чего мне нужно было только вызвать его в соответствующих местах:

<?xml version="1.0"?>

<xsl:stylesheet version="1.1"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/PLANETS">

<HTML>

<HEAD>

<TITLE>

The Planets Table </TITLE>

</HEAD>

<BODY>

<H1>

The Planets Table

</Н1>

<xsl:call-template name="separator"/>

<TABLE BORDER="2">

<TR>

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

</TR>

<xsl:apply-templates/>

</TABLE>

<xsl:call-template name="separator"/>

</BODY>

</HTML>

</xsl:template>

<xsl:template match="PLANET">

<TR>

<TD><xsl:value-of select="NAME"/></TD>

<TD><xsl:apply-templates select="MASS"/></TD>

<TD><xsl:apply-templates select="RADIUS"/></TD>

<TD><xsl:apply-templates select="DAY"/></TD>

</TR>

 </xsl:template>

 <xsl:template match="MASS">

<xsl:value-of select="."/>

<xsl:text> </xsl:text>

<xsl:value-of select="@UNITS"/>

 </xsl:template>

  • Читать дальше
  • 1
  • ...
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: