normalize,字面意思就是正規化,加上space大概意思就是空格的處理了。
官方解釋是這樣的:
通過去掉前導和尾隨空白並使用單個空格替換一系列空白字符,使空白標准化。如果省略了該參數,上下文節點的字符串值將標准化並返回。
.
是當前節點。如果在需要字符串的地方使用它(例如作為參數normalize-space()
),引擎會自動將節點轉換為節點的字符串值,對於元素來說,該元素是元素內連接的所有文本節點。
text()
另一方面僅選擇作為當前節點的直接子節點的文本節點。
例如,給定XML:
<a>Foo <b>Bar</b> lish </a>
假設<a>
是你當前的節點,normalize-space(.)
將返回Foo Bar lish
,但normalize-space(text())
會失敗,因為text()
返回兩個文本節點(Foo
和lish
)的節點集,它normalize-space()
不接受。
長話短說,如果你想標准化一個元素中的所有文本,請使用.
。如果要選擇特定的文本節點,請使用text()
,但請始終記住盡管名稱不同,但會text()
返回一個節點集,如果節點集只有一個元素,它將自動轉換為字符串。