Сергей Пузанков — XPath

Post on 28-Nov-2014

3.901 views 1 download

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

Почитать

Руководитель группы разработки поисковых интерфейсов

puzankov@yandex-team.ru

@puzankovcom

Сергей Пузанков