Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Таранова / Лекция-8_XSl.pptx
Скачиваний:
68
Добавлен:
19.05.2015
Размер:
473.84 Кб
Скачать

Предикат

Предикат представляет собой фильтр, который определяет критерий выбора для дальнейшего уточнения списка узлов- кандидатов

<html>

<body> <div>Первый слой

<span>блок текста в первом слое</span> </div>

<div>Второй слой</div> <div>Третий слой

<span class="text">первый блок в третьем слое</span> <span class="text">второй блок в третьем слое</span>

<span>третий блок в третьем слое</span>

</div>

XPath-путь /html/body/*/span[@class] (полный

синтаксис имеет вид

<img />

/child::html/child::body/child::*/child::span[attribut

</body>

e::class]) будет соответствовать в нём двум

</html>

элементам исходного документа

— <span class="text">первый блок в третьем слое</span>

— <span class="text">второй блок в третьем слое</span>.

Операторы и специальные символы

Оператор «дочерний элемент»: выбирает непосредственные / дочерние элементы коллекции, указанной слева. Если этот

оператор пути стоит в начале шаблона, будут выбраны дочерние элементы корневого узла.

Рекурсивный спуск; поиск заданного элемента на любой глубине. // Если этот оператор пути стоит в начале шаблона, рекурсивный

спуск будет вестись из корневого узла.

.Указывает текущий контекст.

..

Родитель узла текущего контекста.

*Символ подстановки; выбирает все элементы независимо от их имени.

@Атрибут; префикс имени атрибута.

@*

Символ подстановки для атрибута; выбирает все атрибуты

независимо от имени.

 

( )

Группирует операции для явного задания порядка их выполнения.

[ ]

Применяет шаблон фильтра.

[ ]

Оператор Subscript; используется для индексирования коллекции.

+

Выполняет сложение.

-Выполняет вычитание.

div Выполняет деление с плавающей запятой по стандарту IEEE 754.

*Выполняет умножение.

mod Возвращает остаток от усекающего деления.

Функции множеств узлов

Функция last() возвращает число, равное размеру контекста в контексте вычисления выражения.

Функция position() возвращает число, равное позиции контекста в контексте вычисления выражения.

Функция count() возвращает число узлов в аргументном множестве узлов.

Функция number(object) преобразует ее аргумент в число

Функция: number sum(node-set) возвращает сумму результатов преобразований строковых значений всех узлов в аргументном множестве узлов в число.

Функция: number floor(number) возвращает наибольшее (ближайшее к положительной бесконечности) целое число, которое не больше, чем аргумент.

Функция: number ceiling(number) возвращает наименьшее (ближайшее к отрицательной бесконечности) целое число, которое не меньше, чем аргумент.

Функция: number round(number) возвращает ближайшее к аргументу целое число.

Функция: string string(object?) преобразует объект в строку

Функция: number string-length(string?) возвращает число символов в строке. Если аргумент отсутствует, он устанавливается по умолчанию значением контекстного узла, преобразованного в строку, другими словами, строковым значением контекстного узла.

Проверки типов узлов

(: Отобрать детей элемента X, у которых есть хотя бы один текстовый дочерний элемент. :)

X[text()]

(: Отобрать детей элемента X, у которых есть текстовый дочерний элемент, содержащий хотя бы один непробельный символ. :)

X[text()][normalize-space(.)]

(: Отобрать детей элемента X, у которых есть хотя бы один дочерний элемент. :)

X[node()]

(: Отобрать тех детей элемента X, которые содержат комментарий. :)

X[comment()]

(: Отобрать детей элемента X, у которых атрибут @a имеет числовое значение, меньшее 10. Это выражение одинаково хорошо работает в XPath 1.0 и XPath 2.0 независимо от того, имеет ли атрибут @a числовой или строковый тип. :)

X[number(@a) < 10]

<AAA>

Выбирается корневой узел AAA

<BBB/>

/AAA

<CCC/>

Выбираются все элементы CCC,

<BBB/>

<BBB/>

являющиеся дочерними по

<DDD>

отношению к корневому узлу

<BBB/>

AAA

</DDD>

/AAA/CCC

<CCC/>

</AAA>

Выбираются все элементы BBB,

 

 

являющиеся детьми элементов

 

DDD, которые в свою очередь

 

являются детьми корневого

 

узла AAA

 

/AAA/DDD/BBB

<AAA>

<BBB/>

<CCC/>

<BBB/>

<DDD>

<BBB/>

</DDD>

<CCC>

<DDD>

<BBB/

>

<BBB/

>

</DDD>

</CCC>

<BBB/>

</AAA>

Выбрать все элементы BBB //BBB

Выбрать все элементы BBB, являющиеся детьми DDD

//DDD/BBB

Выбрать первого потомка BBB элемента AAA

/AAA/BBB[1]

Выбрать последнего потомка BBB элемента AAA

AAA/BBB[last()]

string-length

<AAA>

Выбираются все элементы, имя которых

состоит из трех символов

<Q/>

//*[string-length(name()) = 3]

<SSSS/>

 

<BB/>

Выбираются все элементы, имя которых

<CCC/>

<DDDDDDDD/ состоит из двух или одного символа

>

//*[string-length(name()) < 3]

<EEEE/>

</AAA>

Соседние файлы в папке Таранова