protected function deepestNode(\DOMNode $ele, $depth = 0, $current = null, &$deepest = null)
{
// FIXME: Should this use SplObjectStorage?
if (!isset($current)) {
$current = array($ele);
}
if (!isset($deepest)) {
$deepest = $depth;
}
if ($ele->hasChildNodes()) {
foreach ($ele->childNodes as $child) {
if ($child->nodeType === XML_ELEMENT_NODE) {
$current = $this->deepestNode($child, $depth + 1, $current, $deepest);
}
}
} elseif ($depth > $deepest) {
$current = array($ele);
$deepest = $depth;
} elseif ($depth === $deepest) {
$current[] = $ele;
}
return $current;
}