Узлы
Всего в XPath выделяется семь типов узлов: элемент, атрибут, текст, пространство имен, инструкция обработки, комментарий и узлы документа.
Документ XML рассматривается, как дерево узлов. Элемент, находящийся в самом верху этого дерева, называется корневым элементом.
Рассмотрим на следующий XML документ:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<note id="1">
<to>Джону</to>
<from>Дженни</from>
<heading>Напоминание</heading>
<body>Купи хлеба!</body>
</note>
</messages>
Здесь:
- <messages> - узел корневого элемента
- <to>Джону</to> - узел элемента
- note id="1" - узел атрибута
Атомарные значения
Узлы, у которых нет родителей и потомков, называются атомарными значениями.
Пример:
Джону
"1"
Элементы данных
Атомарные значения или узлы называются элементами данных.
Отношения узлов
Родитель
У каждого элемента есть один родитель.
В следующем примере элемент note является родителем элементов to, from, heading и body:
<note>
<to>Джону</to>
<from>Дженни</from>
<heading>Напоминание</heading>
<body>Купи хлеба!</body>
</note>
Прямые потомки
У элемента может быть ноль, один или больше прямых потомков.
В следующем примере элементы to, from, heading и body являются прямыми потомками элемента note:
<note>
<to>Джону</to>
<from>Дженни</from>
<heading>Напоминание</heading>
<body>Купи хлеба!</body>
</note>
Элементы данных одного уровня
Узлы, у которых один и тот же родитель, являются элементами данных одного уровня.
В следующем примере элементы to, from, heading и body являются элементами данных одного уровня:
<note>
<to>Джону</to>
<from>Дженни</from>
<heading>Напоминание</heading>
<body>Купи хлеба!</body>
</note>
Предки
Предками называются родители узлов, родители родителей и т.д.
В следующем примере предками элемента to являются элементы note и messages:
<messages>
<note>
<to>Джону</to>
<from>Дженни</from>
<heading>Напоминание</heading>
<body>Купи хлеба!</body>
</note>
</messages>
Потомки
Потомками называются прямые потомки узлов, прямые потомки прямых потомков и т. д.
В следующем примере потомками элемента messages являются элементы note, to, from, heading и body:
<messages>
<note>
<to>Джону</to>
<from>Дженни</from>
<heading>Напоминание</heading>
<body>Купи хлеба!</body>
</note>
</messages>