В данном разделе рассматривается пример, иллюстрирующий последующее изложение предлагаемого в данной статье алгоритма вычисления обратных осей языка XPath.
Пример 1 Рассмотрим следующее выражение языка XPath: /doc/head/../body
Данное выражение представляет собой путь доступа (location path) и состоит из 4 шагов доступа:
doc.
head.
head.
body.
Заметим, что на 3-м шаге рассматриваемого нами пути доступа имеется обратная ось parent [8] (записанная в терминах сокращенного синтаксиса XPath в виде двух точек). Ввиду того, что в SXML отсутствуют указатели с дочерних узлов на родительские узлы, реализовать стратегию прямолинейного пошагового вычисления данного пути доступа в SXML невозможно, поскольку, имея на входе лишь контекстный узел, невозможно получить никаких сведений об его родительском узле.
Даже не имея указателей с дочерних узлов на родительские узлы, тем не менее возможно вычислить путь доступа из примера 1, если задействовать дополнительные соображения о структуре вычисляемого выражения:
head, но также сохраним текущий контекстный узел, поскольку он потребуется при вычислении оси parent на следующем шаге.
Благодаря анализу вычисляемого пути доступа из примера , содержащего обратную ось, оказалось возможным вычислить его даже при отсутствии указателей с дочерних узлов на родительские узлы в дереве документа. В следующем разделе рассмотренный на данном примере способ вычисления обратных осей формализуется более строго и обобщается в виде алгоритма на случай произвольного выражения языка XPath.