我试图弄清楚如何从文本节点的范围中获取父级的名称。
//text()[name(parent)='p']
如何获取当前节点的父节点的名称?
答案 0 :(得分:14)
如果您正在尝试测试该名称,那么您几乎已经拥有了它:
//text()[name(parent::*)='p']
如果您要返回名称:
name(//text()/parent::*)
答案 1 :(得分:4)
仅供参考,术语点:文本节点不是元素。
无论如何,选择当前节点的父节点的最简洁方法是..
因此,当前节点的父元素的名称(可以是文本节点)是name(..)
将其替换为XPath表达式:
//text()[name(..)='p']
但是,写一个不那么迂回的方式就是
//p/text()
(假设文档中的p
元素没有名称空间前缀)。无论哪种方式,您都要选择所有文本节点,这些节点是名为p
的元素的子元素。
答案 2 :(得分:2)
//text/..[@name='p']
只要父级<text>
属性为name
,这将获得p
个节点的所有父级。