0
我有以下代碼,我想通過文本選擇標籤。我不能使用//label[text()='some label']
或//label[text()='other label']
是因爲兩個原因:如何通過文本選擇節點省略節點的childes文本
- 「//標籤[文本()」返回當前節點包括 跨度的內容,
- 白色空間的全部內容。
我可以使用contains()函數,但我真的不想。
<label>
<span>some span</span>
some label
</label>
<label>
other label
<span>other span</span>
</label>
已解決???
//label[normalize-space(text()) = 'some label']
但爲什麼這剝離內部節點?我不明白。根據http://www.w3.org/TR/xpath/#function-normalize-space只能刪除空格,但不能刪除節點。
哪個語法更好:// label [text()[normalize-space()='some label']] vs // label [normalize-space(text())='some label'] – 2014-11-08 16:24:57
爲什麼normalize-space()修剪內部節點更爲重要。這對我的理解至關重要。 – 2014-11-08 16:27:05
您需要解釋什麼是「內部節點」,以及您在「normalize-space()修剪內部節點」時想要解釋的行爲。我的建議'//label [text()[normalize-space()='some label']]'和你的代碼之間的主要區別在於我的建議選擇了具有(至少)一個文本子節點其標準化的字符串值是'some label''爲什麼你的嘗試選擇'label'元素,其中第一個文本子節點的標準化字符串值是'some label'。在您的示例中,第一個文本子節點是空白區域。 – 2014-11-08 17:09:15