Lo que sucede es que tienes que especificar algún atributo para que lo haga único. Por ejemplo
Código PHP:
Ver original<?php
$string = <<<XML
<foo>
<a id="1">
<b>
<c>foo</c>
</b>
</a>
<a id="2">
<b>
<c>bar</c>
</b>
</a>
</foo>
XML;
$xml = new SimpleXMLElement($string);
$id = 1;
$result = $xml->xpath('//a[@id="' . $id . '"]/b/c');
De esa forma puedes obtener el que quieras específicamente.
Edito:
También puedes usar condiciones. Por ejemplo, voy a tomar aquella etiqueta de <c> que tenga como valor foo y retonar el pariente <a> con toda su estructura
Código PHP:
Ver original<?php
$string = <<<XML
<foo>
<a id="1">
<b>
<c>foo</c>
</b>
<d>
<e>candy</e>
</d>
</a>
<a id="2">
<b>
<c>bar</c>
</b>
</a>
</foo>
XML;
$xml = new SimpleXMLElement($string);
$result = $xml->xpath('//c[.="foo"]/ancestor::a');