2012-03-16 36 views
1

我有以下XML。Xpath,count屬性爲null的節點

<root> 
    <a> 
    </a> 
    <a b="ar34" > 
    </a> 
    <a c="utr45"> 
    </a> 
</root> 

我想做計數屬性「b」不存在。 我使用以下,但沒有得到計數

count(//*[string-length(a/@b) = 0] 

我怎樣才能做到這一點?由於

+0

計數(//一個[未(@b)]) – biziclop 2012-03-16 21:55:27

回答

7
count(//a[not(@b)]) 

這裏有一個詳細的解釋:

  1. 你想算什麼? <a>標籤。所以你開始count(a)
  2. 這些在哪裏<a>標籤?文件中的所有地方。那麼count(//a)那就是了。
  3. 但是你要過濾掉一些<a>標籤,所以你必須使用一個謂詞(在方括號中的比特):count(//a[ ... ])
  4. 你要只計算那些沒有@b屬性標記,所以你把not(@b)在謂詞中。 (你可以做到這一點,因爲attribute interpreted as a boolean是真,如果存在該屬性和虛假如果它不是。)
+0

+1好的解釋 – MiMo 2012-03-17 01:26:45

+0

+ 1爲好解釋 – JohnXsl 2012-03-17 01:56:04

相關問題