Dato questo semplificata formato dati:XPath per selezionare più tag
<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>
Come ti selezionare tutti i C
s, D
s e E
s che sono figli di B
elementi?
In sostanza, qualcosa di simile:
a/b/(c|d|e)
Nella mia situazione, invece di a/b/
, la query che portano alla selezione coloro C
, D
, E
nodi è in realtà abbastanza complesso quindi vorrei evitare facendo questo:
a/b/c|a/b/d|a/b/e
È possibile?
'o' non funziona su una for-each, avresti bisogno di usare una linea verticale invece '|' –
@ Guasqueño, 'or' è un operatore logico - opera su due valori booleani. L'operatore XPath ** union ** '|' opera su due gruppi di nodi. Questi sono abbastanza diversi e ci sono casi d'uso specifici per ciascuno di essi. L'uso di '|' ** può ** risolvere il problema originale, ma risulta più lungo e complesso e difficile da comprendere per l'espressione XPath. L'espressione più semplice in questa risposta, che usa l'operatore 'or' produce il set di nodi desiderato e * può * essere specificato nell'attributo" select "di un'operazione' 'XSLT. Provalo. –