2011-04-28 98 views

回答

51

这是一个常见问题解答

在XPath中,[]运算符比伪运算符具有更高的优先级(绑定更强)。

正因为如此,表达式:

//div[@class='test'][2] 

选择所有div元件,其class属性为“测试”和谁(该div元素)是第二个这样的子div它们的父的。这不是你想要的。

使用

(//div[@class='test'])[2] 
2

我相信根据XML规范,属性不被视为有订单。
Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.
请参阅here 我认为你最好重新考虑你的结构,使属性顺序不会描述任何东西。如果您可以提供更多详情,我们可能会提供建议。

编辑:重新读你的文章,看起来像你试图找到节点顺序,而不是属性顺序。节点顺序是允许的,并且你的语法看起来不错。你在做什么软件?

+0

这是我的错 - 解析器隐藏标签。我已经添加了适当的格式。 我使用PHP DOM扩展http://ua.php.net/manual/en/book.dom.php,它似乎这个扩展提供了XPath的弱实现 – HongKilDong 2011-04-28 12:47:24

+1

你试过 '// div [@ class ='测试'] [位置()= 2]' – 2011-04-28 12:50:18

相关问题