public function append($value)
{
if ($value instanceof \DOMAttr) {
$this->setAttributeNode($value->ownerDocument === $this->ownerDocument ? $value : $this->ownerDocument->importNode($value));
} elseif ($value instanceof Appendable) {
$namespaces = $this->ownerDocument->namespaces();
$value->appendTo($this);
$this->ownerDocument->namespaces($namespaces);
} elseif ($value instanceof \Closure && !$value instanceof \DOMNode) {
$this->append($value());
} elseif (is_array($value)) {
$nodes = [];
foreach ($value as $name => $data) {
if (QualifiedName::validate($name)) {
$this->setAttribute($name, (string) $data);
} else {
$nodes[] = $data;
}
}
$this->appendToParentNode($nodes);
} else {
$this->appendToParentNode($value);
}
return $this;
}