<a>
<b/>
<c/>
<d/>
<b/>
<e/>
</a>
Come selezionare i figli di "a" che non sono "b"?XPath: selezionare elementi secondari che * hanno * un nome specifico
<a>
<b/>
<c/>
<d/>
<b/>
<e/>
</a>
Come selezionare i figli di "a" che non sono "b"?XPath: selezionare elementi secondari che * hanno * un nome specifico
/a/*[not(self::b)]
Xpath sarà:
a/*[name(.) !='b']
Quindi, selezionare figli di 'a' il cui nome non è uguale 'b'
Questo si interrompe quando vengono usati lo spazio dei nomi e i prefissi. – Lucero
@Lucero - in base all'XML di origine non c'è spazio dei nomi, ma in questo caso si ha la funzione "nome locale" – Dewfy
sì, e le interruzioni di nome locale() anche perché corrisponderanno a elementi di qualsiasi spazio dei nomi anziché a un nome di elemento specifico. Dato che i campioni pubblicati qui sono spesso semplificati (abbastanza ovvio qui) non sarei così sicuro che non verranno utilizzati spazi dei nomi, e anche se qualcuno googles e trova questa risposta dovrebbero essere consapevoli che la soluzione non funziona con namespace. – Lucero
Con XPath 2.0 è possibile anche fare
/a/(* except b)
+1 per il buon uso dell'asse 'self';) – Lucero
@Lucero: Devo @Tomalak per quell'idea :) – AakashM
Grazie per il credito. :) – Tomalak