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

на главную

Жанры

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

Шрифт:

</TITLE>

 </HEAD>

 <BODY>

<H1>

The Planets Table

</H1>

<TABLE BORDER="2">

<TR>

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

<TD>Distance</TD>

</TR>

<TR>

<TD>Mercury</TD>

<TD>.0553 (Earth = 1)</TD>

<TD>1516 You should switch to kilometers.</TD>

<TD>58.65 days</TD>

<TD>43.4 You should switch to kilometers.</TD>

</TR>

<TR>

<TD>Venus</TD>

<TD>.815 (Earth = 1)</TD>

<TD>3716 You should switch to kilometers.</TD>

<TD>116.75 days</TD>

<TD>66.8 You should switch to kilometers.</TD>

</TR>

<TR>

<TD>Earth</TD>

<TD>1 (Earth = 1)</TD>

<TD>2107 You should switch to kilometers.</TD>

<TD>1 days</TD>

<TD>128.4 You should switch to kilometers.</TD>

</TR>

</TABLE>

 </BODY>

</HTML>

Помимо

работы с наборами узлов, числами и строками, можно работать и с логическими значениями (true/false).

Логические значения XPath

Логические (Boolean) выражения XPath вычисляются либо в истину (true), либо в ложь (false), и обычно они используются только в предикатах. Для чисел ноль принимается за ложь, другие значения — за истину. Пустая строка, "", также считается ложью, все остальные строки — истиной.

Для генерации логических результатов true/false в XPath можно применять ряд логических операций, как мы видели в обзоре в главе 4:

• 

!=
означает «не равно»;

• 

<
означает «меньше, чем» (в документах XML используйте
&lt;
);

• 

<=
означает «меньше или равно» (в документах XML используйте
&lt;=
);

• 

=
означает «равно» (программисты на С, С++, Java и JavaScript, обратите внимание: эта операция пишется как один
знак =, а не два);

• 

>
означает «больше, чем»;

• 

>=
означает «больше или равно».

Для связи логических выражений логическими операциями And и Or используются ключевые слова

and
и
or
, слово
not
инвертирует логический смысл выражения, как в следующем примере, где я выбираю все элементы
<PLANET>
, кроме первого и последнего:

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

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

</xsl:template>

Следующий пример уже встречался нам в главе 5, он использует логическую операцию

not
и операции
=
и
!=
:

<xsl:template match="PLANET">

 <xsl:if test="NAME[not(text)]">

<xsl:message terminate="yes">

Each planet must have a name!

</xsl:message>

 </xsl:if>

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

<xsl:choose>

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

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

<xsl:otherwise>.</xsl:otherwise>

</xsl:choose>

</xsl:template>

Кроме того, имеется функция

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

Как вы видели, существуют все виды выражений XPath, в том числе возвращающие узлы, числа, строки и логические значения. Наиболее важным типом выражений XPath является путь расположения; для создания путей расположена XPath первоначально и задумывался, поэтому оставшаяся часть главы будет посвящена работе с ними.

Создание путей расположения XPath

Вы уже знакомы со взглядом на документы с позиции XPath; например, в XPath определено семь типов узлов документа:

• Корневой узел. Самое начало документа. Этот узел представляет в XPath весь документ;

• Узлы элементов. Представляют элементы в деревьях XPath, обозначенные открывающим и соответственным закрывающим тегами или единственным пустым тегом элемента;

• Узлы атрибутов. Значение атрибута после раскрытия ссылок на сущность и отбрасывания окружающих символов-разделителей;

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

Совок 5

Агарев Вадим
5. Совок
Фантастика:
детективная фантастика
попаданцы
альтернативная история
6.20
рейтинг книги
Совок 5

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

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

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

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

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

Кодекс Крови. Книга V

Борзых М.
5. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга V

Ты предал нашу семью

Рей Полина
2. Предатели
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты предал нашу семью

Авиатор: назад в СССР 11

Дорин Михаил
11. Покоряя небо
Фантастика:
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 11

Менталист. Революция

Еслер Андрей
3. Выиграть у времени
Фантастика:
боевая фантастика
5.48
рейтинг книги
Менталист. Революция

Лорд Системы

Токсик Саша
1. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
4.00
рейтинг книги
Лорд Системы

Без шансов

Семенов Павел
2. Пробуждение Системы
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Без шансов

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Краш-тест для майора

Рам Янка
3. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
эро литература
6.25
рейтинг книги
Краш-тест для майора

Подаренная чёрному дракону

Лунёва Мария
Любовные романы:
любовно-фантастические романы
7.07
рейтинг книги
Подаренная чёрному дракону