← Назад ко всем вопросам

Какие знаешь оси в XPath

1️⃣ Как кратко ответить

В XPath существуют следующие основные оси: child, parent, ancestor, ancestor-or-self, descendant, descendant-or-self, following, following-sibling, preceding, preceding-sibling, self, attribute, namespace. Каждая ось определяет направление поиска узлов относительно текущего узла в XML-документе.

2️⃣ Подробное объяснение темы

XPath (XML Path Language) — это язык запросов, который используется для навигации по элементам и атрибутам в XML-документах. Оси в XPath определяют направление, в котором происходит поиск узлов относительно текущего узла. Это позволяет точно указать, какие узлы должны быть выбраны в результате запроса.

  1. child: Эта ось выбирает все дочерние узлы текущего узла. Например, если текущий узел — это элемент <book>, то child::title выберет все <title> элементы, которые являются непосредственными дочерними узлами <book>.

    <book>
        <title>XML Guide</title>
        <author>John Doe</author>
    </book>
    

    XPath: child::title выберет узел <title>.

  2. parent: Эта ось выбирает родительский узел текущего узла. Если текущий узел — это <title>, то parent::book выберет его родительский узел <book>.

  3. ancestor: Эта ось выбирает всех предков текущего узла, включая родительский узел, но не включая сам узел. Например, ancestor::bookstore выберет все <bookstore> элементы, которые являются предками текущего узла.

  4. ancestor-or-self: Эта ось выбирает всех предков текущего узла, включая сам узел. Это полезно, когда нужно включить текущий узел в выборку.

  5. descendant: Эта ось выбирает всех потомков текущего узла, но не включает сам узел. Например, descendant::title выберет все <title> элементы, которые являются потомками текущего узла.

  6. descendant-or-self: Эта ось выбирает всех потомков текущего узла, включая сам узел. Это полезно, когда нужно включить текущий узел в выборку.

  7. following: Эта ось выбирает все узлы, которые следуют за текущим узлом в документе, но не являются его потомками. Например, если текущий узел — это <title>, то following::author выберет все <author> элементы, которые следуют за <title>.

  8. following-sibling: Эта ось выбирает всех узлов, которые являются следующими соседями текущего узла. Например, following-sibling::author выберет все <author> элементы, которые следуют за текущим узлом на том же уровне.

  9. preceding: Эта ось выбирает все узлы, которые предшествуют текущему узлу в документе, но не являются его предками. Например, если текущий узел — это <author>, то preceding::title выберет все <title> элементы, которые предшествуют <author>.

  10. preceding-sibling: Эта ось выбирает всех узлов, которые являются предыдущими соседями текущего узла. Например, preceding-sibling::title выберет все <title> элементы, которые предшествуют текущему узлу на том же уровне.

  11. self: Эта ось выбирает текущий узел. Например, self::node() выберет сам текущий узел.

  12. attribute: Эта ось выбирает атрибуты текущего узла. Например, attribute::id выберет атрибут id текущего узла.

  13. namespace: Эта ось выбирает все узлы пространства имен текущего узла. Она редко используется на практике.

Каждая из этих осей позволяет точно указать, какие узлы должны быть выбраны в результате запроса, что делает XPath мощным инструментом для работы с XML-документами.

Тема: UI-автоматизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки