From: sgunderson@bigfoot.com <> Date: Sat, 12 Aug 2006 22:08:36 +0000 (+0200) Subject: Yet more clone fixes for PHP. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=c0cb2d80b94058ec147f7a5a186f0a83e4a9f30e;p=xml-template Yet more clone fixes for PHP. --- diff --git a/php/xml-template.php b/php/xml-template.php index 4f22d6e..51f86a5 100644 --- a/php/xml-template.php +++ b/php/xml-template.php @@ -148,17 +148,19 @@ function own_clone_node($node, $doc) { // we only need these two if ($node->node_type() == XML_ELEMENT_NODE) { - $newnode = $doc->create_element_ns($node->namespace_uri(), $node->node_name(), $node->prefix()); + $nsuri = $node->namespace_uri(); + if (isset($nsuri)) { + $newnode = $doc->create_element_ns($node->namespace_uri(), $node->node_name(), $node->prefix()); + } else { + $newnode = $doc->create_element($node->node_name()); + } + $attrs = $node->attributes(); if (isset($attrs)) { foreach ($node->attributes() as $attr) { - // set_attribute_node() does not exist... - $prefix = $attr->prefix(); - if (isset($prefix)) { - $newnode->set_attribute($prefix . ":" . $attr->name(), $attr->value()); - } else { - $newnode->set_attribute($attr->name(), $attr->value()); - } + $attr2 = $doc->create_attribute($attr->name(), $attr->value()); + $attr2->set_namespace($attr->namespace_uri(), $attr->prefix()); + $newnode->append_child($attr2); } } foreach ($node->child_nodes() as $child) {