Тестер XPath
Документ XML или HTML
Вставьте XML или HTML объёмом не более 1 000 000 символов. Вычисление выполняется в этом браузере с использованием XPath 1.0.
Абсолютное или относительное выражение XPath 1.0. Префиксы, объявленные в документе, регистрируются автоматически; пространство имён по умолчанию доступно через префикс d.
Писать XPath для скрейпинга или XSLT без живой песочницы значит действовать наугад. Этот тестер принимает ваш XML или HTML в одном поле и выражение в другом, вычисляет XPath 1.0 движком вашего собственного браузера и выводит каждый найденный узел с типом, атрибутами, текстовым содержимым и сериализованной разметкой. Скалярные выражения вроде count(//book) возвращают своё значение напрямую, а префиксы пространств имён, объявленные в документе, регистрируются автоматически. Всё выполняется в вашем браузере: документ никуда не загружается.
Как проверить выражение XPath
-
1
Вставьте XML или HTML
Автоопределение переключается на нестрогий разбор HTML, когда видит doctype или корневой элемент HTML; режим XML или HTML можно задать и принудительно.
-
2
Введите свой XPath
Абсолютное (`/library/book`) или относительное (`//div[@class='card']`), любое выражение XPath 1.0.
-
3
Вычислите
Движок XPath вашего браузера выполняет запрос локально; на сервер ничего не отправляется.
-
4
Изучите результаты
Каждое совпадение показывает тип узла, атрибуты, усечённый текст и сериализованную разметку; выводится до 200 совпадений.
Основы XPath 1.0
| Выражение | Что выбирает |
|---|---|
/books/book |
Элементы <book>, дочерние для корня <books> |
//book |
Каждый <book> в любом месте документа |
//book[@id='42'] |
<book> с атрибутом id, равным 42 |
//book[1] |
Первый <book> у каждого родителя (не в документе) |
(//book)[1] |
Первый <book> во всём документе |
//book[title='1984'] |
<book>, у которого текст <title> равен «1984» |
//book/@id |
Атрибуты id всех элементов <book> |
//book[position() > 1] |
Все <book>, кроме первого |
//book[last()] |
Последний <book> у каждого родителя |
Скалярные выражения тоже работают: count(//book) возвращает число, string(//title) строку, а boolean(//book[@id]) истину или ложь. Тестер показывает эти значения напрямую, а не список узлов.
Распространённые оси помимо child
ancestor::, все предкиfollowing-sibling::, соседние узлы после текущегоpreceding-sibling::, соседние узлы до негоdescendant::, все потомкиattribute::(сокращённо@), атрибуты текущего узлаparent::(сокращённо..), родительский элемент
Особенности HTML
HTML не является строгим XML, поэтому тестер разбирает его нестрого, HTML-парсером вашего браузера, а не строгим XML-парсером. Режим HTML определяется автоматически по <!DOCTYPE html> или корневому <html>, а селектором режима документа можно принудительно включить любой из режимов. В режиме HTML имена тегов и атрибутов приводятся к нижнему регистру, поэтому пишите XPath строчными буквами: //div[@class], а не //DIV[@CLASS].
Пространства имён
XML с пространствами имён требует регистрации префиксов:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
Тестер просматривает документ в поисках объявлений xmlns и регистрирует каждый префикс автоматически, так что //content:encoded просто работает. У пространства имён по умолчанию (простого xmlns="...") нет префикса в документе, поэтому тестер привязывает его к префиксу d: элементы <item> в ленте с пространством имён по умолчанию выбираются через //d:item. Зарегистрированные пространства имён выводятся рядом с результатами.
Что этот тестер не вычисляет
Браузеры вычисляют XPath 1.0, тот же диалект, что используют большинство инструментов скрейпинга. Возможности XPath 2.0 и новее, такие как matches(string, regex), tokenize(string, delimiter), выражения for ... return и операторы последовательностей, в него не входят; вы найдёте их в инструментах XSLT 2.0/3.0. XPath 1.0 остаётся самым переносимым вариантом для веб-скрейпинга.
Советы по проверке
- Начинайте широко и сужайте. Сначала
//div, затем//div[@class], затем конкретное значение класса. - Проверяйте объявления пространств имён. Большинство ошибок вида «почему мой XPath ничего не возвращает?» связано с пространствами имён; загляните в список зарегистрированных пространств имён.
- Следите за регистром. XML чувствителен к регистру. Режим HTML приводит имена к нижнему регистру.
- Проверяйте string() при извлечении текста.
//p/text()иstring(//p)дают разное, когда внутри есть вложенная разметка.
Часто задаваемые вопросы
Нет, только XPath. Большинство браузеров поддерживают оба варианта через document.querySelectorAll (CSS) и document.evaluate (XPath). Используйте тот, что понятнее для задачи.
При разборе HTML имена тегов и атрибутов приводятся к нижнему регистру. Убедитесь, что ваш XPath написан строчными буквами: //div[@class], а не //DIV[@CLASS]. Проверьте и режим: принудительный XML на небрежном HTML завершается ошибкой разбора, а режим HTML разбирает его нестрого.
Префиксы, объявленные в документе, регистрируются для вашего выражения автоматически. Пространство имён по умолчанию привязывается к префиксу d, поэтому //d:item выбирает элементы <item> в документе с пространством имён по умолчанию. Активные привязки выводятся вместе с результатами.
Нет. Документ и выражение вычисляются движком XPath вашего собственного браузера и не отправляются на наш сервер, не сохраняются и не добавляются в адрес страницы; они существуют только в сеансе этого браузера, чтобы многошаговый режим мог показать ваши результаты.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор цветовой палитры
Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.