Как проверить выражение XPath
- Вставьте свой XML, откройте файл или воспользуйтесь примером — каталогом товаров.
- Введите выражение XPath или нажмите на один из примеров. Результат обновляется по мере ввода, а клавиша Enter выполняет выражение сразу.
- Изучите результат: количество найденных узлов с их типом и содержимым или число, строку либо логическое значение, которое возвращает выражение.
Шпаргалка по XPath
| Выражение | Что выбирает |
|---|---|
/catalog | Корневой элемент catalog |
//product | Все элементы product на любой глубине |
/catalog/product/name | name каждого товара, шаг за шагом от корня |
//product/@id | Атрибут id каждого товара |
//product[@category='books'] | Товары, у которых атрибут category равен books |
//product[price > 20] | Товары с ценой выше 20 (сравнение как чисел) |
//product[contains(name, 'USB')] | Товары, в названии которых есть «USB» (с учётом регистра) |
//product[not(tags)] | Товары без дочернего элемента tags |
(//product)[1] | Первый товар в документе |
//product[1] | Первый товар внутри каждого родительского элемента |
//product[last()] | Последний товар внутри каждого родительского элемента |
//name/text() | Текстовые узлы внутри name |
//price/.. | Родительский элемент каждого price |
//*[local-name()='product'] | Элементы product в любом пространстве имён |
count(//product) | Количество товаров |
sum(//price) | Сумма всех цен |
string(//product[1]/name) | Название первого товара в виде строки |
Пространства имён в XPath
В XPath 1.0 нет пространства имён по умолчанию. В документе с xmlns="…", например в карте сайта или счёте NF-e, выражение //url ничего не находит, потому что элементы принадлежат этому пространству имён. Поэтому тестер привязывает пространство имён по умолчанию к префиксу x: (или d:, если x уже занят), и выражение //x:url/x:loc работает. Префиксы, объявленные в документе, например cfdi: в счёте CFDI, можно использовать как есть. В инструментах без настройки пространств имён везде работает //*[local-name()='url'].
Часто задаваемые вопросы
Какую версию XPath поддерживает тестер?
XPath 1.0 — версию, встроенную во все браузеры и большинство XML-библиотек. Функции XPath 2.0 и более поздних версий, например matches(), lower-case() или string-join(), недоступны.
Почему XPath ничего не возвращает?
Чаще всего причина в пространстве имён по умолчанию (используйте префикс x:, указанный под примерами), в разном регистре букв — XPath чувствителен к регистру — или в позициях, которые начинаются с 1, а не с 0.
Сколько результатов показывается?
Подсчитываются все совпадения, а первые 500 выводятся списком с типом узла и содержимым.
Загружается ли мой XML на сервер?
Нет. XML разбирается и обрабатывается в вашем браузере. Через наш сервер загружается только файл по указанному вами URL.