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:
box>
box>
tray>
pen>
Для проверки выражений 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::*
Презентацию подготовила
Гатаулина Валерия, гр.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
Как вы думаете, что здесь является корневым
элементом?
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:
box>
box>
tray>
pen>
Для проверки выражений 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::*