XPath выступает в роли подъязыка преобразований XSLT и XPointer. Выражение XPath используется для манипуляции строками, в числовых выражениях, а также в булевой логике. Однако основное назначение языка XPath – возможность адресации частей документа с помощью представления путей Презентацию подготовила Гатаулина Валерия, гр.950б
Какой тип связи между данными в документе XML?
При вычислении выражений XPath результатом оказывается объект данных, который можно отнести к одной из следующих категорий : Узел Набор узлов Булево значение Строка Число
Дерево узлов, полученное с помощью XPath, очень похоже на древовидную структуру, соответствующую объектной модели документа DOM. Но об этом вы узнаете только из доклада по 10 ой теме, ну или изучив ее самостоятельно …
Семь узлов документа XPath XPath содержит : 1. Корень ( контейнер для всех остальных элементов ) 2. Элемент 3. Атрибут 4. Комментарий 5. Текст 6. Инструкции обработки 7. Пространство имен Что такое атрибут ?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:Remember to buy milk on the way home from work 11: urgent 12: 13: Как вы думаете, что здесь является корневым элементом ?
Дерево XPath Корневой элемент Комментарий Коммент –message01.xml Элемент status Атрибут Type=phone message Элемент note Инструкция обработки MessageProcessor command=AcceptMessage Комментарий Это инструкция обработки Текст urgent Текст Remember to buy milk on way home from work Пространство имен Urn:STY_XML_in_21Days:XPath Элемент Message
Тип узлаОписаниеСтроковое значение 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: Для проверки выражений 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ов Выбор //pencil[nomalize- Все элементы с атрибутом type Элементы, у которых нет атрибутов Pencil, у которого атрибут 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 //box/following-sibling::* //box/following::* Выбор всех потомков tray Только те рencil, среди потомков которых есть tray Элемент box, а так же следующий элемент Элемент box и все следующие элементы