/**
  * Returns an ezcsseStyle object for given XML string
  * 
  * @param string $source
  * @return ezcsseStyle
  */
 static function createFromXML($source)
 {
     $newObj = new ezcsseStyle();
     if ($source) {
         $dom = new DOMDOcument();
         $success = $dom->loadXML($source);
         $root = $dom->documentElement;
         if ($root->hasAttributes()) {
             foreach ($root->attributes as $attr) {
                 $newObj->setAttribute($attr->name, $attr->value);
             }
         }
         foreach ($root->childNodes as $node) {
             if ($node->nodeType == XML_ELEMENT_NODE && $node->nodeName == 'rule') {
                 $newObj->addRule(ezcsseRule::createFromXML($node));
             } elseif ($node->nodeType == XML_ELEMENT_NODE) {
                 $newObj->setAttribute($node->nodeName, $node->nodeValue);
             }
         }
     }
     return $newObj;
 }