Открыть сервис

XPath

XPath (XML Path Language) — это язык запросов для навигации по структурированным документам, таким как XML и HTML, а также для извлечения данных из них. XPath использует синтаксис, основанный на путях (path expressions), для указания местоположения узлов (элементов, атрибутов, текста) в древовидной модели документа. Язык является ключевым компонентом технологий XSLT (XSL Transformations) и XQuery, а также широко применяется в веб-скрапинге, тестировании программного обеспечения и обработке данных.

История

XPath был разработан консорциумом W3C (World Wide Web Consortium) как часть семейства стандартов XML. Первая версия, XPath 1.0, была опубликована 16 ноября 1999 года. Она стала основой для XSLT 1.0 и XPointer. Основной целью было создание простого и эффективного способа адресации частей XML-документа, который был бы удобен как для машинной обработки, так и для использования человеком.

Вторая версия, XPath 2.0, вышла 23 января 2007 года. Она значительно расширила возможности языка: добавила поддержку строгой типизации (на основе XML Schema), более мощные функции для работы со строками, числами и датами, а также поддержку последовательностей (sequences) вместо наборов узлов. XPath 2.0 был тесно интегрирован с XSLT 2.0 и XQuery 1.0.

Текущая версия, XPath 3.0, была опубликована 8 апреля 2014 года, а XPath 3.1 — 21 марта 2017 года. Эти версии добавили поддержку карт (maps) и массивов (arrays), анонимных функций, более богатые возможности для работы с регулярными выражениями и JSON. XPath 3.1 стал частью XSLT 3.0 и XQuery 3.1.

Основные понятия

Модель данных

XPath оперирует с абстрактной моделью документа, построенной на основе DOM (Document Object Model). Документ представляется в виде дерева узлов, где каждый узел имеет тип. Основные типы узлов:

Пути (Path Expressions)

Основным синтаксическим элементом XPath является путь, который состоит из последовательности шагов (steps), разделённых символом / (косая черта). Путь может быть:

Оси (Axes)

Каждый шаг пути может использовать ось (axis), которая определяет направление навигации по дереву относительно контекстного узла. Основные оси:

Пример с осью: //author — сокращение от /descendant-or-self::node()/child::author — выбирает все элементы author в документе.

Предикаты (Predicates)

Предикаты — это условия, заключённые в квадратные скобки [], которые фильтруют набор узлов. Они позволяют выбирать узлы по их положению, значению, наличию атрибутов и т.д.

Примеры:

Функции

XPath включает множество встроенных функций для работы с различными типами данных:

Синтаксис и примеры

Сокращённый синтаксис (Abbreviated Syntax)

Наиболее распространённая форма XPath использует сокращения:

Примеры выражений

Рассмотрим XML-документ:

``xml <catalog> <book id="b1" lang="en"> <title>XML Programming</title> <author>John Doe</author> <price>29.99</price> </book> <book id="b2" lang="ru"> <title>Основы XPath</title> <author>Иван Петров</author> <price>15.00</price> </book> </catalog> ``

Выражения XPath и их результаты:

Применение

XSLT

XPath является языком запросов в XSLT. XSLT-преобразования используют XPath для выборки узлов из исходного XML-документа и для вычисления значений, которые затем вставляются в результирующий документ. Например, в XSLT-шаблоне выражение select="book/price" указывает, какие узлы обрабатывать.

Веб-скрапинг и парсинг

В веб-скрапинге XPath активно используется для извлечения данных из HTML-страниц. Библиотеки для парсинга, такие как lxml (Python), HtmlAgilityPack (.NET) и jsdom (Node.js), поддерживают XPath. Например, для извлечения всех ссылок со страницы можно использовать выражение //a/@href.

Тестирование ПО

XPath применяется в автоматизированном тестировании веб-приложений (например, с помощью Selenium WebDriver) для поиска элементов на странице. XPath позволяет создавать точные и гибкие локаторы, особенно когда идентификаторы или классы элементов динамически меняются.

Обработка XML-данных

XPath используется в базах данных с поддержкой XML (например, Oracle, PostgreSQL, SQL Server) для запросов к XML-колонкам. В SQL Server функция query() и value() принимают XPath-выражения для извлечения данных.

Инструменты

Для отладки и тестирования XPath-выражений существует множество инструментов:

Ограничения и критика

Несмотря на широкое распространение, XPath имеет ряд ограничений:

Тем не менее, XPath остаётся мощным и гибким инструментом для работы с XML и HTML, особенно в тех областях, где требуется точная навигация по структуре документа.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →