private function collect_styles_recursive($node)
{
if ($node->nodeType !== XML_ELEMENT_NODE) {
return;
}
if ($node->hasAttributes() && $node instanceof DOMElement) {
$style = $node->getAttribute('style');
$class = $node->getAttribute('class');
if ($style) {
$style = $this->process_style($style);
if (!empty($style)) {
$class_name = $this->generate_class_name($style);
$new_class = trim($class . ' ' . $class_name);
$node->setAttribute('class', $new_class);
$this->styles['.' . $class_name] = $style;
}
$node->removeAttribute('style');
}
}
$length = $node->childNodes->length;
for ($i = $length - 1; $i >= 0; $i--) {
$child_node = $node->childNodes->item($i);
$this->collect_styles_recursive($child_node);
}
}