我有一个返回两个项目的XPath。我想修改它以便它只返回第二个,如果超过2则返回最后一个。
//a[@rel='next']
我试过
//a[@rel='next'][2]
但这根本不会返回任何东西。我怎样才能重写xpath所以我只得到第二个链接?
答案 0 :(得分:2)
找到答案 XPATH : finding an attribute node (and only one)
在我的情况下,正确的XPath将是
(//a[@rel='next'])[last()]
这将选择所有a[@rel='next']
个节点,并获取整个集合中的最后一个:
(//a[@rel='next'])[last()]
这将选择所有a[@rel='next']
个节点,这些节点分别是父节点的最后a[@rel='next']
个节点:
//a[@rel='next'][last()] equivalent: //a[@rel='next' and position()=last()]
这将选择所有a[@rel='next']
个节点,这些节点是父节点的第二个a[@rel='next']
,每个节点都在其中(在您的情况下,每个父节点只有一个a[@rel='next']
,这就是为什么你没有得到任何回报):
//a[@rel='next'][2] equivalent: //a[@rel='next' and position()=2]
为了完整性:这将选择所有a
个节点,这些节点是每个节点的最后一个父节点所在的节点,并且只选择那些具有@rel='next'
的节点(XPath谓词来自从左到右!):
//a[last()][@rel='next'] NOT equiv!: //a[position()=last() and @rel='next']