XPath avec élément facultatif dans la hiérarchie

Que dans ce Un Débordement de pile répondre imaginez que vous avez besoin pour choisir une table, et puis toutes les lignes de. En raison de la permissivité de l'HTML, les trois suivantes sont légales balisage:

<table id="foo"><tr>...</tr></table>
<table id="foo"><tbody><tr>...</tr></tbody></table>
<table id="foo"><tr>...</tr><tbody><tr>...</tr></tbody></table>

Vous êtes inquiet au sujet de tables imbriquées dans les tableaux, et ainsi ne voulez pas utiliser un XPath comme

table[@id="foo"]//tr.

Si vous pouviez préciser votre choix de XPath comme une expression régulière, il pourrait ressembler à quelque chose comme:

table[@id="foo"](/tbody)?/tr

En général, comment pouvez-vous spécifier une expression XPath qui permet à un élément facultatif dans la hiérarchie d'un sélecteur?

Pour être clair, je ne suis pas d'essayer de résoudre un problème réel ou sélectionnez un élément spécifique d'un document spécifique. Je vous demande de techniques permettant de résoudre une classe de problèmes.

  • Oh, et pour des raisons de simplicité et de généralité, je suis ignorant la thead et tfoot éléments juridiques dans le code HTML.
InformationsquelleAutor Phrogz | 2011-01-06