2016-01-19 58 views
2

我是新来的XPath,想考虑下面的表达式,其中n是一个元素:XPath表达式意思

//n[parent::n and child::n]

是否在[ ]表达意味的n父和子节点一定是一样的吗?

还是我完全错了?谢谢。

+0

安装xpath检查器添加并尝试所有你想要的 –

+0

我会去的;) –

回答

6

[]中的表达式是否表示n的父节点和子节点必须相同?

您声明的正确性取决于您所指的“相同”。如果通过“相同”,你的意思是“相同”,那么声明显然是不正确的。一个节点不能同时是某个东西的父母和孩子。

另一方面,如果你打算写“同名”,那么这是真的。表达

//n[parent::n and child::n] 

意味着在文档中

查找名为n所有元素,无处不在,但前提是他们的父元素也被称为n,如果他们至少有一个子元素称为n

+0

谢谢,这就是我的意思。如果你认为''[祖先:: n和孩子:: n]'这是否意味着“每个”祖先或只有根必须具有相同的名称? –

+3

@PatrickWeiß两者都不是。 XPath表达式是隐式存在的量化,这意味着像'ancestor :: n'这样的表达式总是意味着:“这个名称必须至少有**一个**祖先”。对于所有的祖先来说,并不一定是真实的,具有这个名字的祖先不一定是最外层的(根)元素。 –

+0

好了,现在我想我明白了。再次感谢。 –