Сергей Пузанков — XPath
description
Transcript of Сергей Пузанков — XPath
ШРИ 2012
Сергей Пузанков
XPath
• Выборка нужных нод.
• Вычисление выражений.
Результат – node-set, string, number, boolean.
2
XPath
3
XPath
4
XPath
5
Контекст
• *• comment()• text()• processing-instructions()• node()
6
Выбор нод без указания имени
7
Атрибуты и родители
ПОИГРАЙ ШРИФТАМИ
8
Axis / Оси http://www.xmlplease.com/axis
books/book/authorbooks/child::book/child::author
9
self::
self::node().
books/book/authorbooks/child::book/child::author
10
child::
11
descendant::
block/descendant::itemblock//item
12
descendant-or-self::
13
parent::
books/../newspapers
14
ancestor::
15
ancestor-or-self::
16
preceding-sibling::
17
following-sibling::
18
preceding::
19
following::
20
Текстовые ноды и строковые значения нод
/page/a | /page/b => и нода a и нода b.
21
Объединение через |
Расширенное понятие контекстаКонтекст состоит из:
• Длины коллекции• Позиции данного элемента• Собственно контекстной ноды
22
Приведение типов
2 + 2'hello'2 > 3
• string• number• boolean• node-set
boolean(/items/item)boolean(2 + 2)boolean('hello')
23
Приведение типов
• Пустой нодесет дает false, не пустой --- true.• Пустая строка дает false, не пустая --- true.• Число 0 и NaN дает false, остальное true.
• /items/item[position() = 1]
• /items/item[1]
• /items/item[position() = -1]
• /items/item[position() = last()]
• /items/item[position() <= 5]
• /items/item[position() mod 2 = 0]
24
Предикаты
25
26
27
Смотри не перепутай
28
Предикаты
29
Сравнение нодесетов
30
Сравнение нодесетов
31
Сравнение нодесетов в предикатах
32
http://www.w3.org/TR/xml/http://www.w3.org/TR/xpath/http://www.w3.org/TR/xslt/http://www.w3.org/XML/Schemahttp://ru.wikipedia.org/wiki/DTD
33
Почитать