This might just be a problem with the php syntax, but why does this work:
$b = new DOMXPath($z);
$b = $x->query('//div[contains(@class,"xxx")]');
but using double quotes with single inside does not:
$b = $x->query("//div[contains(@class,'xxx')]//a");