XPath con elemento opcional en jerarquía

Como en estoRespuesta de desbordamiento de pila imagine que necesita seleccionar una tabla en particular y luego todas las filas de la misma. Debido a la permisividad de HTML, los tres siguientes son marcas legales:

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

Le preocupan las tablas anidadas en tablas y, por lo tanto, no desea usar un XPath como
table[@id="foo"]//tr.

Si pudieras especificar tu XPath deseada como una expresión regular, podría verse así:
table[@id="foo"](/tbody)?/tr

En general, ¿cómo puede especificar una expresión XPath que permita un elemento opcional en la jerarquía de un selector?

Para ser claros, no estoy tratando de resolver un problema del mundo real o seleccionar un elemento específico de un documento específico. Estoy pidiendo técnicas para resolver una clase de problemas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta