2011-01-01 8 views

答えて

3

text()の機能がテキストノードと一致します。例://div/text() - すべてのdiv要素内のすべてのテキストの子に一致します。

+1

'テキスト()'厳密関数ではありません。それは*ノードテストです。ちょうど '/ div 'の' div'がノードテストです。括弧は '// text'との違いにすぎません。 – Tomalak

+2

与えられた入力サンプルでは、​​ '/ div/text()'は 'p'要素の前に2つのテキストノードを選択しますが、これは空白を含み、' p'要素の後の2つ。純粋な空白文字のテキストノードを除外するには、// div/text()[normalize-space()] 'を使います。 –

0

これは子供のように他の要素を持っていないすべての要素を選択するように聞こえる私にとって唯一のタグレス子要素

を選択します。しかし、ここでもあなたの例の「テキスト」はではなく、の要素ですが、テキストノードなので、何を選択したいのか分かりません... とにかく、ここにはそのような要素

//*[not(*)] 

要素を子として持たないすべての要素を選択します。子要素を持たない特定の要素だけを選択する場合は、最初の*を要素名に置き換えます。また、//を使用することは、ドキュメント全体を実行するため、一般的に遅いことにも注意してください。可能であれば、より具体的なパスを使用することを検討してください(この場合は/div/*[not(*)]など)。

1

使用

/*/text()[normalize-space()] 

これは、文書の先頭要素の子であり、それが唯一の空白文字で構成されていないすべてのテキストノードを選択します。

' 
     "text" 
    ' 

XPath式:

/*/text() 

又は

/div/text() 

両方がを選択

具体例では、これは、文字列値でのみテキストノードを選択します2つ個のテキストノード、その最初のみ空白を含み、第二は、上記のように同じテキストノードである:

' 
     "text" 
    ' 
関連する問題