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()
返回兩個文字節點(Foo
和lish
)的節點集,它normalize-space()
不接受。
長話短說,如果你想標準化一個元素中的所有文字,請使用.
。如果要選擇特定的文字節點,請使用text()
,但請始終記住儘管名稱不同,但會text()
返回一個節點集,如果節點集只有一個元素,它將自動轉換為字串。
相關推薦
XPATH之normalize-space(.)和normalize-space(text())區別
normalize,字面意思就是正規化,加上space大概意思就是空格的處理了。 官方解釋是這樣的: 通過去掉前導和尾隨空白並使用單個空格替換一系列空白字元,使空白標準化。如果省略了該引數,上下文節點的字串值將標準化並返回。 .是當前節點。如果在需要字串的地方使用它(例如作為引數norm
word-wrap、white-space和word break的區別
src over word-wrap 也會 img lips 邊界 com 分享圖片 一、 先說white-space: white-space規定了代碼中對空格的處理:有幾個可選值:normal,nowrap,pre,pre-wrap,pre-line: white-sp
Kotlin基礎語法之 "=="和"==="的區別
總體來說kotlin中==比較的是數值是否相等, 而===比較的是兩個物件的地址是否相等, 見如下程式碼: val a: Int = 999 val b: Int? = a val c: Int?
zookeeper之客戶端和服務端的區別
客戶端是叢集外的訪問,服務端才是叢集上的提供服務的。 使用bin/zkServer.sh start開啟的zookeeper上的一個服務端,而使用bin/zkCli.sh是將客戶端連到服務端上。 客戶端可以通過服務端建立znode,刪除znode,寫znode,讀znod
css之背景圖片和插入圖片的區別以及精靈圖的使用
一,背景圖片和插入圖片 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>40-css背景
Android面試篇之軟引用和弱引用的區別
軟引用所指向的物件要進行回收,需要滿足兩個條件: ● 沒有任何強引用 指向 軟引用指向的物件(記憶體中的Person物件) ● JVM需要記憶體時,即在丟擲OOM之前 即SoftReference變相
Linux基礎教程之/dev/null和/dev/zero的區別及其用法
在Linux作業系統中/dev/null和/dev/zero是兩個相似卻又很特殊的檔案,特別是在shell指令碼開發和系統運維過程中會經常用這兩個檔案,因此作為Linux系統工程師,你必須瞭解這兩個檔案的區別和用法。 一、/dev/null的用法: 我們可以把/dev/null檔案看作”黑洞”,它非
iOS經典講解之[self class]和[super class]的區別
作者:Loving_iOS 在objc中的類實現中經常看到這兩個關鍵字”self”和”super”,但他們的區別表現在各個方面。 以下面的程式碼為例: @interface Father:NSObject { NSString* name; } - (void)se
c++學習之new int()和new int[]的區別
new int[] 是建立一個int型陣列,陣列大小是在[]中指定,例如: int * p = new int[3]; //申請一個動態整型陣列,陣列的長度為[]中的值 new int()是建立一個
Android進階之View.inflate和LayoutInflater.inflate方法區別
1 LayoutInflater用於載入佈局 LayoutInflater用於載入佈局的。載入佈局的任務通常都是在Activity中呼叫setContentView()方法來完成的。其實setContentView()方法的內部也是使用LayoutInflater來載入佈局的,只不過
Android開發之原生APP和Web APP的區別個人見解
Native App開發Native App開發即我們所稱的傳統APP開發模式(原生APP開發模式),該開發針對IOS、Android等不同的手機作業系統要採用不同的語言和框架進行開發,該模式通常是由
SSH之hibernate——get和load方法的區別
hibernate查詢資料可以用get()和load()方法,但是它們的機制還有一些不同,下面講解具體的區別。 一、建實體類User,並配置對映檔案 因為實體類建立非常簡
c語言那些細節之a+1和&a+1的區別
首先a是一個數組名,當看到這個a與&a時,一般我們的理解都是這個陣列的首地址。沒錯,如果加上列印的話,確實兩個值是一樣的。 不過&a是整個陣列的首地址,a則是陣列首元素的地址,雖然值一樣,但是意義卻不相同。 在此之前有必要先看下c程式在記憶體中的分佈圖。
mybatis學習之$取引數和#取引數的區別
使用#取引數: 引數在sql語句中是以預編譯的形式存在的,例如 select * from person where id=? 而使用$符則是直接在sql語句取出引數的值,例如
C++之指標陣列和陣列指標的區別---補充(9)《Effective C++》
指標陣列: 首先這是一個數組,陣列中的值型別是指標,通常表現為: template <typename T> T* Tname[10]; 現在我們這兒利用二維陣列進行舉例: int a[3][4]; int *p[3]; p[0]=a
C 語言結構體之點運算子( . )和箭頭運算子( -> )的區別
很多時候,在對結構體進行相應的編碼時,時而發現是用點運算子( . ),時而是用箭頭運算子( -> );那麼這兩者之間的使用有什麼區別麼? 相同點:兩者都是二元操作符,而且右邊的運算元都是成員的名
SQLServer連接查詢之Cross Apply和Outer Apply的區別及用法
get 學生表 ref src fontsize watermark lec pre tco https://blog.csdn.net/wikey_zhang/article/details/77480118 先簡單了解下cross
SQL Server連接查詢之Cross Apply和Outer Apply的區別及用法(轉載)
簡單了解下 rtrim www weight 存儲 去掉 轉載 參考文獻 hang 先簡單了解下cross apply的語法以及會產生什麽樣的結果集吧!示例表: SELECT * FROM tableA CROSS APPLY tableB 兩張表直接
關於text-overflow和white-space
兩者都是CSS文字屬性,首先說明一下: ※ text-overflow:clip | ellipsis 版本:IE6+專有屬性 取值:clip 預設值。不顯示省略標記(…),而是簡單的裁切; ellipsis 當物件內文字溢位時顯示省略標記(…) 。 說明:設定或檢索是否使用一個省略標記(…) 標示物件
【深入Java虛擬機器】之記憶體區域詳解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)
1.記憶體區域劃分 限定商用虛擬機器基本都採用分代收集演算法進行垃圾回收。根據物件的生命週期的不同將記憶體劃分為幾塊,然後根據各塊的特點採用最適當的收集演算法。大批物件死去、少量物件存活的,使用複製演算法,複製成本低;物件存活率高、沒有額外空間進行分配擔保的,採用標記-清除演算法