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>&nbsp;isome text TYLKO&nbsp;jeśli przylegająspan&nbsp;jest klasya1. Tak więc na końcu całego kodu powinienem być<a>&nbsp;od pierwszegodiv&nbsp;isome text&nbsp;od trzeciego. Byłoby łatwo, gdyby<a>&nbsp;isome text&nbsp;były w środkuspan&nbsp;lubdiv&nbsp;byłobyclass&nbsp;atrybut, ale nie ma szczęścia.

Teraz szukam tego, co robięspan&nbsp;za1&nbsp;klasa:

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

potem dostaję jego rodzica i robię innyquery()&nbsp;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>&nbsp;może być lepiej użyć:

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

dostać<a>&nbsp;zamiast jego pojemnika.