Презентацию подготовила Гатаулина Валерия, гр.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::*