1. 程式人生 > >XPATH之normalize-space(.)和normalize-space(text())區別

XPATH之normalize-space(.)和normalize-space(text())區別

normalize,字面意思就是正規化,加上space大概意思就是空格的處理了。

官方解釋是這樣的:

通過去掉前導和尾隨空白並使用單個空格替換一系列空白字元,使空白標準化。如果省略了該引數,上下文節點的字串值將標準化並返回。

 

.是當前節點。如果在需要字串的地方使用它(例如作為引數normalize-space()),引擎會自動將節點轉換為節點的字串值,對於元素來說,該元素是元素內連線的所有文字節點。

text() 另一方面僅選擇作為當前節點的直接子節點的文字節點。

例如,給定XML:

<a>Foo
    <b>Bar</b> lish </a> 

假設<a>是你當前的節點,normalize-space(.)將返回Foo Bar lish,但normalize-space(text())會失敗,因為text()返回兩個文字節點(Foolish)的節點集,它normalize-space()不接受。

長話短說,如果你想標準化一個元素中的所有文字,請使用.。如果要選擇特定的文字節點,請使用text(),但請始終記住儘管名稱不同,但會text()返回一個節點集,如果節點集只有一個元素,它將自動轉換為字串。