Бывает, как в данном случае, что выполняемый код имеет одновременно несколько контекстов, в которых ищется поле с заданным именем. Указывай контекст, и всё будет хорошо.
Код AS3:
var id:String = "6";
var xml:XML = <a>
<b id="7"/>
<b id="6">
4
</b>
<b id="3">
тест
<id>3</id>
</b>
</a>;
trace((xml.b.(@id == this.id)).toXMLString());