Teniendo en cuenta este formato de datos simplificada:XPath para seleccionar varias etiquetas
<a>
<b>
<c>C1</c>
<d>D1</d>
<e>E1</e>
<f>don't select this one</f>
</b>
<b>
<c>C2</c>
<d>D2</d>
<e>E1</e>
<g>don't select me</g>
</b>
<c>not this one</c>
<d>nor this one</d>
<e>definitely not this one</e>
</a>
¿Cómo seleccionar todos los C
s, s D
y E
s que son hijos de B
elementos?
Básicamente, algo así como:
a/b/(c|d|e)
En mi propia situación, en lugar de sólo a/b/
, la consulta que condujo a la selección de los C
, D
, E
nodos es en realidad bastante compleja por lo que me gustaría evitar haciendo esto:
a/b/c|a/b/d|a/b/e
¿Esto es posible?
'o' no funciona en uno para cada uno, necesitaría usar una línea vertical en su lugar '|' –
@ Guasqueño, 'o' es un operador lógico: opera en dos valores booleanos. El operador XPath ** union ** '|' opera en dos conjuntos de nodos. Estos son bastante diferentes y hay casos de uso específicos para cada uno de ellos. Usar '|' ** puede ** resolver el problema original, pero resulta en una expresión XPath más larga y compleja y desafiante. La expresión más simple en esta respuesta, que usa el operador 'o' produce el conjunto de nodos deseado y * puede * ser especificado en el atributo" seleccionar "de una operación XSLT' '. Solo inténtalo. –