2010-04-21 42 views

回答

7

假設你想要的是一個包含非空白文本的文本節點:

//fieldset/text()[normalize-space(.)] 

如果你想要的是最後一個文本節點,則:

//fieldset/text()[last()] 
+0

''.'對於'normalize-space()'是可選的,當給定它的參數沒有對上下文節點進行操作時。 – Tomalak 2010-04-21 17:42:58

7

我建議你接受史蒂芬D. Majewski的答案,但這裏是解釋(用方括號加亮的文本節點):

<fieldset>[ 
    ]<legend>My Legend</legend>[ 
    ]<p>Some text</p>[ 
    Text to capture 
]</fieldset> 

所以/fieldset/text()返回

  • "\n "
  • "\n "
  • "\n Text to capture\n"

這就是爲什麼你要/fieldset/text()[normalize-space()],並且要在使用前修整的結果。

另請注意,以上是/fieldset/text()[normalize-space(.) != '']的簡稱。當normalize-space()返回非空字符串時,謂詞評估爲true,而空字符串評估爲false