Язык XPath

advertisement
Презентацию подготовила
Гатаулина Валерия, гр.950б
XPath выступает в роли подъязыка преобразований
XSLT и XPointer. Выражение XPath используется
для манипуляции строками, в числовых выражениях, а
также в булевой логике.
Однако основное назначение языка XPath –
возможность адресации частей документа с помощью
представления путей
Какой тип связи между данными в документе XML?
При вычислении выражений XPath результатом
оказывается объект данных, который можно отнести к
одной из следующих категорий:
•Узел
•Набор узлов
•Булево значение
•Строка
•Число
Дерево узлов, полученное с помощью XPath, очень
похоже на древовидную структуру, соответствующую
объектной модели документа DOM. Но об этом вы
узнаете только из доклада по 10ой теме, ну или изучив
ее самостоятельно…
Семь узлов документа XPath
XPath содержит:
1. Корень (контейнер для всех остальных
элементов)
2. Элемент
3. Атрибут
4. Комментарий
5. Текст
6. Инструкции обработки
7. Пространство имен
Что такое атрибут?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<xml version=“1.2”>
<!– Коммент – message01.xml>
<note xmlns=“urn: STY_XML_in_21Days:xPath”>
<?MessageProcessor command = “AcceptMessage” ?>
<!– это пример инструкции обработки -->
<message type=“phone message”>
Remember to buy milk on the way home from work
<status>urgent</status>
</message>
</note>
Как вы думаете, что здесь является корневым
элементом?
Дерево 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
Тип узла
Описание
Строковое значение
Root
Только один корневой элемент, который содержит все
остальные узлы
Объединение строковых значений
всех текстовых узлов-потомков
Element
Соответствует элементам документа XML и может
содержать другие узлы
Объединение строковых значений
всех текстовых узлов-потомков
Attribute
Атрибуты элементов. Родительскими по отношению к
ним будут элементы, но сами они не являются
дочерними по отношению к последним
Значение атрибута
Namespace
Пространства имен XML. Родительскими по
отношению к ним будут элементы, но сами они не
являются дочерними по отношению к последним
Идентификатор URL пространства
имен
Processing
instruction
Инструкции обработки XML
Значение, указанное после первого
аргумента инструкции
Text
Содержат текстовые данные документа XML
Текстовые данные узла
Comment
Содержат текстовые данные документа XML
Текст комментария
Пользуясь таблицей, определите строковое значение
инструкции обработки документа и корневого элемента
Разновидности отношений XPath
XPath различает 11 разновидностей отношений между узлами.
Название
Описание
Концепция Self
Контекстный узел может
быть тем узлом, который нам
необходим.
Выражение XPath для поиска
self возвращает нас к
контекстному узлу
Родительский
узел
На одно поколение выше
контекстного узла
Иллюстрация
Дочерние
отношения
Выражение для поиска
дочерних узлов находит те
узлы, которые находятся на
уровень ниже контекстного
узла.
Родительские
узлы и узлы
более высокого
уровня
К узлам-предкам относят как
родительский узел, так и
родительский узел
родительского…и так до
корня
Предок самого
себя
Отношение «Предок самого
себя» находит все узлы
предки и сам контекстный
узел
Потомок
Выбирается дочерний элемент,
а так же все внучатые
Потомок самого
себя
Отношение включает в себя
контекстный узел и всех своих
потомков
Выбор узлов,
следующих
после
контекстного
Следующие узлы начинаются на
том же уровне, что и
контекстный и включают в себя
все потомки этих узлов
Выбор
последующих
узлов одного
уровня
Выбираются узлы только одного
уровня с последующим
Предыдущие
узлы
Выбираются узлы одного уровня
и все их потомки
Предыдущие
узлы одного
уровня
Только узлы одного уровня с
контекстным
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
<xml version=“1.2”>
<!– drawer01.xml>
<drawer>
<pencil type=“HB” />
<pen />
<pencil type=“H” />
<pencil type=“HB” />
<pencil type=“ HB ” />
<box>
<pencil type=“HB” />
</ box>
<tray>
<box>
<pencil type=“H” />
<pencil type=“HB” />
</ box>
</ tray>
</ pen>
<drawer>
Для проверки выражений CPath замечательно подходит такой инструмент как XPath
Visualizer. Подробную инструкцию по установке и использованию этого приложения вы
найдете в учебнике на странице 174.
Некоторые полезные функции
Название
Как выглядит
Что делает
Выбор элементов по
известному направлению
/drawer/tray/box/pencil
Находит pencil дочерний к
элементу box. Который в свою
очередь тоже является
дочерним к tray
Выбор элементов по имени
//pencil
Все элементы penсil,
дочерние к корневому узлу
Использование
подстановочных символов
/drawer/*
/*/*/*/pencil
Все дочерние элементы корня
Элемент pencil третьего
уровня
Все элементы-потомки корня
Все дочерние элементы корня
//*
/*
Выбор определенных
элементов из набора узлов
/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х
букв
Комбинирование осей XPath
//box | //pen
Выбираются рen и box
Явное объявление
относительных осей
/drawer/tray/descendent::
//tray/descendent::pencil
Выбор всех потомков tray
Только те рencil, среди
потомков которых есть tray
Элемент box, а так же
следующий элемент
Элемент box и все следующие
элементы
//box/following-sibling::*
//box/following::*
Download