Come in questo Stack Overflow answer immagina di dover selezionare una tabella particolare e quindi tutte le righe di essa. A causa della permissività di HTML, tutti e tre i seguenti sono markup legale:XPath con elemento facoltativo nella gerarchia
<table id="foo"><tr>...</tr></table>
<table id="foo"><tbody><tr>...</tr></tbody></table>
<table id="foo"><tr>...</tr><tbody><tr>...</tr></tbody></table>
siete preoccupati per tabelle nidificate nelle tabelle, e così non si desidera utilizzare un XPath come
table[@id="foo"]//tr
.
Se si potesse specificare il XPath desiderato come una regex, potrebbe essere simile:
table[@id="foo"](/tbody)?/tr
In generale, come è possibile specificare un'espressione XPath che permette un elemento facoltativo nella gerarchia di un selettore?
Per essere chiari, non sto cercando di risolvere un problema del mondo reale o selezionare un elemento specifico di un documento specifico. Sto chiedendo tecniche per risolvere una classe di problemi.
Oh, e per ragioni di semplicità e generalità sto ignorando il '' thead' e tfoot' elementi giuridici in HTML. – Phrogz