public function toXPath()
{
preg_match_all('/[:\\.\\w#]+|>|\\+|,/sim', $this->selector, $parts);
$xpath = '';
$rooting = '//';
// This is XPath for "any descndant of"
$stack = array();
foreach ($parts[0] as $part) {
switch ($part) {
case '>':
// Direct descendant of
$rooting = '/';
break;
case '+':
// Sibling of, not sure how to handle that yet
break;
case ',':
// OR...
$stack[] = '|';
$rooting = '//';
break;
default:
$xpath_part = $this->get_part_xpath($part, $stack);
$stack[] = $rooting;
$stack[] = $xpath_part;
$rooting = '//';
break;
}
}
$xpath = implode('', $stack);
return $xpath;
}