Назначьте псевдоним пространству по умолчанию
При xmlns="urn:books" введите {"b":"urn:books"} и используйте //b:book. Запрос //book выбирает только элементы без пространства имён.
Инструменты XML
Запуск кнопкой или Ctrl/Cmd+Enter. После изменения текста, привязок или вида результата выполните запрос снова.
XML и запросы обрабатываются в этом браузере; документ не отправляется на сервер.
Используйте префикс ASCII, например {"b":"urn:books"}; он может отличаться от исходного.
XPath 1.0; ручной запуск через Ctrl/Cmd+Enter. Скалярные значения JSON записаны строками для сохранения NaN и Infinity.
Результат устарел. Повторите запрос для экспорта.
XPath тестер помогает найти причину, когда запрос работает на примере, но ничего не находит в настоящем XML. Часто отличаются пространство имён по умолчанию, условие атрибута или глубина элемента.
Здесь можно проверить XPath без предварительного форматирования. XPath выражения используют исходный текст, а XML узлы сохраняют значимые пробелы, поэтому сравнение не подменяет документ очищенной копией.
XPath тестер показывает одни и те же заголовки как фрагменты XML, текстовые значения или абсолютные пути. Так можно отличить выбор элемента от извлечения его содержимого, не меняя исходник.
Свяжите b с urn:books и используйте //b:book, даже если в документе другой префикс. Элементы с одинаковым локальным именем, но разными URI остаются разными.
При xmlns="urn:books" введите {"b":"urn:books"} и используйте //b:book. Запрос //book выбирает только элементы без пространства имён.
Текстовый вид получает полное строковое значение элемента, включая потомков. //title/text() выбирает непосредственные текстовые узлы; при смешанном содержимом результаты могут различаться.
Изменение XML, выражения, привязок или вида отключает экспорт. Выполните запрос заново. Предпросмотр добавляет по 50 результатов, а копирование и скачивание включают весь успешный результат.
Помимо наборов узлов поддерживаются string(//title), count(//book) и boolean(//missing). JSON хранит тип и строковые значения: NaN и Infinity не превращаются незаметно в null.
//book[@id="b1"] отбирает элементы, //@id извлекает атрибуты, //book[price>15]/title проверяет числовое условие. Ноль совпадений считается успехом: count равен 0, values содержит пустой массив.
Позиции различают одноимённых соседей. Для элементов с пространством имён используются local-name() и namespace-uri(), поэтому путь не зависит от настроенного префикса. После изменения структуры документа позиции могут сместиться.
Выберите элемент и переключитесь на текстовые значения, чтобы получить текст вместе с потомками. //title/text() выбирает непосредственные текстовые узлы, а string(//title) возвращает значение только первого заголовка.
Задайте в JSON привязку, например {"b":"urn:books"}, и используйте //b:book. Префикс может отличаться от исходного, но URI должен совпадать. Пространство по умолчанию не применяется к именам без префикса в XPath 1.0.
Для содержимого элемента используйте текстовый вид или string(путь). При смешанной разметке это включает текст дочерних элементов. Если нужны только прямые текстовые узлы, добавьте /text() к пути.
Для чтения атрибута используйте //book/@id, для фильтра — //book[@id="b1"]. Регистр важен. Атрибут без префикса не наследует пространство имён по умолчанию.
Нет. Выполнение использует настоящий XPath 1.0 браузера. Для matches() и других функций новых версий нужен другой движок; отказ выражения не означает ошибку XML.
Остался вопрос?
XPath тестер показывает тип результата и привязки пространств имён. Сохраните удачное выражение вместе с XML-примером, чтобы позже воспроизвести найденное различие.