Скорочений синтаксис XPath. Приклади xpath-запитів до html Застосування осі following
XPath використовується для навігації за елементами та атрибутами XML-документа. XPath є одним із основних елементів у стандарті XSLT консорціуму W3C.
1 Що таке XPath
Вирази XPath
XPath використовує шляхи для вибору окремих вузлів або набору вузлів у документі XML. Ці вирази дуже схожі на вирази, які ви бачите, коли працюєте з традиційною файловою системою комп'ютера.
Стандартні функції XPath
XPath включає більше 100 вбудованих функцій. Є функції для рядкових та числових значень, дати та часу, порівняння вузлів та маніпулювання QName, управління послідовностями, булевих значень та багато іншого.
XPath використовується в XSLT
XPath є одним із основних елементів у стандарті XSLT. Без знання XPath ви не зможете створювати XSLT-документи.
2 Термінологія XPath
Вузли
У XPath існує сім видів вузлів: елемент, атрибут, текст, простір імен, інструкції обробки, коментарі та вузли документа. XML-документи обробляються як дерев вузлів. Верхній елемент дерева називається кореневим елементом. Подивіться на наступний документ XML:
Приклад вузлів у документі XML вище:
Атомарні значення
Атомарні значення є вузлами, які мають дітей чи батьків. Приклад атомарних значень:
J. K. Rowling "en"
Елементи
Елементи – це атомарні значення або вузли.
3 Відносинивузлів
Батько
Кожен елемент та атрибут має одного з батьків. У наступному прикладі елемент "книга" (book) є батьком елементів "назва" (title), "автор" (author), "рік" (year) і "ціна" (price):
Нащадки
Вузли елементів можуть мати нуль, один або більше нащадків. У наступному прикладі елементи "назва", "автор", "рік" і "ціна" - вони всі нащадки елемента книги:
Елементи одного рівня
Це вузли, які мають одного й того самого батька. У наступному прикладі елементи "назва", "автор", "рік" і "ціна" всі є елементами одного рівня:
Пращури
Батько вузла, батько батька вузла тощо. У наступному прикладі предки елемента «назва» (title) – це елементи «книга» (book) та «книгарня» (bookstore):
Нащадки
Діти вузла, діти дітей вузла тощо. У наступному прикладі нащадками елемента «книгарня» є елементи «книга», «назва», «автор», «рік» і «ціна»:
4 Синтаксис XPath
XPath використовує шляхи для вибору вузлів або безлічі вузлів у документі XML. Вузол можна вибрати, слідуючи шляху або кроками. Ми будемо використовувати наступний XML-документ у наведених нижче прикладах.
Вибір вузлів
За допомогою виразів XPath для вибору вузлів у документі XML можна вибрати вузол, дотримуючись шляхів або кроків. Найкорисніші вирази шляху перераховані нижче:
У наведеній нижче таблиці перераховані деякі шляхи виразу та результат виконання виразу:
Вираз XPath | Результат |
---|---|
bookstore | Вибирає всі вузли з ім'ям "bookstore" |
/bookstore | Вибирає кореневий елемент книгарні Примітка:Якщо шлях починається з косої риси (/), він завжди є абсолютним шляхом до елемента! |
bookstore/book | Вибирає всі елементи "книга" (book), які є нащадками елемента "книгарня" (bookstore) |
//book | Вибирає всі елементи «книга» незалежно від того, де вони знаходяться у документі |
bookstore//book | Вибирає всі елементи «книжка», які є нащадком елемента «книгарня», незалежно від того, де вони знаходяться під елементом «книгарня» |
//@lang | Вибирає всі атрибути, що називаються "lang" |
Предикати
Предикати використовують для пошуку специфічного вузла або вузла, який містить специфічне значення. Предикати завжди оздоблюються квадратними дужками. У наведеній нижче таблиці наведено деякі вирази шляху з предикатами, і результат виразу:
Вирази XPath | Результат |
---|---|
/bookstore/book | Вибирає перший елемент "книга", який є нащадком елемента "книгарня". Примітка:У IE 5,6,7,8,9 перший вузол має індекс , але відповідно до рекомендацій W3C, це . Для вирішення цієї проблеми в IE, задається опція "SelectionLanguage" для XPath: На JavaScript: xml.setProperty("SelectionLanguage", "XPath"); |
/bookstore/book | Вибирає останній елемент "книга" (book), який є дочірнім елементом елемента "книгарня" (bookstore) |
/bookstore/book | Вибирає передостанній елемент "книга", який є дочірнім елементом елемента "книгарня" |
/bookstore/book | Вибір перших двох елементів "книга", які є нащадками елемента "книгарня" |
//title[@lang] | Вибирає всі елементи "назва" (title), які мають атрибут з ім'ям "lang" |
//title[@lang="en"] | Вибирає всі елементи "назва", які мають атрибут "мова" зі значенням "en" |
/bookstore/book | Вибирає всі елементи "книга" після елемента "книгарня", які мають елемент "ціна" зі значенням більше, ніж 35.00 |
/bookstore/book/title | Вибирає всі елементи "назва" книги елемента "книгарня", які мають елемент "ціна" зі значенням більше, ніж 35.00 |
Вибір невідомих вузлів
Спеціальні символи XPath можна використовувати для вибору невідомих XML вузлів.
У наведеній нижче таблиці ми перерахували деякі шляхи вираження та результати виразів:
Вибір кількох шляхів
За допомогою оператора | у виразах XPath можна вибрати кілька шляхів. У таблиці нижче наведено кілька виразів шляхів та результати їх застосування:
5 Осі XPath
Ми будемо використовувати наступний документ XML далі в прикладі.
Осі визначають набори вузлів щодо поточного вузла.
Назва осі | Результат |
---|---|
ancestor | Вибирає всіх предків (батьків, прабатьків тощо) поточного вузла |
ancestor-or-self | Вибирає всіх предків (батьків, прабатьків тощо) поточного вузла і сам поточний вузол |
attribute | |
child | |
descendant | Вибирає всіх нащадків (дітей, онуків тощо) поточного вузла |
descendant-or-self | Вибирає всіх нащадків (дітей, онуків тощо) поточного вузла та сам поточний вузол |
following | Вибирає все у документі після закриття тега поточного вузла |
following-sibling | Вибирає всі вузли одного рівня після поточного вузла |
namespace | Вибирає всі вузли в даному просторі імен поточного вузла (namespace) |
parent | Вибирає батька поточного вузла |
preceding | Вибирає всі вузли, які з'являються перед поточним вузлом у документі, за винятком предків, вузлів атрибутів та вузли простору імен |
preceding-sibling | Вибирає всіх братів та сестер до поточного вузла |
self | Вибирає поточний вузол |
6 Виразишляхи вибірки
Шлях позиціонування може бути абсолютним або відносним. Абсолютний шлях розташування починається з косої межі (/), а відносний – ні. В обох випадках шлях вибірки складається з одного або декількох кроків, розділених косою межею:
Абсолютний шлях розташування:
/step/step/...
Відносний шлях вибірки розташування:
Step/step/...
Кожен крок оцінюється по вузлах у поточному наборі вузлів. Крок складається з:
- вісь (визначає деревоподібний зв'язок між обраними вузлами та поточним вузлом);
- перевірка вузла (ідентифікує вузол у межах осі);
- нуль або більше предикатів (для подальшого уточнення обраного набір вузлів)
Синтаксис кроку вибірки такий:
Axisname::nodetest ім'яОсі::перевіркаВузла[предиктор]
приклад | Результат |
---|---|
child::book | Вибирає всі вузли "книга" (book), які є нащадками поточного вузла |
attribute::lang | Вибирає атрибут "мова" (lang) поточного вузла |
child::* | Вибирає всіх нащадків поточного вузла |
attribute::* | Вибирає всі атрибути поточного сайту |
child::text() | Вибирає всі текстові вузли поточного вузла |
child::node() | Вибирає всіх найближчих нащадків поточного вузла |
descendant::book | Вибирає всіх нащадків поточного вузла |
ancestor::book | Вибирає всіх предків "книга" (books) поточного вузла |
ancestor-or-self::book | Вибирає всіх предків "книга" (book) поточного вузла - і поточний вузол, якщо він також "книга" (book) |
child::*/child::price | Вибирає всі нащадки "ціна" (price) через один рівень від поточного вузла |
7 Оператори XPath
Вирази XPath повертають як набір вузлів, рядки, булеві чи числові значення. Нижче наведено список операторів, що використовуються у виразах XPath:
Оператор | Опис | приклад |
---|---|---|
| | Обчислює два набори вузлів | //book | //cd |
+ | Додавання | 6 + 4 |
- | Віднімання | 6 - 4 |
* | множення | 6 * 4 |
div | Поділ | 8 div 4 |
= | Рівність | price=9.80 |
!= | Нерівність | price!=9.80 |
< | Менше ніж | price<9.80 |
<= | Менше або дорівнює | price≤9.80 |
> | Більше ніж | price>9.80 |
>= | Більше або дорівнює | price≤9.80 |
or | Або | $9.80 або $9.70 |
and | І | price>9.00 and price<9.90 |
mod | Залишок від ділення | 5 mod 2 |
8 Приклади XPath
Давайте розглянемо базовий синтаксис XPath на кількох прикладах. Ми будемо використовувати наступний XML документ "books.xml" у прикладах нижче:
Завантаження документа XML
Використовуйте XMLHttpRequest для завантаження документів XML, який підтримується більшістю сучасних браузерів:
Var xmlhttp=new XMLHttpRequest()
Код для застарілих браузерів Microsoft (IE 5 та 6):
Var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
Вибір вузлів
На жаль, робота з XPath в Internet Explorer та інших браузерах може відрізнятися. У прикладах ми будемо використовувати код, який повинен працювати в більшості браузерів. Internet Explorer використовує метод "selectNodes()" для вибору вузлів XML документа:
XmlDoc.selectNodes(xpath);
Firefox, Chrome, Opera та Safari використовують метод evaluate() для вибору вузлів із XML документа:
XmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE, null);
Вибір всіх назв
Наступний приклад вибирає всі вузли заголовків:
/bookstore/book/title
Вибір заголовка першої книги
Наступний приклад вибирає заголовок першого вузла "книга" після елемента "книгарня" (bookstore):
/bookstore/book/title
Вибір усіх цін
Наступний приклад вибирає текст усіх вузлів "ціна" (price):
/bookstore/book/price
Вибирає вузли з ціною >35
Наступний приклад вибирає всі вузли з цінами вище 35:
/bookstore/book/price
Вибір вузлів заголовків із ціною >35
Наступний приклад вибирає всі вузли заголовків з ціною вище 35:
/bookstore/book/title
Xpath - це мова запитів до елементів xml або xhtml документа. Також як SQL, xpath є декларативною мовою запитів. Щоб отримати дані, що цікавлять, необхідно всього лише створити запит, що описує ці дані. Усю «чорну» роботу виконає інтерпретатор мови xpath.
Дуже зручно, чи не так? Давайте подивися які можливості пропонує xpath для доступу до сайтів веб-сторінок.
Створення запиту до сайтів веб-сторінок
Пропоную вашій увазі невелику лабораторну роботу, під час якої я продемонструю створення xpath запитів до веб-сторінки. Ви зможете повторити наведені мною запити та, найголовніше, спробуєте виконати свої. Я сподіваюся, що завдяки цьому стаття буде однаково цікава новачкам та програмістам знайомим із xpath по xml.Для лабораторної нам знадобляться:
- Веб-сторінка xhtml;
- браузер Mozilla Firefox із доповненнями;
- firebug;
- firePath;
(ви можете використовувати будь-який інший браузер з візуальною підтримкою xpath)
- небагато часу.
Як веб-сторінку для проведення експерименту пропоную головну сторінку сайту консорціуму всесвітньої павутини ("http://w3.org"). Саме ця організація розробляє мови xquery(xpath), специфікацію xhtml та багато інших стандартів інтернету.
Завдання
Отримати з xhtml-коду головної сторінки w3.org інформацію про конференції консорціуму за допомогою запитів xpath.Почнемо написання xpath запитів.
Перший Xpath запит
Відкриваємо закладку Firepath у FireBug, виділяємо із селектором елемент для аналізу, натискаємо: Firepath створив xpath запит до вибраного елемента.Якщо ви виділили заголовок першої події, то запит буде таким:
Після видалення зайвих індексів запит буде відповідати всім елементам типу заголовок.
Firepath підсвічує елементи, які відповідають запиту. Ви можете побачити, які вузли документа відповідають запиту.
Запит на отримання інформації про місця проведення конференцій:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p
Так ми отримаємо список спонсорів:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p
Синтаксис xpath
Повернімося до створених запитів і розберемося в тому, як вони влаштовані.Розглянемо детально перший запит
У цьому запиті я виділив три частини для показу можливостей xpath. (Поділ на частини уловне)
Перша частина
.//
- рекурсивний спуск на нуль чи більше рівнів ієрархії від контексту. У нашому випадку поточний контекст – це корінь документа
Друга частина
*
- будь-який елемент,
[@id="w3c_home_upcoming_events"]- Предикат, на основі якого здійснюємо пошук вузла, що має атрибут id рівним "w3c_home_upcoming_events". Ідентифікатори елементів XHTML мають бути унікальними. Тому запит «будь-який елемент з конкретним ID» повинен повернути єдиний вузол, який ми шукаємо.
Ми можемо замінити *
на точне ім'я вузла divу цьому запиті
div[@id="w3c_home_upcoming_events"]
Таким чином, ми спускаємось по дереву документа до потрібного нам вузла div[@id="w3c_home_upcoming_events"]. Нас абсолютно не хвилює, з яких вузлів складається DOM-дерево і скільки рівнів ієрархії залишилося вищим.
Третя частина
/ul/li/div/p/a-xpath-шлях до конкретного елемента. Шлях складається з кроків адресації та умови перевірки вузлів (ul, li тощо). Кроки поділяються символом "/" (коса межа).
Колекції xpath
Не завжди вдається отримати доступ до вузла за допомогою предикату або кроків адресації. Дуже часто на одному рівні ієрархії знаходиться наскільки вузлів однакового типу і необхідно вибрати лише перші або тільки другі вузли. Для таких випадків передбачено колекції.Колекції xpath дозволяють отримати доступ до елемента за його індексом. Індекси відповідають порядку, в якому елементи були представлені у вихідному документі. Порядковий номер у колекціях відраховується від одиниці.
Виходячи з того, що «місце проведення» завжди другий параграф після «назви конференції», отримуємо наступний запит:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p
Де p – другий елемент у наборі кожного вузла списку /ul/li/div.
Аналогічно, список спонсорів ми можемо отримати запитом:
.//*[@id="w3c_home_upcoming_events"]/ul/li/div/p
Деякі функції хpath
У хpath існує багато функцій для роботи з елементами всередині колекції. Я наведу лише деякі з них.last():
Повертає останній елемент колекції.
Запит ul/li/div/p поверне останні параграфи для кожного вузла списку «ul».
Функцію first() не передбачено. Щоб отримати доступ до першого елемента, використовуйте індекс «1».
text():
Повертає тестовий вміст елемента.
.//a – отримуємо всі посилання з текстом "Archive".
position() і mod:
position() - повертає позицію елемента у множині.
mod – залишок від поділу.
Комбінацією цих функцій можемо отримати:
- не парні елементи ul/li
- парні елементи: ul/li
Операції порівняння
- < - логическое «меньше»
- > - логічне «більше»
- <= - логическое «меньше либо равно»
- >= - логічне «більше чи одно»
Самостійно
Спробуйте отримати:- парні URL-адреси посилання з лівого меню «Standards»;
- заголовки всіх новин, окрім першої з головної сторінки w3c.org.
Xpath у PHP5
$dom = новий DomDocument(); $dom->loadHTML($HTMLCode); $xpath = новий DomXPath($dom); $_res = $xpath->query(".//*[@id="w3c_home_upcoming_events"]/ul/li/div/p/a"); foreach($_res => $obj) ( echo "URL: ".$obj->getAttribute("href"); echo $obj->nodeValue; )На закінчення
На простий приклад ми побачили можливості xpath для доступу до вузлів веб-сторінок.Xpath є галузевим стандартом доступу до елементів xml і xhtml, xslt перетворень.
Ви можете використовувати його для парсингу будь-якої html-сторінки. Якщо вихідний html-код містить значні помилки в розмітці пропустіть його через
Сьогодні ми розглянемо тему використання XPath разом з PHP. Ви побачите приклади, як XPath значно скорочує кількість коду. Розглянемо використання запитів та функцій у XPath.
На початку, надам вам два типи документів: DTD та XML, на прикладі яких ми розглянемо функціонування PHP DOM XPath. Ось як вони виглядають:
Основні XPath запити
Простий синтаксис XPath дозволяє звертатися до елементів XML документа. Найбільш простим способом можна прописати шлях до бажаного елементу. Використовуючи XML документ, поданий вище, наступний XPath запит поверне колекцію поточних елементів, що знаходяться в елементі book:
//library/book
Ось так! Два сліші попереду визначають кореневий елемент документа, а один сліш здійснює перехід до дочірнього елемента book. Це просто і швидко, чи не так?
Але що, якщо ви хочете вибрати певний елемент book з безлічі? Припустімо, що вам потрібні книги «Певного автора». XPath запит для цього буде наступним:
//library/book/author/..
Ви можете використовувати text()у квадратних дужках для порівняння значення вузла. Також «/..» означає, що хочемо використовувати батьківський елемент (тобто. повертаємося однією вузол вище).
XPath запити здійснюються за допомогою однієї або двох функцій: query()і evaluate(). Обидві формують запит, але різниця в результаті, що повертається. query() завжди буде повертати DOMNodeList, у відмінності evaluate()буде повертати текстовий результат, якщо це можливо. Наприклад, якщо ваш XPath запит буде повертати кількість книг написаних певним автором, тоді query() поверне порожній DOMNodeList, evaluate() просто поверне число, ви можете використовувати це безпосередньо для отримання даних із вузла.
Код та переваги швидкості XPath
Давайте розглянемо простий приклад, який повертатиме кількість книг, написаних конкретним автором. Перший метод ми розглянемо так, як ми завжди робимо без використання XPath. Зараз ви зрозумієте, як це робиться без XPath і як це простіше робити з XPath.
domDocument->getElementsByTagName("author"); foreach ($elements as $element) ( if ($element->nodeValue == $author) ( $total++; ) ) return $number; )
Наступний метод повертає той самий результат, але використовується XPath для вибору тих книг, які написані певним автором.
domDocument); $result = $xpath->query($query); return $result->length; )
Зверніть увагу, нам не потрібно повторно перевіряти значення кожного елемента, щоб визначити, яким автором написана кожна книга. Але ми можемо спростити код, використовуючи XPath функцію count(), щоб підрахувати вміст елементів цього шляху.
domDocument); return $xpath->evaluate($query); )
Ми можемо отримати інформацію, яку нам потрібно за допомогою одного рядка XPath запиту. Немає потреби створювати безліч PHP фільтрів. Це найпростіший і найшвидший спосіб написати цей функціонал!
Зауважте, що evaluate() використовувався в останньому прикладі. Це тому, що функція count() повертає текстовий результат. Використовуючи query(), повернутися DOMNodeList, але він буде порожнім.
XPath варто використовувати, не тільки тому, що це робить ваш PHP код простіше, це також дає перевагу в швидкості виконання коду. Я помітив, що перша версія була на 30% швидшою в середньому, порівняно з другою. Але третя на 10% швидше за першу. Звичайно, це залежить від вашого сервера та запитів, які використовуєте. Використання XPath у його чистому вигляді, дає найбільші результати у швидкості та простоті написання коду.
XPath Функції
Ось кілька функцій, які можна використовувати з XPath. Також ви знайдете безліч ресурсів, що детально розглядають кожну доступну функцію. Якщо потрібно обчислювати DOMNodeList або порівнювати nodeValue (значення вузла), можна знайти відповідну XPath функцію, яка виключить використання зайвого PHP коду.
Ви вже знаєте це на прикладі count() функції. Давайте скористаємося функцією id() для отримання назв книг із заданими ISBN. Для цього потрібно використовувати наступний вираз:
id("isbn1234 isbn1235")/title
Зауважте, значення, які ви шукаєте, не варто укладати в дужки, тільки розділіть їх пробілами. Також не здумайте вліпити кому:
domDocument); $result = $xpath->query($query); $books = array(); foreach ($result as $node) ( $book = array("title" => $booknode->nodeValue); $books = $book; ) return $books; )
Обробка складних функцій XPath неймовірно проста.
Використання PHP функцій спільно з XPath
Іноді вам потрібно більше функціональності, яку не можуть надати стандартні функції XPath. На щастя, PHP DOM дозволяє взаємодіяти власним функціям PHP з запитами XPath.
Давайте розглянемо приклад, який повертає кількість слів у назві книги. У цій простій функції ми напишемо наступне:
domDocument); $result = $xpath->query($query); $title = $result->item(0)->getElementsByTagName("title") ->item(0)->nodeValue; return str_word_count($title); )
Але ми також можемо включити функцію str_word_count() безпосередньо в XPath запит. Це можна зробити за допомогою кількох кроків. Перш за все нам потрібно зареєструвати namespase з XPath об'єктом. PHP функції в XPath запитах викликаються за допомогою рядка php:functionString, після чого прописується ім'я бажаної функції. Також, namespace більш детально розглядається на http://php.net/xpath. Інші значення namespace будуть видавати помилку. Після цього нам потрібно викликати registerPHPFunctions(). Ця функція повідомляє PHP, що коли йде звернення через namespace "php:", цей виклик оброблятиме саме PHP.
Приблизний синтаксис виклику функцій буде таким:
php:functionString("nameoffunction", arg, arg...)
Давайте сумісне все це разом у наступному прикладі функції getNumberOfWords():
domDocument); //реєструємо php namespace $xpath->registerNamespace("php", "http://php.net/xpath"); //тепер php функції можуть викликатися в xpath запитах $xpath->registerPHPFunctions(); $query = "php:functionString("str_word_count",(//library/book[@isbn = "$isbn"]/title))"; return $xpath->evaluate($query); )
Зауважте, що вам не потрібно викликати XPath функцію text(), щоб отримати текст вузла. Метод registerPHPFunctions() робить це автоматизованим. Хоча наступний приклад рядка коду також буде валідним:
php:functionString("str_word_count",(//library/book[@isbn = "$isbn"]/title))
Реєстрування функцій PHP не обмежене для функцій, які включені в PHP. Ви можете визначити власні функції і використовувати їх всередині XPath. Єдина відмінність у тому, що доведеться використовувати "php:function" замість "php:functionString".
Давайте напишемо функцію, яка буде за межами класу для демонстрації базової функціональності. Функція, яку ми використовуватимемо, повертає книги автора «George Orwell». Вона повинна повертати true для кожного сайту, який ви хочете включити в запит.
nodeValue == "George Orwell"; } !}
Аргумент, який передається у функцію, є масивом елементів DOM. Ця функція проходить по масиву і визначає необхідні елементи, після чого включає їх у DOMNodeList. У цьому прикладі випробовуваний вузол був /book, також ми використовували /author для визначення потрібних елементів.
Тепер ми можемо створити функцію getGeorgeOrwellBooks():
domDocument); $xpath->registerNamespace("php", "http://php.net/xpath"); $xpath->registerPHPFunctions(); $query = "//library/book1"; $result = $xpath->query($query); $books = array(); foreach($result as $node) ( $books = $node->getElementsByTagName("title") ->item(0)->nodeValue; ) return $books; )
Якщо функція compare() статична, тоді вам потрібно внести виправлення в XPath запит:
//library/book
Правду кажучи, вся ця функціональність могла бути реалізована за допомогою чистого XPath коду. Але приклад показує, як можна розширювати XPath запити і робити їх більш комплексними.
На завершення
XPath- це чудовий спосіб скоротити кількість коду та підвищити його обробку, при роботі з XML. Додаткова функціональність PHP DOM дозволяє розширити XPath функції. Це реально корисна штука, якщо ви будете її використовувати і заглиблюватися в специфіку, вам доведеться менше писати коду.
XPath використовує шляхи для вибору вузлів у документі XML або набір вузлів. По вузлу вздовж шляху (шлях) або стадії (кроків) до обраного.
екземпляра XML-документи
Ми будемо використовувати цей XML-документ у наведених нижче прикладах.
Виберіть вузол
XPath використовує шляхи для вибору вузлів у документі XML. Або шляхом через вузол для вибору кроку. Нижче перераховані найбільш корисні вирази шляху:
У наведеній нижче таблиці ми наводимо деякі з шляхів виразу та результат виразу:
вираз Шлях | результат |
---|---|
Книжковий магазин | Виберіть усі дочірні вузли книжкового елемента. |
/ Книжковий магазин | Виберіть кореневий елемент книгарні. Примітка: Якщо шлях починається з косої межі (/), шлях завжди є представником абсолютного шляху до елемента! |
книгарня / книга | Виберіть вкладені елементи, які належать до книгарні усі книжкові елементи. |
// Книга | Виділити всі книги поделементи, незалежно від їхнього положення в документі. |
книгарня // книга | Вибирає всі книжкові елементи, які не належать до нащадків книгарні елемента, незалежно від того, в якому положенні вони перебувають у книжковому магазині. |
// @ Lang | Виберіть усі властивості названих Ланг. |
Предикат (Предікати)
Предикат використовується, щоб знайти конкретний вузол або вузол, який містить вказане значення.
Предикат вкладається у квадратні дужки.
У наведеній нижче таблиці ми перерахували деякі вирази шляху з предикатами і результат виразу:
вираз Шлях | результат |
---|---|
/ Книгарня / книга | Виберіть вкладені елементи, які належать першій книжковій книжці. |
/ Книгарня / книга [остання ()] | Виберіть вкладені елементи, які належать останній книжковий елемент. |
/ Книгарня / книга [остання () - 1] | Виберіть вкладені елементи, що стосуються взаємної книгарні другого книжкового елемента. |
/ Книгарня / книга [становище ()<3] | Виберіть перші дві книги елементи книжкового елемента, що належить до поделементів. |
// Назва [@lang] | Вибрати всі атрибути з ім'ям Ланг має заголовок елемента. |
// Заголовок [@ LANG = "анг"] | Виділіть всі назви елементів, і ці елементи мають значення атрибута англ. |
/bookstore/book | Виділити всі книжкові елементи книжкового елемента, а значення цінового елемента, що має бути більше, ніж 35.00. |
/bookstore/book/title | Виберіть усі елементи заголовка книги елементів книжкового елемента, і в якому значення цінового елемента має бути більшим, ніж 35.00. |
Виберіть невідомі вузли
XPath групові символи можна використовувати для вибору невідомих елементів XML.
У наведеній нижче таблиці ми перерахували деякі вирази шляху, а також результати цих виразів:
Виберіть кілька шляхів
Використовуючи вираз шляху "|" оператора, ви можете вибрати кілька шляхів.
У наведеній нижче таблиці ми перерахували деякі вирази шляху, а також результати цих виразів.