Что означает `.` в Xpath?

Я встретил такой Xpath:

from xml.etree import ElementTree

with open('podcasts.opml', 'rt') as f:
    tree = ElementTree.parse(f)

for node in tree.findall('.//outline'):
    pass

Я знаю, что //означает any matches, но что означает . перед //? Это значит relative path? Но что такое current path в кодах? Это корневой путь? Тогда можно было бы написать как ///outline?


person Hanfei Sun    schedule 29.01.2013    source источник


Ответы (2)


но что делает . до // значит?

Это означает «текущий узел».

Но каков текущий путь в кодах? Это корневой путь? Тогда можно было бы записать как ///контур?

Текущий путь — это узел, из которого вы ищете. Не обязательно рут (но для tree в приведенном выше примере он есть).

person nameless    schedule 29.01.2013
comment
Нет, /// схема неверна, хотя выглядит логично. Вы хотите //контур. - person Michael Kay; 29.01.2013

Шаг местоположения . является сокращением от self::node(). Это особенно полезно в сочетании с //.. Например, путь местоположения .//para является сокращением от self::node()/descendant-or-self::node()/child::para, поэтому будут выбраны все элементы-потомки para узла контекста.

Цитата из http://www.w3.org/TR/xpath/

person Richard Schneider    schedule 29.01.2013