Czy istnieje lepszy sposób uzyskiwania węzła nadrzędnego wyniku zapytania XPath?

Mając takie znaczniki:

<div class="foo">
   <div><span class="a1"></span><a href="...">...</a></div>
   <div><span class="a2"></span><a href="...">...</a></div>
   <div><span class="a1"></span>some text</div>
   <div><span class="a3"></span>some text</div>
</div>

Jestem zainteresowany zdobyciem wszystkiego<a> isome text TYLKO jeśli przylegająspan jest klasya1. Tak więc na końcu całego kodu powinienem być<a> od pierwszegodiv isome text od trzeciego. Byłoby łatwo, gdyby<a> isome text były w środkuspan lubdiv byłobyclass atrybut, ale nie ma szczęścia.

Teraz szukam tego, co robięspan za1 klasa:

//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]

potem dostaję jego rodzica i robię innyquery() z tym rodzicem jako węzłem kontekstu. To po prostu nie jest skuteczne, więc jasne jest, czy istnieje lepszy sposób na osiągnięcie mojego celu?

DODATEK ODPOWIEDZI

Jak w @MarcBzaakceptowana odpowiedź, właściwym zapytaniem do użycia jest:

//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..

ale dla<a> może być lepiej użyć:

//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a

dostać<a> zamiast jego pojemnika.

questionAnswers(2)

yourAnswerToTheQuestion