Баннер мобильный (1) Пройти тест

XPath

Глоссарий

1 февраля 2024

Поделиться

Скопировано

Содержание

    XPath — это язык запросов для навигации по разметке XML. Эта разметка используется в Excel-таблицах, RSS-рассылках и многих других форматах. Язык запросов XPath нужен, чтобы искать в таких таблицах и выгрузках нужную информацию.

    XPath расшифровывается как XML Path Language — «язык путей к XML». Фактически, с помощью этого языка описывают путь, по которому можно добраться до какого-то участка разметки. Запрос находит по описанному пути нужные элементы, возвращает их или преобразует.

    XML — довольно старый формат. Сейчас с ним работают реже, чем раньше, но на нем до сих пор основаны многие важные технологии. XPath тоже появился еще в 90-х и оказался довольно простым, но мощным инструментом, поэтому сохранил актуальность даже сегодня.

    Для чего нужен XPath

    Таблицы и наборы данных в формате XML могут быть довольно большими, на сотни и даже тысячи записей. Разбираться в этом вручную долго и сложно. Поэтому, чтобы найти какую-то запись или элемент, используют специальные инструменты. XPath — один из них. Он помогает:

    • быстро переходить к нужному элементу страницы или XML-документа;
    • находить элементы по параметрам и свойствам;
    • работать с форматом XSLT, который используется для трансформации XML;
    • искать элементы в HTML, то есть в верстке веб-страницы;
    • создавать выборки из содержимого документа по определенным критериям.

    Кроме таблиц и XML-документов, XPath используют при работе с веб-страницами. С ним можно искать какие-то элементы страницы по тегам и свойствам. А еще XPath пользуется технология XSLT — она преобразует входные XML в другие XML-документы или в веб-документы XHTML по заданным правилам. Для работы с XSLT знать XPath обязательно.

    Кто использует XPath

    • Тестировщики, чтобы быстро переходить по участкам страницы и находить на ней нужные элементы.
    • Разработчики, которым бывает нужно парсить какие-то страницы — «разбирать» на составляющие и сохранять нужную информацию. Это удобно делать с XPath.
    • SEO-специалисты, которые часто работают с большими массивами данных в формате XML, занимаются парсингом, собирают ключевые слова и метаинформацию.
    • Верстальщики, которым тоже может понадобиться быстрый доступ к какому-то элементу веб-страницы, чтобы не искать его вручную.

    XPath может пригодиться и другим IT-специалистам или сотрудникам диджитал-сферы — всем, кому периодически бывает нужно находить и выгружать информацию с веб-страниц или из XML-документов.

    Основные понятия XML для работы с XPath

    В работе с XPath нужно знать несколько основных терминов — они описывают, как структурируется XML-документ. 

    Узлы. Узлами называют разнообразные части страницы или документа:

    • отдельные элементы и записи;
    • тексты;
    • атрибуты;
    • инструкции для обработки какой-то информации;
    • комментарии;
    • пространства имен;
    • другие сущности на странице.

    Весь XML-документ по сути представляет собой дерево узлов. Это значит, что все элементы группируются в древовидную структуру, которая строится по определенным правилам. Существует так называемый корневой элемент — от него «зависят» все остальные. В верстке он выглядит как тег, внутрь которого обернуты все другие теги на странице.

    Предки и потомки. Структура иерархична: от корневого элемента как бы «отпочковываются» другие, зависящие от него. У узлов внутри структуры есть предки и потомки:

    • предки — узлы, которые находятся «выше» и от которых зависит конкретный узел. Частный случай — родитель, узел на один «уровень» выше. У каждого элемента только один родитель;
    • потомки — узлы, которые зависят и наследуются от конкретного узла. У элемента может быть ноль, один или больше потомков.

    Атомарные узлы. Это узлы, которые не зависят от других, не имеют ни потомков, ни родителей. Они фактически одиночные. Как пример — блок текста на странице, не связанный с какими-то другими узлами.

    Абсолютные и относительные пути в XPath

    Чтобы найти что-то в XML-документе с помощью XPath, нужно написать запрос. Самый простой способ — указать путь к элементу. И путь этот может быть абсолютным или относительным.

    Абсолютный путь. Нужно указать полный путь к элементу начиная с корня — он обозначается знаком /. Фактически мы сами говорим XPath, по какому пути находится элемент. А тот просто его находит и возвращает. 

    Относительный путь. Такой запрос может искать элемент из любого места в документе, а еще ему можно задавать условия — о них мы расскажем чуть ниже. Запрос по относительному пути начинается с двойного слэша //, потом пишется элемент или путь к нему.

    Как выглядят запросы в XPath

    Синтаксис запросов XPath довольно простой. Типичный запрос выглядит примерно так:

    //some_tag[@attribute=’value’] 

    Двойной слэш означает, что мы ищем что-то по относительному пути, а текст после него — то, что именно ищем. В этом случае XPath найдет узел с именем some_tag, у которого есть атрибут со значением value.

    Имя тега. Вместо some_tag можно указать разные значения, например;

    • * — любой тег;
    • input — тег элемента для ввода данных;
    • a — ссылка, и так далее.

    Туда можно подставить любое имя узла, которое есть в документе и которое нужно найти, скажем title или name.

    То же самое касается атрибутов и их значений. Можно использовать все, что есть в XML или HTML. Скажем, главный атрибут тега a, то есть ссылки, — href: он описывает, по какому адресу ссылка ведет. А значением этого атрибута будет какой-то конкретный URL. 

    Предикаты. То, что находится в квадратных скобках, называется предикатом. Это какое-то условие, которому должен отвечать искомый тег. 

    • Предикаты могут быть простыми, например //some_tag[1] означает «найти первый элемент some_tag на странице». Тут нет знака @, потому что мы ищем не по атрибуту, а просто по номеру элемента. Кстати, в XPath нумерация начинается с 1, а не с 0, в отличие от языков программирования.
    • Чаще в предикатах пишут не просто номер элемента, а какой-то его атрибут. В таком случае перед именем атрибута нужно написать @, а после него — то, каким должно быть значение этого атрибута. 

    Операторы. В запросах можно использовать логические операторы AND, OR и NOT. Синтаксис позволяет писать их словами, например [@lang=’en’ and @type=’text’] — вернуть элемент, который является текстом и при этом написан на английском языке. А еще вместо знака равенства можно использовать другие операторы сравнения. Например, корректной будет не только запись [@value = 11], но и [@value > 10].

    Функции. В XPath можно искать не только по названиям и атрибутам тегов. Скажем, в документе есть элемент title с текстом «Котики», и мы хотим найти именно его. Обычные запросы, о которых мы говорили раньше, найдут элемент по расположению или атрибутам, но не по содержимому. А вот для поиска по значению можно использовать функции. 

    • Например, чтобы найти текст внутри тега, используют функцию text(). Выглядит это так: //title[text()=’Котики’].
    • А если нам нужно найти элемент не по полному тексту, а по его части, можно использовать функцию contains(). Примерно так: //title[contains()=’Кот’].

    XPath и CSS-селекторы: сходства и различия

    XPath используют в том числе для навигации по HTML-документам. Но примерно ту же роль играют CSS-селекторы и команды JavaScript. Например, с помощью JS можно найти элемент HTML по его CSS-свойствам и классам. Но эти две технологии поиска — разные, и в некоторых ситуациях XPath удобнее:

    • XPath умеет искать и потомков по родителям, и родителей по потомкам. А селекторы однонаправленные: в них нельзя напрямую обратиться к родителю какого-то элемента.
    • XPath может искать не только по самим тегам, но и по их содержимому — это как раз делается с помощью функций. С помощью селекторов так сделать нельзя. Они анализируют только теги, атрибуты и их значения.

    На практике обычно используют обе технологии. Что-то удобнее искать с помощью JS и селекторов, а что-то — с использованием XPath. Поэтому специалисту, который работает с вебом, лучше знать оба способа.

    Как начать изучать XPath

    Чтобы лучше ориентироваться в XPath, рекомендуем изучить, как работают языки разметки XML и HTML, какая у них структура и логика. После этого многое станет понятнее. Сам по себе XPath довольно простой: сложности могут возникнуть только с некоторыми функциями, но и тут со временем придет понимание. Главное — изучить базу.

    Другие термины на «X»

    Все термины

    Поделиться

    Скопировано

    0 комментариев

    Комментарии