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

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

Шрифт:

</xsl:if>

Можно проверять любое выражение XPath. Для преобразования его в значения

true/false
в элементе
<xsl:if>
применяйте следующие правила:

• если выражение вычисляется в набор узлов, оно трактуется как

true
, когда набор узлов содержит хотя бы один узел;

• выражение-строка считается

true
, если строка не пуста;

• фрагмент результирующего дерева трактуется как

true
, если содержит узлы;

• если результат выражения — число, он считается

true
, когда отличен от нуля.

Элемент

<xsl:if>
во многом похож на оператор
if-then
в языках программирования. Однако не существует оператора
<xsl:else>
для формирования конструкций
if-then-else
— для этого служит элемент
<xsl:choose>
.

В листинге 5.1 я перечисляю планеты в

planets.xml
одну за другой и добавляю горизонтальное правило HTML, элемент <HR> (horizontal rule), после последнего элемента — но только после последнего. При помощи
<xsl:if>
это можно сделать так.

Листинг 5.1. Применение <xsl:if>

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

Planets

</TITLE>

</HEAD>

<BODY>

<xsl:apply-templates select="PLANET"/>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

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

is planet number <xsl:value-of select="position"/> from the sun.

<xsl:if test="position = last"><HR/><xsl:if>

 </xsl:template>

</xsl:stylesheet>

Вот результат — как видите, элемент <HR> появляется только после последней перечисленной планеты:

<HTML>

 <HEAD>

<TITLE>

Planets

</TITLE>

 </HEAD>

 <BODY>

Mercury is planet number 1 from the sun.

Venus is planet number 2 from the sun.

Earth is planet number 3 from the sun.

<HR>

 </BODY>

</HTML>

Рассмотрим еще один пример — преобразование XML-XML, в котором перечисляются планеты из

planets.xml
. Однако я хочу, чтобы выводилось не просто «The first three planets are: Mercury Venus Earth» (первые три планеты: Меркурий Венера Земля), a «The first three planets are: Mercury, Venus, and Earth». Необходимые знаки пунктуации можно добавить, определяя текущий элемент при помощи функции
position
и проверяя позицию при помощи
<xsl:if>
(листинг 5.2).

Листинг 5.2. Второй пример применения <xsl:if>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="PLANETS">

<DOCUMENT>

<TITLE>

The Planets

</TITLE>

<PLANETS>

The first three planets are: <xsl:apply-templates select="PLANET"/>

</PLANETS>

</DOCUMENT>

 </xsl:template>

 <xsl:template match="PLANET">

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

<xsl:if test="position!=last">, </xsl:if>

<xsl:if test="position=last-1">and </xsl:if>

  • Читать дальше
  • 1
  • ...
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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