Чтение онлайн

на главную - закладки

Жанры

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

Шрифт:

В этом примере я передаю

number
строку:

number("456.7")

Это выражение возвращает число 456.7. Если вы попытаетесь преобразовать что-то, что

number
не сможет перевести в число, функция вернет значение XPath
NaN
(Not a Number, не число).
NaN
— корректное значение, которое можно проверять в выражениях Xpath.

round

Функция

round
округляет переданное ей значение.
Функция применяется следующим образом:

number round(number)

Например,

round(3.1415926535)
возвращает 3,
round(4.5)
возвращает 5 и
round(-1.5)
возвращает -1.

sum

Функция

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

number sum(node-set)

Взгляните на следующий пример из главы 4, который находит средние массы планет в

planets.xml
:

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

<HTML>

<BODY>

The average planetary mass is

<xsl:value-of select="sum(child::PLANET/child::MASS) div count(child::PLANET/child::MASS)"/>

</BODY>

</HTML>

 </xsl:template>

</xsl:stylesheet>

Логические функции XPath

XPath также поддерживает следующий набор логических функций:

• 

boolean
. Приводит аргумент к логическому значению;

• 

false
. Возвращает false (ложь);

• 

lang
. Проверяет, совпадает ли язык, установленный в атрибуте
xml:lang
, с языком, переданным в функцию;

• 

not
. Инвертирует значение true\false аргумента;

• 

true
. Возвращает true (истина).

boolean

Функция

boolean
преобразует аргумент в логическое значение. Функция применяется следующим образом:

boolean boolean(object)

Ниже показано, как функция работает с различными типами XPath:

• 

number
. Если число равно нулю, результатом будет ложь; иначе результат — истина. NaN всегда возвращает ложь;

• 

string
. Если строка не пуста, результат — истина, иначе — ложь;

• 

boolean
. Значение не изменяется;

• 

nodeset
. Пустой набор узлов дает ложь,
не пустой — истину;

• Фрагмент результирующего дерева в XSLT 1.0 всегда дает истину.

false

Функция

false
возвращает ложь. Она применяется следующим образом:

boolean false

В XPath не определены логические константы, поэтому для того чтобы присвоить переменной значение false, нужно прибегнуть к функции

false
. (С переменными вы познакомитесь в главе 9.)

lang 

Функция

lang
проверяет, совпадает ли язык контекстного узла (определенный в атрибуте
xml:lang
) с переданным ей языком. Функция применяется следующим образом:

boolean lang(string)

Функции нужно передать строку, определяющую язык в спецификации XML, как, например, «en» для английского, «de» для немецкого и «jp» для японского.

В следующем примере я проверяю, написан ли исходный документ на английском. Сначала я устанавливаю атрибут

xml:lang
в
planets.xml
в значение, соответствующее английскому языку:

<?xml version="1.0"?>

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

<PLANETS xml:lang="en">

 <PLANET>

<NAME>Mercury</NAME>

<MASS UNITS="(Earth = 1)">.0553</MASS>

<DAY UNITS="days">58.65</DAY>

<RADIUS UNITS="miles">1516</RADIUS>

<DENSITY UNITS="(Earth = 1)">.983</DENSITY>

<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->

 </PLANET>

 .

 .

 .

Теперь я удостоверяюсь, что исходный документ на самом деле написан на английском, перед тем как применять к нему шаблоны:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/PLANETS">

<xsl:if test="lang('en')">

<HTML>

<HEAD>

<TITLE>

The Planets Table

</TITLE>

</HEAD>

<BODY>

<H1>

The Planets Table

</H1>

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

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Душелов. Том 4

Faded Emory
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Душелов. Том 4

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

(Не) моя ДНК

Рымарь Диана
6. Сапфировые истории
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
(Не) моя ДНК

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Инквизитор Тьмы 4

Шмаков Алексей Семенович
4. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 4

Кротовский, сколько можно?

Парсиев Дмитрий
5. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, сколько можно?