2010-01-31 4 views
1

note J'ai inventé le terme profondeur horizontale pour mesurer la sous-dimension d'un nœud dans un arbre.comment obtenir la profondeur horizontale d'un noeud?

donc imaginer un qui aurait XPath quelque chose comme/html/table/tbody/tr/td, et « profondeur horizontale » 5

je suis en train de voir s'il y a un moyen d'identifier et de sélectionner des éléments basé sur cette profondeur horizontale.

comment puis-je trouver la profondeur maximale?

+3

En quoi la «profondeur horizontale» est-elle différente de la définition intuitive de la profondeur dans un arbre? – ldog

+0

aucune différence. Je ne voulais pas confondre entre la profondeur verticale et horizontale. – bohohasdhfasdf

+0

Je pense que vous auriez dû donner un exemple XML et le résultat attendu. –

Répondre

4

Si vous avez besoin tous les noeuds avec la profondeur> = 5:

/*/*/*/*//* 

Et si vous avez besoin tous les noeuds avec la profondeur == 5:

/*/*/*/*/* 

En fait, il y a une fonction XPath count, que vous pouvez combiner avec ancestor axe:

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

comment obtenir la profondeur maximale? – bohohasdhfasdf

+0

Vertical ou horizontal? Je plaisante, je ne sais pas utiliser XPath (bref googling sans chance). Mais vous pouvez simplement prendre tous les nœuds avec XPath, puis dans Ruby trouver celui qui a le plus grand nombre d'ancêtres. –

1

Je pense que « de verticale pth "et" profondeur horizontale "sont ambigus. Y a-t-il une raison pour ne pas utiliser la terminologie d'axe qui existe déjà dans XPath, et se référer au "nombre d'ancêtres" et au "nombre de frères et sœurs précédents"? C'est un peu plus verbeux, mais pas beaucoup, et a) c'est sans ambiguïté et b) les termes sont mappés sur count(ancestor::*) et count(preceding-sibling::*).

+0

comment puis-je obtenir la profondeur maximale de l'arbre? – bohohasdhfasdf