public static function xpath($css)
{
$xpath = $css;
$stack = [];
$index = 0;
foreach (self::MAP as $o) {
// The regexes have a common wrapper.
list($search, $replace, $id, $repeat) = $o;
$search = "/{$search}/xi";
do {
$prev_xpath = $xpath;
self::tokenize($search, $replace, $id, $xpath, $stack, $index);
} while ($repeat && $xpath !== $prev_xpath);
}
self::translateStack($stack, $xpath);
$xpath = \trim($xpath);
$xpath = ".//{$xpath}";
$xpath = \str_replace('|', '|.//', $xpath);
$xpath = \str_replace('.///', '/', $xpath);
return $xpath;
}