Язык XPath

Download Report

Transcript Язык XPath

Slide 1

Презентацию подготовила
Гатаулина Валерия, гр.950б

XPath выступает в роли подъязыка преобразований
XSLT и XPointer. Выражение XPath используется
для манипуляции строками, в числовых выражениях, а
также в булевой логике.
Однако основное назначение языка XPath –
возможность адресации частей документа с помощью
представления путей


Slide 2

Какой тип связи между данными в документе XML?


Slide 3

При вычислении выражений XPath результатом
оказывается объект данных, который можно отнести к
одной из следующих категорий:
•Узел
•Набор узлов
•Булево значение
•Строка
•Число


Slide 4

Дерево узлов, полученное с помощью XPath, очень
похоже на древовидную структуру, соответствующую
объектной модели документа DOM. Но об этом вы
узнаете только из доклада по 10ой теме, ну или изучив
ее самостоятельно…


Slide 5

Семь узлов документа XPath
XPath содержит:
1. Корень (контейнер для всех остальных
элементов)
2. Элемент
3. Атрибут
4. Комментарий
5. Текст
6. Инструкции обработки
7. Пространство имен
Что такое атрибут?


Slide 6

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:







Remember to buy milk on the way home from work
urgent



Как вы думаете, что здесь является корневым
элементом?


Slide 7

Дерево XPath

Корневой элемент

Комментарий
Коммент –message01.xml
Элемент
note
Пространство имен
Urn:STY_XML_in_21Days:XPath

Инструкция обработки
MessageProcessor command=“AcceptMessage”
Комментарий
Это инструкция обработки
Элемент
Message

Атрибут
Type=phone message
Текст
Remember to buy milk on way home from work
Элемент
status
Текст
urgent


Slide 8

Тип узла

Описание

Строковое значение

Root

Только один корневой элемент, который содержит все
остальные узлы

Объединение строковых значений
всех текстовых узлов-потомков

Element

Соответствует элементам документа XML и может
содержать другие узлы

Объединение строковых значений
всех текстовых узлов-потомков

Attribute

Атрибуты элементов. Родительскими по отношению к
ним будут элементы, но сами они не являются
дочерними по отношению к последним

Значение атрибута

Namespace

Пространства имен XML. Родительскими по
отношению к ним будут элементы, но сами они не
являются дочерними по отношению к последним

Идентификатор URL пространства
имен

Processing
instruction

Инструкции обработки XML

Значение, указанное после первого
аргумента инструкции

Text

Содержат текстовые данные документа XML

Текстовые данные узла

Comment

Содержат текстовые данные документа XML

Текст комментария

Пользуясь таблицей, определите строковое значение
инструкции обработки документа и корневого элемента


Slide 9

Разновидности отношений XPath
XPath различает 11 разновидностей отношений между узлами.
Название

Описание

Концепция Self

Контекстный узел может
быть тем узлом, который нам
необходим.
Выражение XPath для поиска
self возвращает нас к
контекстному узлу

Родительский
узел

На одно поколение выше
контекстного узла

Иллюстрация


Slide 10

Дочерние
отношения

Выражение для поиска
дочерних узлов находит те
узлы, которые находятся на
уровень ниже контекстного
узла.

Родительские
узлы и узлы
более высокого
уровня

К узлам-предкам относят как
родительский узел, так и
родительский узел
родительского…и так до
корня

Предок самого
себя

Отношение «Предок самого
себя» находит все узлы
предки и сам контекстный
узел


Slide 11

Потомок

Выбирается дочерний элемент,
а так же все внучатые

Потомок самого
себя

Отношение включает в себя
контекстный узел и всех своих
потомков

Выбор узлов,
следующих
после
контекстного

Следующие узлы начинаются на
том же уровне, что и
контекстный и включают в себя
все потомки этих узлов


Slide 12

Выбор
последующих
узлов одного
уровня

Выбираются узлы только одного
уровня с последующим

Предыдущие
узлы

Выбираются узлы одного уровня
и все их потомки

Предыдущие
узлы одного
уровня

Только узлы одного уровня с
контекстным


Slide 13

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:





















Для проверки выражений CPath замечательно подходит такой инструмент как XPath
Visualizer. Подробную инструкцию по установке и использованию этого приложения вы
найдете в учебнике на странице 174.


Slide 14

Некоторые полезные функции
Название

Как выглядит

Что делает

Выбор элементов по
известному направлению

/drawer/tray/box/pencil

Находит pencil дочерний к
элементу box. Который в свою
очередь тоже является
дочерним к tray

Выбор элементов по имени

//pencil

Все элементы penсil,
дочерние к корневому узлу

Использование
подстановочных символов

/drawer/*
/*/*/*/pencil

Все дочерние элементы корня
Элемент pencil третьего
уровня
Все элементы-потомки корня
Все дочерние элементы корня

//*
/*


Slide 15

Выбор определенных
элементов из набора узлов

/drawer/pencil[3]
/drawer/pencil[last()]

Третий pencil
Последний среди pencil’ов

Выбор атрибутов

//@type

Все элементы с атрибутом
type
Элементы, у которых нет
атрибутов
Pencil, у которого атрибут
type=“HB”
То же самое, только
убираются лишние запятые в
тексте

//[not(@*)]
//pencil[@type=“HB”]
//pencil[nomalizespace(@type)=“HB”]

Дополнительные функции

//*[count(pencil)=2]

//*[name()=“pen”]
//*[start-with(name(),”p”)]
//*[contains(name(),”p”)]
//*[string-length(name)=3]

Элементы, которые содержат
ровно 2 дочерних pencil
Элементы с именем pen
Элементы с первой буквой p
Элементы, содержащие p
Элементы с именем из 3х
букв


Slide 16

Комбинирование осей XPath

//box | //pen

Выбираются рen и box

Явное объявление
относительных осей

/drawer/tray/descendent::
//tray/descendent::pencil

Выбор всех потомков tray
Только те рencil, среди
потомков которых есть tray
Элемент box, а так же
следующий элемент
Элемент box и все следующие
элементы

//box/following-sibling::*

//box/following::*