2012-02-08 44 views
30

我试图在执行xpath查询后选择一组结果节点中的第一个元素。在xpath结果集中获取第一个节点

当我这样做:

//dl 

我得到以下结果集:

[<dl>​…​</dl>​, <dl>​…​</dl>​] 

我怎样才能获得的第一个?这些都没有工作:

//dl[1] 
//dl[position()=1] 

我在Chrome的Web检查器中执行此操作。

回答

54

使用以下命令:

(//dl)[1] 

括号是显著。你想要得到的第一个节点来自//dl(而不是一组dl元素是其父项的第一个子元素(这是//dl[1](无parens)返回))。

这是比较容易看到当一个人意识到//是简写(即展开充分)/descendant-or-self::node()/使//dl[1]等同于:

/descendant-or-self::node()/dl[1] 

...这是比较明显的不是你想要的。相反,你正在寻找:

(/descendant-or-self::node()/dl)[1] 
+0

我不知道这是可能的。还有什么其他例子可以处理(// dl)? – tipu 2012-02-08 18:59:09