Есть ли лучший способ получить родительский узел результата запроса XPath?

Имея разметку вот так:

<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>

Я заинтересован в получении всего<a> а такжеsome text ТОЛЬКО если рядомspan имеет классa1, Таким образом, в конце всего кода мой результат должен быть<a> с первогоdiv а такжеsome text с третьего. Было бы легко, если<a> а такжеsome text были внутриspan или жеdiv будет иметьclass атрибут, но не удача.

То, что я делаю сейчас, это искатьspan с участиемa1 класс:

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

тогда я получаю своего родителя и делаю другоеquery() с этим родителем в качестве узла контекста. Это выглядит просто неэффективно, поэтому ясно, что есть ли лучший способ достичь моей цели?

ОТВЕТ НА ДОБАВЛЕНИЕ

Согласно @MarcBпринятый ответправильный запрос:

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

но для<a> может быть лучше использовать:

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

получить<a> вместо его контейнера.

Ответы на вопрос(2)

Ваш ответ на вопрос