<a>
<b/>
<c/>
<d/>
<b/>
<e/>
</a>
¿Cómo selecciono los elementos secundarios de "a" que no son "b"?XPath: seleccionar elementos secundarios que * no * tienen un nombre específico
<a>
<b/>
<c/>
<d/>
<b/>
<e/>
</a>
¿Cómo selecciono los elementos secundarios de "a" que no son "b"?XPath: seleccionar elementos secundarios que * no * tienen un nombre específico
/a/*[not(self::b)]
Xpath se verá:
a/*[name(.) !='b']
Por lo tanto, seleccionar a los niños de 'a', cuyo nombre no es igual 'b'
Esto se rompe cuando se usan espacios de nombres y prefijos. – Lucero
@Lucero - de acuerdo con la fuente XML no hay espacio de nombres, pero si es así, tiene la función "nombre local" – Dewfy
, y local-name() también se rompe porque coincidirá con elementos de cualquier espacio de nombre en lugar de un nombre de elemento específico. Dado que las muestras publicadas aquí a menudo se simplifican (bastante obvio aquí), no estoy tan seguro de que no se usarán espacios de nombres, e incluso si alguien busca y encuentra esta respuesta, debe saber que su solución no funciona con espacios de nombres. – Lucero
Con XPath 2.0 se puede incluso hacer
/a/(* except b)
+1 para el buen uso del eje 'self';) – Lucero
@Lucero: le debo @Tomalak por esa idea :) – AakashM
Gracias por el crédito. :) – Tomalak