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

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

Шрифт:

Внутри шаблона создайте разметку HTML, начинающую требуемую таблицу, — такая прямая вставка разметки называется элементом буквального (literal) результата. Когда процессор встречает литерал, он копирует его в результирующее дерево:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 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

</H1>

<TABLE BORDER=2">

<TR>

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

</TR>

</TABLE>

</BODY>

</HTML>

 </xsl:template>

 .

 .

 .

</xsl:stylesheet>

Однако это правило обрабатывает только элемент

<PLANETS>
, но не его дочерние элементы
<PLANET>
, содержащие сами данные. В соответствии с правилами шаблона по умолчанию, элементы
<PLANET>
будут обрабатываться, если установить шаблон для их выбора. Это, кстати, нежелательно, поскольку я хочу вставить результат обработки элементов
<PLANET>
в определенное место в создаваемом файле HTML. Для этого мне потребуется применить элемент
<xsl:apply-templates>
.

Обработка дочерних узлов

Элемент

<xsl:apply-templates>
дает указание процессору XSLT обрабатывать все совпадающие шаблоны для дочерних узлов контекстного узла. Элемент
<xsl:apply-templates>
дает возможность явно указать, когда следует закончить обработку дочерних узлов, а это имеет решающее значение при вставке их данных в нужное место в HTML-таблице.

Один важный момент часто вызывает затруднения: элемент

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

В следующем примере мы поместим элемент

<xsl:apply-templates>
туда, куда нам требуется вставить данные из элементов
<PLANET>
в таблицу HTML. Я также добавил новый шаблон для обработки элементов
<PLANET>
:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 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

</H1>

<TABLE BORDER="2">

<TR>

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

</TR>

<xsl:apply-templates/>

</TABLE>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

.

  • Читать дальше
  • 1
  • ...
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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