9
votes

Xpath pour des éléments profondément imbriqués?

J'utilise Nokogiri.

Supposons que j'ai un chemin profondément imbriqué: p> xxx pré>

Je pense que je peux utiliser le chemin suivant: p>

//h1/*/*/*/h5


3 commentaires

Avez-vous besoin d'une / toutes des balises h5 ou avez-vous besoin d'un spécifique dans le HTML? Si vous avez besoin d'une spécificité, avez-vous un identifiant ou une classe pour H5 qui vous aiderait à le naviguer ou à quelque chose de spécifique sur le particulier qui peut être utilisé comme point de repère?


Tandis que la réponse de PGUARDIARIO est correcte, étant donné que vous avez encadré votre question, lorsque l'homme de l'étain indique, il est probablement un meilleur moyen de cibler spécifiquement l'élément que vous recherchez.


@thetinman Mark Thomas - J'ai oublié cette question - désolé à ce sujet. La question était que j'ai un H5 comme indiqué et un autre H5 dans une autre héritière. Pour l'instant, la réponse de Pguardiario est très bonne pour moi. Je vais mettre à jour plus tard. Merci pour ton aide


3 Réponses :


6
votes

Il suffit d'utiliser: // , i.e.: // h5 . Ce XPath sélectionnera tous les éléments H5 . Voir les spécifications: http://www.w3.org/tr/xpath/#path- abbrev


0 commentaires

12
votes

Pour tous les éléments H5 qui descendent d'une utilisation H1: xxx pré>

ou vous pouvez aimer le style CSS plus simple: P>

h1 h5


0 commentaires

4
votes

Si vous souhaitez sélectionner tous les H5 exactement 4 niveaux inférieurs à leur ancêtre H1, utilisez: xxx

Vérification basée sur XSLT : xxx

Lorsque cette transformation est appliquée sur le document XML suivant : xxx

L'expression XPath est évaluée et le résultat de l'évaluation (les éléments H1 (dans ce cas, un) est copié sur la sortie : xxx

Si vous ne voulez pas compter le nombre des niveaux intermédiaires, mais bien sûr qu'ils ne dépassent pas un certain nombre (par exemple 7), Vous pouvez écrire : xxx

ceci sélectionne n'importe quel H5 descendant de tout H1 , où La "distance" aux niveaux entre le H1 et le descendant h5 ne dépasse pas 7 .

NOTE < / strong>:

une expression comme ci-dessous - comme suggérée dans d'autres réponses: xxx

Sélectionne de manière incorrecte pour le document ci-dessus : xxx

le second des deux h5 sélectionné < / Code> Les éléments sont à une distance supérieure à celle souhaitée de son H1 ancêtre .


0 commentaires