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

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

Шрифт:

Следующий пример, в котором я выбираю элементы

<PLANET>
при помощи шаблона (листинг 8.1), демонстрирует работу функции
current
. Внутрь шаблона я поместил элемент
<xsl:for-each>
, и шаблон применяется только в том случае, если выбранный шаблоном контекстный узел в то же время является и текущим узлом в очередной итерации в элементе
<xsl:for-each>
.

Листинг 8.1. Применение функции current

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/PLANETS">

<HTML>

.

.

.

<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">

<xsl:for-each select="/PLANETS/*[.=current]">

<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:for-each>

 </xsl:template>

 <xsl:template match="MASS">

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

<xsl:text> </xsl:text>

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

 </xsl:template>

 <xsl:template match="DAY">

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

<xsl:text> </xsl:text>

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

 </xsl:template>

</xsl:stylesheet>

Результат применения этой таблицы стилей будет точно таким же, как если бы элемента

<xsl:for-each>
вообще не было, потому что тело элемента
<xsl:for-each>
применяется только тогда, когда контекстный узел совпадает с текущим узлом.

document

Функция

document
особенно полезна, потому что с ее помощью можно читать несколько документов и обрабатывать их содержимое. Функция
document
применяется следующим образом:

node-set document(uri, base-uri?)

Функция принимает параметр

uri
, который может представлять собой URI читаемого документа или набор узлов, чьи строковые значения задают идентификаторы URI. Второй, необязательный параметр
base-uri
представляет собой набор узлов, базовый URI которого используется для вычисления всех относительных URI, могущих находиться в параметре
uri
.

В следующем примере (листинг 8.2) я обрабатываю в процессоре XSLT один документ,

planets1.xml
, и также считываю и обрабатываю второй документ,
planets2.xml
. Вот
planets1.xml
.

Листинг 8.2. planets1.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="#"?>

<PLANETS href="#">

</PLANETS>

Вот

planets2.xml
— в элементе
<PLANET>
содержится одна планета (листинг 8.3).

Листинг 8.3. planets2.xml

<?xml version="1.0"?>

<PLANET>

  • Читать дальше
  • 1
  • ...
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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