Biorąc pod uwagę to uproszczony format danych:XPath, aby wybrać wiele tagów
<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>
Jak można wybrać wszystkie C
s, D
s i E
s, które są dzieci B
elementów?
Zasadniczo, coś jak:
a/b/(c|d|e)
we własnej sytuacji, a nie tylko a/b/
, zapytanie prowadzące do wybierania tych C
, D
, E
węzłów jest rzeczywiście dość skomplikowane, więc chciałbym, aby uniknąć w ten sposób:
a/b/c|a/b/d|a/b/e
Czy to możliwe?
"lub" nie działa na urządzenie, należy zamiast tego użyć linii pionowej "|" –
@ Guasqueño, 'or' jest operatorem logicznym - działa na dwóch wartościach logicznych. Operator unii XPath ** union | | 'działa na dwóch zestawach węzłów. Są one zupełnie inne i istnieją konkretne przypadki użycia dla każdego z nich. Użycie '' '** can ** rozwiązuje pierwotny problem, ale powoduje dłuższe i bardziej złożone i trudne do zrozumienia wyrażenie XPath. Prostsze wyrażenie w tej odpowiedzi, które używa operatora 'lub ', tworzy pożądany zestaw węzłów i * może * być określone w atrybucie" select "operacji' 'XSLT. Po prostu spróbuj. –