protected function getNodeXpath($oneNode = null, $namespace = null)
{
$return = array();
$loop = $oneNode ? array($oneNode) : $this->elements;
// if ($namespace)
// $namespace .= ':';
foreach ($loop as $node) {
if ($node instanceof DOMDOCUMENT) {
$return[] = '';
continue;
}
$xpath = array();
while (!$node instanceof DOMDOCUMENT) {
$i = 1;
$sibling = $node;
while ($sibling->previousSibling) {
$sibling = $sibling->previousSibling;
$isElement = $sibling instanceof DOMELEMENT;
if ($isElement && $sibling->tagName == $node->tagName) {
$i++;
}
}
$xpath[] = $this->isXML() ? "*[local-name()='{$node->tagName}'][{$i}]" : "{$node->tagName}[{$i}]";
$node = $node->parentNode;
}
$xpath = implode('/', array_reverse($xpath));
$return[] = '/' . $xpath;
}
return $oneNode ? $return[0] : $return;
}