2009-07-17 11 views
11

これは簡単なものでなければなりませんが、それは私にトラブルを与えています。このような構造を考える:子要素が存在するノードのみを選択するにはXpath?

<root> 
    <a> 
    <b/> 
    </a> 
    <a/> 
</root> 

私は唯一の非空「」の要素、子要素を持っている、すなわちものを与えXPath式を策定しようとしています。したがって、私は "a"の最初のインスタンスを返しますが、2番目のインスタンスは返しません。

これまでのところ、私は「/ root/a/self :: *」を持っていますが、それは私の両方を返しています。

+2

の作品作品: /root/a [child :: *] しかし、私はアドリアンの信用にも答えを与えるでしょう! :) –

答えて

12
/root/a[count(*)&gt;0] 

は、子ノードのいずれかの種類のいずれかの '' ノードを与える

+5

ちょうど余分な点として、count(b)を使用して、カウントしたい子ノードを特定することができます。 –

6
/root/a[count(*)>0] 
+0

私はAdrianがエンコーディングの必要性について正しいと思います。 –

+3

XMLファイル(XSLTスクリプトなど)に挿入したい場合のみ。それでも、これはちょっとしたストレージの詳細なのですが、私はXPath仕様が ">"を使用していることを確信しています:) –

3

この1つは

/root/a[*] 

か私もこのことを発見しても

//a[*] 
+0

または名前が "b"の子要素のみを気にするならば:/ root/a [b] ' – Timothy

関連する問題