2010-01-31 58 views
1

請注意,我編制了術語「水平深度」來測量樹中節點的子維度。如何獲得節點的水平深度?

所以想象這將對XPath的類似/ HTML /臺/ TBODY/TR/TD,以及5

我試圖看看是否有一種方法來識別和選擇元素「水平深度」基於這個水平深度。

我如何找到最大深度?

+3

「水平深度」與樹中深度的直觀定義有何不同? – ldog 2010-01-31 10:14:18

+0

沒有區別。我不想混淆垂直和水平深度。 – bohohasdhfasdf 2010-01-31 10:51:54

+0

我想你應該給出一些例子XML和預期的結果集。 – 2010-01-31 11:14:50

回答

4

如果你需要所有深度節點> = 5:

/*/*/*/*//* 

如果你需要所有深度== 5節點:

/*/*/*/*/* 

其實,有一個XPath函數count,您可以用ancestor軸結合:

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

如何獲得最大深度? – bohohasdhfasdf 2010-01-31 22:19:39

+0

垂直還是水平? 只是開玩笑,我不知道使用XPath(簡單的谷歌搜索沒有運氣)。但是,您可以簡單地將所有節點都帶到XPath中,然後在Ruby中找到祖先數量最多的節點。 – 2010-02-01 08:58:59

1

我認爲,「垂直德pth「和」水平深度「是不明確的。是否有任何理由不使用已經存在於XPath中的軸術語,並參考「祖先的數量」和「前面的兄弟的數量」?它稍微更冗長,但不多,和a)它是明確的,b)術語映射到count(ancestor::*)count(preceding-sibling::*)

+0

我怎樣才能得到樹的最大深度? – bohohasdhfasdf 2010-01-31 22:20:18