Esto funciona muy bien para encontrar elementos HTML de botones que se simplificados (a propósito):¿Hay una expresión DRYer XPath para la unión?
//button[text()='Buy']
| //input[@type='submit' and @value='Buy']
| //a/img[@title='Buy']
ahora tengo que limitar a un contexto. Por ejemplo, el botón Comprar que aparece dentro de un cuadro con la etiqueta:
//legend[text()='Flubber']
Y esto funciona, (.. nos lleva al conjunto de campos que contiene):
//legend[text()='Flubber']/..//button[text()='Buy']
| //legend[text()='Flubber']/..//input[@type='submit' and @value='Buy']
| //legend[text()='Flubber']/..//a/img[@title='Buy']
Pero ¿hay alguna manera de simplificar este ? Lamentablemente, este tipo de cosas no funciona:
//legend[text()='Flubber']/..//(
button[text()='Buy']
| input[@type='submit' and @value='Buy']
| a/img[@title='Buy'])
(Tenga en cuenta que esto es para XPath dentro del navegador, por lo que las soluciones XSLT no ayudará.)
, esto compara s la concatenación de los 3 valores, que debería funcionar en este ejemplo simplificado con partes mutuamente excluyentes. Es interesante cómo mi problema original es el uso torpe del operador de la unión, y este refinamiento es el uso sutil de la unión. –
@Chris Noe: Esta comparación de conjunto de nodos de uso (no "concatenación") y esas rutas relativas dentro del último predicado son mutuamente excluyentes por sí mismas porque todas comienzan con el eje propio: trabajarán con cualquier documento, ya sea simple o complejo. –
Sí, esto abre nuevos horizontes. ¡Gracias! –