Терминология в XPath

Узлы

Всего в 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>