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

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

Жанры

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

Шрифт:

<TD>Earth</TD>

<TD>needs</TD>

<TD>no</TD>

<TD>introduction.</TD>

</TR>

</TABLE>

 </BODY>

</HTML>

Результат можно увидеть на рис. 4.1.

Рис. 4.1. Применение предикатов XPath

В следующем примере используется логическая операция >. Это правило применяется ко всем элементам

<PLANET>
после позиции 5:

<xsl:template match="PLANET[position > 5]">

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

</xsl:template>

Имеется также функция

true
, всегда возвращающая значение true, и функция
false
, всегда возвращающая значение false. Функция
not
инвертирует логический смысл выражения, как в следующем случае, где я выбираю все элементы
<PLANET>
, кроме последнего:

<xsl:template match="PLANET[not(position = last)]">

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

</xsl:template>

Наконец, функция

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

Предикаты: числа

В XPath числа хранятся в формате числа с плавающей точкой двойной точности. (Технически все числа XPath хранятся в 64-разрядном формате IEEE числа с плавающей точкой двойной точности, floating-point double.) Все числа хранятся как числа с двойной точностью — даже целые числа, как 5 в рассматриваемом примере:

<xsl:template match="PLANET[position > 5]">

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

</xsl:template>

Над числами можно производить ряд операций:

• 

+
сложение;

• 

вычитание;

• 

*
умножение;

• 

div
деление (символ /, соответствующий делению в других языках, в XML, XSL и XPath уже занят);

• 

mod
возвращает значение деления по модулю двух чисел (остаток после деления первого числа на второе).

Например, элемент

<xsl:value-of select="180+420"/>
вставит в выходной документ строку "
600
". В следующем примере выбираются все планеты, у которых отношение дня (измеренного в днях Земли) к массе (где масса Земли принята за 1) больше 100:

<xsl:template match="PLANETS">

 <HTML>

<BODY>

<xsl:apply-templates select="PLANET[DAY div MASS > 100]"/>

</BODY>

 </HTML>

</xsl:template>

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

• 

ceiling
. Возвращает наименьшее целое, большее, чем переданное функции число;

• 

floor
. Возвращает наибольшее целое, меньшее, чем переданное функции число;

• 

round
. Округляет переданное число до ближайшего целого;

• 

sum
. Возвращает сумму переданных функции чисел.

Например, среднюю массу планет в

planets.xml
можно найти так, как в листинге 4.8:

Листинг 4.8. Вычисление средней массы планет

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

</BODY>

</HTML>

 </xsl:template>

</xsl:stylesheet>

Строки

В XPath строки формируются из символов Unicode, как можно было предположить. Ряд функций специально предназначен для работы со строками:

• 

string(object object1)
. Преобразует объект в строку;

• 

starts-with(string string1, string string2)
. Возвращает истину, если первая строка начинается (starts with) со второй строки;

• 

contains(string string1, string string2)
. Возвращает истину, если первая строка содержит (contains) вторую строку;

• 

substring(string string1, number offset number length)
. Возвращает
length
символов из строки, начиная со смещения
offset
;

• 

substring-before(string string1, string string2)
. Возвращает часть строки
string1
до первого вхождения строки
string2
;

• 

substring-after(string string1, string string2)
. Возвращает часть строки
string1
после первого вхождения
string2
;

• 

string-length(string string1)
. Возвращает количество символов в строке
string1
;

• 

normalize-space(string string1)
. Возвращает строку
string1
после отбрасывания лидирующих и завершающих символов-разделителей и замены нескольких последовательных разделителей на один пробел;

• 

translate(string string1, string string2, string string3)
. Возвращает строку
string1
, в которой все вхождения символов в строке
string2
заменены на соответствующие символы в строке
string3
;

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

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Гладиаторы

Трофимов Ерофей
Фантастика:
постапокалипсис
7.86
рейтинг книги
Гладиаторы

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Бастард

Осадчук Алексей Витальевич
1. Последняя жизнь
Фантастика:
фэнтези
героическая фантастика
попаданцы
5.86
рейтинг книги
Бастард

Наследие Маозари 8

Панежин Евгений
8. Наследие Маозари
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 8

Последний реанорец. Том I и Том II

Павлов Вел
1. Высшая Речь
Фантастика:
фэнтези
7.62
рейтинг книги
Последний реанорец. Том I и Том II

Царь царей

Билик Дмитрий Александрович
9. Бедовый
Фантастика:
фэнтези
мистика
5.00
рейтинг книги
Царь царей

Тринадцатый VIII

NikL
8. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VIII

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Черный Маг Императора 25

Герда Александр
25. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 25

Точка Бифуркации V

Смит Дейлор
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации V

Обнять космос

Данильченко Олег Викторович
2. МиГера
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Обнять космос

Князь Целитель 6

Ткачев Андрей Юрьевич
6. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Князь Целитель 6

Лекарь

Назимов Константин Геннадьевич
2. Травник
Фантастика:
фэнтези
5.25
рейтинг книги
Лекарь