XPath: ¿Puedo seleccionar un nodo cuyo hermano siguiente (o anterior) coincida con algunos criterios?

html html-agility-pack xpath

Pregunta

Estoy reformateando un documento HTML utilizando el paquete Agility, y me he topado con una limitación de mi comprensión de XPath.

En el documento con el que estoy trabajando, el siguiente es un constructo común:

128 2

Que se construye así:

128<img src="" style="display: none;" alt="^(" /><sup>2</sup><img src="" style="display: none;" alt=")" />

Entonces, cuando seleccionas eso y lo copia al portapapeles se convierte en:

128 ^ (2)

Ahora, me gustaría usar XPath para eliminar estas etiquetas img .

Aquí está lo que tengo hasta ahora:

//img[@alt='^('  ???/sup]

¿Cómo selecciono un elemento basado en la existencia de un hermano inmediato?

Respuesta aceptada

Al parecer es algo como esto:

//img[@alt='^(' and following-sibling::*[1][self::sup]]

Eso es (y, supongo, aquí):

//img

Un img (en cualquier lugar) ...

[@alt='^(' and  ...  ]

... cuyo atributo alt es '^(' y ...

following-sibling::*[1]

... cuyo primer hermano siguiente ...

[self::sup]

... puede llamarse una sup


Respuesta popular

Fuera de la parte superior de mi cabeza, que sea una condición compuesta. Algo como:

//img[@alt='^('  ???/sup AND preceding-sibling::*[1] AND following-sibling::*[1]]



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué