如何获得节点的水平深度?

时间:2010-01-31 09:38:38

标签: xml ruby xpath nokogiri

注意我组成术语水平深度来测量树中节点的子维度。

所以想象一下,xpath会像/ html / table / tbody / tr / td那样,而“水平深度”就是5

我试图看看是否有办法根据这个水平深度识别和选择元素。

我怎样才能找到最大深度?

2 个答案:

答案 0 :(得分:4)

如果您需要深度> gt = = 5的所有节点:

/*/*/*/*//*

如果您需要所有深度为== 5的节点:

/*/*/*/*/*

实际上,有一个XPath函数count,您可以将其与ancestor轴结合使用:

//*[count(ancestor::*) >= 4]

答案 1 :(得分:1)

我认为“垂直深度”和“水平深度”是模糊的。是否有任何理由不使用XPath中已存在的轴术语,并参考“祖先数”和“前兄弟数”?它略显冗长,但并不多,而且a)明确无误,b)术语映射到count(ancestor::*)count(preceding-sibling::*)