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

Валиков Алексей Н.

Шрифт:

Логические выражения XPath могут использоваться в качестве условий в таких элементах, как

xsl:if
и
xsl:when
, обеспечивая условную обработку.

Пример

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

Листинг 3.17. Входящий документ

<person>

 <name>Johnny</name>

 <age>19</age>

</person>

Листинг 3.18. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:template match="person">

<xsl:if test="age &gt;= 21">

<xsl:text>Welcome, </xsl:text>

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

<xsl:text>.</xsl:text>

</xsl:if>

<xsl:if test="age &lt; 21">

<xsl:text>Sorry, </xsl:text>

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

<xsl:text>, access denied.</xsl:text>

</xsl:if>

 </xsl:template>

</xsl:stylesheet>

Выделенные выражения

age >= 21
и
age < 21
(сущности
&gt;
и
&lt;
обозначают символы "
<
", и "
>
") определяют условия: содержимое первого элемента
xsl:if
будет выполняться, только если значение элемента
age
было не меньше
21
; содержимое второго — только если значение
age
было строго меньше
21
. Этот же самый шаблон может быть переписан с использованием элементов
xsl:choose
,
xsl:when
и
xsl:otherwise
.

Листинг 3.19

<xsl:stylesheet

 version="1.0"

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

 <xsl:template match="person">

<xsl:choose>

<xsl:when test="age &gt;= 21">

<xsl:text>Welcome, </xsl:text>

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

<xsl:text>.</xsl:text>

</xsl:when>

<xsl:otherwise>

<xsl:text>Sorry, </xsl:text>

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

<xsl:text>, access denied.</xsl:text>

</xsl:otherwise>

</xsl:choose>

 </xsl:template>

</xsl:stylesheet>

Результатом этого преобразования будет текст

Sorry, Johnny, access denied.

В этой строке имя

johnny
было заимствовано из входящего документа. Оно было создано элементом
xsl:value-of
:

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

Этот элемент вычислил значение выражения

name
, которое было указано в его атрибуте
select
, преобразовал результат вычисления в строку и создал в выходящем документе текстовый узел, содержащий вычисленное значение.

В данном случае выражение

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

Листинг 3.20. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:template match="person">

<xsl:choose>

<xsl:when test="age &gt;= 21">

<event type="access granted">

<xsl:copy-of select="name"/>

</event>

  • Читать дальше
  • 1
  • ...
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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