正如在此Stack Overflow answer中想象的那樣,您需要選擇一個特定的表格,然後選擇它的所有行。由於HTML的放縱,所有三個以下是合法的標記:具有可選元素的層次結構的XPath
<table id="foo"><tr>...</tr></table>
<table id="foo"><tbody><tr>...</tr></tbody></table>
<table id="foo"><tr>...</tr><tbody><tr>...</tr></tbody></table>
你擔心嵌套表的表,所以不想使用XPath像
table[@id="foo"]//tr
。
如果你可以指定所需的XPath作爲一個正則表達式,它可能看起來像:
table[@id="foo"](/tbody)?/tr
在一般情況下,你怎麼可以指定一個XPath表達式,它允許在選擇的層次結構中的可選元素?
要說清楚,我並不是想解決真實世界的問題,或者選擇特定文檔的特定元素。我正在尋求解決一類問題的技巧。
哦,爲了簡單和通用的緣故,我忽略了`thead`和`tfoot`元素HTML法律。 – Phrogz 2011-01-06 03:30:54