如何编写XPath查询匹配子a标签href与父级li下a标签href相同的li元素
正确的XPath查询语句
//li[./a/@href = ancestor::li[1]/a/@href]
原语句错误原因
你之前写的//li[a[@href=ancestor::li/a/@href]]会全选元素,问题出在两方面:
- 没给
ancestor::li加层级限制,它会匹配所有上层li,不是只找最近的父级li - 顶层li里的a标签的祖先li刚好就是自身所属的li,自己和自己比href当然相等,所以顶层li也会被误选中
补充说明
上述修正后的语句会精准匹配你标注的4个目标li元素:包含One a、One b、Five a、Five b的li。如果实际场景中单个li下存在多个a标签,可进一步限定取第一个a标签的href做比较,调整为:
//li[./a[1]/@href = ancestor::li[1]/a[1]/@href]
内容的提问来源于stack exchange,提问作者Heston Hoffman
相关产品推荐
相关产品推荐

