Получить имя родительского элемента в XPath - PullRequest
5 голосов
/ 11 февраля 2012

Я пытаюсь выяснить, как получить имя родителя из области видимости текстового узла.

//text()[name(parent)='p']

Как узнать имя родителя текущего узла?

Ответы [ 3 ]

14 голосов
/ 11 февраля 2012

Если вы пытаетесь проверить имя, оно у вас почти есть:

//text()[name(parent::*)='p']

Если вы пытаетесь вернуть имя:

name(//text()/parent::*)
4 голосов
/ 11 февраля 2012

К вашему сведению, точка терминологии: текстовый узел не является элементом.

В любом случае, самый краткий способ выбрать родителя текущего узла - ..

Итак,имя родительского элемента текущего узла (который может быть текстовым узлом): name(..)

Подстановка этого в выражение XPath:

//text()[name(..)='p']

Но менее окольный способ записиэто будет

//p/text()

(при условии, что элементы p в документе не имеют префикса пространства имен).В любом случае вы выбираете все текстовые узлы, которые являются потомками элементов с именем p.

2 голосов
/ 11 февраля 2012
//text/..[@name='p']

Получат все родительские узлы <text>, если у родителя атрибут name равен p.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...