2012-03-16 7 views
1

私は以下のXMLを持っています。属性がnullのXpath、countノード

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

属性「b」がない場合はカウントしたいと思っています。 私は以下のが、私はこれを行うことができますどのように数

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

を得ていない使用していますか?おかげ

+0

カウント(// [ない(@b)])の素敵な説明 – biziclop

答えて

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

は、ここで詳細な説明です:

  1. あなたがカウントしたいですか? <a>タグだからまずはcount(a)
  2. ここには<a>というタグがありますか?文書のどこにでも。だからそれはcount(//a)です。
  3. しかし、あなたは、述語(角括弧内のビット)を使用する必要がありますので、あなたは、いくつかの<a>タグをフィルタリングしたい:count(//a[ ... ])
  4. あなたがnot(@b)を置くようにするには、唯一の無@b属性を持っていないそれらのタグをカウントします述語で(attribute interpreted as a booleanがtrueであるため、属性が存在し、falseの場合、それがない場合は、これを行うことができます。)
+0

+1 +説明のために1 – MiMo

+0

ため – JohnXsl

関連する問題