这对于查找类似按钮的HTML元素非常有用(故意简化):
//button[text()='Buy']
| //input[@type='submit' and @value='Buy']
| //a/img[@title='Buy']
现在,我需要将其限制为上下文。例如,出现在带标签的框内的“购买”按钮:
//legend[text()='Flubber']
这可以((..使我们进入包含的字段集):
//legend[text()='Flubber']/..//button[text()='Buy']
| //legend[text()='Flubber']/..//input[@type='submit' and @value='Buy']
| //legend[text()='Flubber']/..//a/img[@title='Buy']
但是有什么方法可以简化这个过程吗?可悲的是,这种事情不起作用:
//legend[text()='Flubber']/..//(
button[text()='Buy']
| input[@type='submit' and @value='Buy']
| a/img[@title='Buy'])
(请注意,这是针对浏览器中的XPath的,因此XSLT解决方案将无济于事。)
最佳答案
来自评论:
使用此XPath 1.0表达式:
//legend[text() = 'Flubber']/..
//*[
self::button/text()
| self::input[@type = 'submit']/@value
| self::a/img/@title
= 'Buy'
]
编辑:我没有看到父访问器。仅在一个方向上以其他方式:
//*[legend[text() = 'Flubber']]
//*[
self::button/text()
| self::input[@type = 'submit']/@value
| self::a/img/@title
= 'Buy'
]
关于xpath - 是否有用于联合的DRYer XPath表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5516509/